I prefer Forgejo, but both it and Gitea support actions like GitHub's. You can have a nice CI/CD pipeline that runs 100% in-house, for free. I adore it for personal projects.
We've run Gitea actions (and contributed here and there) for a couple of years, since-by-side with Github. We host in containers on the Gitea side so there are some marginal differences as to what can be run in a job, but our experience has been very positive.
If you want to run a process after each push to a branch or merge into main or whatever, you describe it in a YAML file in that repo. Configure some workers to run those actions and off you go! I use it for things like running tests and applying Terraform changes.
I understand that part. Mostly interested where the runners are coming from? macOS especially is pretty costly to provide runners for, so who is doing that for free?