GitHub Actions is indeed the hard one to replace. I need Windows, Linux, Linux-ARM, macOS ARM, and macOS Intel runners. How do you guys using Forgejo and/or Codeberg do to get a similar matrix, hopefully at a low cost?
Can you push from Forgejo to GitHub for actions until you can find a replacement?
CircleCI?
Use gitea which has github actions compatibility.
How much utilization do you have? For low scale, it's hard to beat GitHub Actions as they offer free runners for public repos and include a bunch of free hours for private repos.
Once you start paying for it, GitHub Actions runners are very expensive. I've used both Jenkins and GitLab before to self-host CI/CD, and you save so much using on-demand (or at higher scale, reserved) cloud instances. I do freelance DevOps work and I've helped clients with these sorts of challenges.