Compares GitHub Actions with Gitea Actions, the built-in CI of a self-hosted Gitea forge that is designed to be compatible with GitHub Actions workflows: what carries over, the documented gaps such as unsupported permission scopes and ignored problem matchers, runner setup, and what moving Git hosting off GitHub involves.
Compares GitHub Actions with Forgejo Actions, which Forgejo designs to be familiar to GitHub Actions users but not compatible: the documented differences, the GPL-3.0-or-later license and non-profit governance, the Forgejo Runner, and when Forgejo fits better than Gitea.
Compares GitHub Actions with Woodpecker CI, an Apache-2.0 container-step CI engine that can keep using GitHub as the forge: moving builds in-house without moving code, YAML and plugin differences, Docker or Kubernetes agents, and what a small team must operate.
Compares GitHub Actions with Jenkins: event-driven workflow YAML and marketplace actions against Jenkinsfile pipelines and more than 2,300 plugins, metered hosted minutes against a controller and agents you run, Kubernetes agents, and the plugin and LTS upgrade work Jenkins adds.
Compares GitHub Actions with GitLab CI/CD on a self-managed GitLab instance, where the forge and CI move together: .gitlab-ci.yml against workflow YAML, GitLab Runner executors, which CI features sit in Free versus Premium, and GitLab's installation and upgrade obligations.
Moving repositories and workflows from GitHub to a self-hosted Gitea: the built-in GitHub migration form, placing workflows in .gitea/workflows, how actions without a host are fetched from github.com or the local instance, the documented incompatibilities to fix, re-creating secrets and registering Gitea Runner.
Moving GitHub repositories and workflows to Forgejo: the fallback to .github/workflows when .forgejo/workflows is absent, the documented differences that need small edits, the dump-repo and restore-repo commands for issues, pull requests and releases, DEFAULT_ACTIONS_URL, and securing Forgejo Runner.
Cost of ownership by component: GitHub-hosted minutes after the 2026 price cut, self-hosted runners that are free today but were once announced for a per-minute charge, storage and Copilot review minutes, against the servers, upgrades, support and staff time of running Woodpecker CI, Jenkins or a full Gitea forge.
What can leave GitHub Actions and how: workflow YAML already in the repository, run logs and artifacts through the REST API and GitHub CLI before retention expires, secrets that the API never returns, and the rate limits that shape a bulk export of run history.
Why GitHub's answer for isolated networks is GitHub Enterprise Server with self-hosted runners, external blob storage and actions copied in with actions-sync, and how Gitea, Forgejo, Woodpecker CI or Jenkins compare when builds must run with no internet access.
Keeping code on GitHub while moving builds to self-hosted Woodpecker CI: connecting Woodpecker to GitHub as a forge, translating workflow jobs into container-based steps, replacing marketplace actions with Woodpecker plugins and re-creating secrets that GitHub never exports.
For teams that deploy to Kubernetes from GitHub Actions jobs with environments and approvals: moving the deploy half to a GitOps controller such as Argo CD or Flux, what stays in CI, and how promotion, approvals and rollback change.
GitHub offers EU data residency only on Enterprise Cloud through GHE.com. This page compares that option with running Gitea Actions, Forgejo Actions or Woodpecker CI in your own EU datacenter, covering where logs, artifacts and caches are stored.