OpsRunway Talk to an engineer

GitHub alternatives for startups in 2026: GitLab, Bitbucket, Azure DevOps, Jenkins and other CI/CD tools

When a startup looks at GitHub alternatives, the real choice is the platform, not the CI engine: most teams pick a Git host and get its CI with it. GitHub brings Actions, GitLab brings GitLab CI, Bitbucket brings Pipelines. Below: a short answer for a 2 to 15 engineer team deploying to AWS, one table with prices, minutes, OIDC, SOC 2 and data residency for every option, a section on each alternative, and an illustrative monthly bill for an 8-engineer team on all of them.

Prices, plans and product status checked: 2 Nov 2026, on each vendor's own pricing pages, docs and changelogs. AWS prices are us-east-1 On-Demand.

01Short answer

What is the best source control and CI/CD setup for a startup on AWS?

For most teams of 2 to 15 engineers: GitHub on the Team plan, with GitHub Actions on GitHub's hosted runners, deploying to AWS through OIDC roles instead of stored keys. It is the cheapest seat in the table that gives private repositories required reviewers and branch rules, the free CI allowance covers a small team, and nearly every tool you will add later has an Actions integration.

If this is youOur pick
Default: small team, AWS, no unusual constraintsGitHub Team + GitHub Actions on hosted runners
You want one tool for repos, CI, registry and security scanning, or you must self-hostGitLab (Premium on GitLab.com, or self-managed on AWS). See GitHub vs GitLab.
The company already lives in Jira and ConfluenceBitbucket Cloud Premium is reasonable; GitHub with the Jira integration is also fine
You already run Azure DevOps and it worksStay, and add OIDC to AWS. Move only for a reason you can name.
You run Jenkins todayPlan to retire it onto your Git host's CI, unless you have a build only Jenkins can do
Code must stay in the UK or EU, on a cloud planAzure DevOps (UK and EU geographies) or GitLab Dedicated (London, Frankfurt, Ireland and others)
CI minutes are past roughly 100,000 a month on 2-core runnersKeep the Git host, move heavy jobs to self-hosted runners on AWS. See GitHub Actions pricing.

The reasons are less about features than about time. Every option below can build a container and push it to ECR. What differs is what it costs per seat, how much of it you have to run yourself, and how easily it gives your auditor branch protection, review history and short-lived AWS credentials.

GitHub vs GitLab vs Bitbucket vs Azure DevOps vs Jenkins: how do they compare?

On paid seats, Bitbucket ($3.65) and GitHub ($4) are the cheapest Git hosts and GitLab Premium ($29) the most expensive. Every hosted option can deploy to AWS without stored keys and has a vendor SOC 2 report; only Azure DevOps and GitLab Dedicated keep data in the UK on a hosted plan.

Prices are list prices in USD per user per month, checked on 2 November 2026. "CI minutes" are the hosted minutes included each month on the plan named. SOC 2 means the vendor offers its own SOC 2 report for the service; for self-hosted tools, your own controls are what the auditor tests.

PlatformRepos / CIHostingFree tierPaid seatHosted CI minutes includedSelf-hosted runnersOIDC to AWSSOC 2 reportUK / EU residency
GitHubRepos + ActionsCloud; Enterprise Server; Enterprise Cloud with data residencyUnlimited users; branch rules and required reviewers on public repos only$4 Team, $21 Enterprise2,000 Free, 3,000 Team, 50,000 Enterprise (Linux, now a dollar pool)Free, no GitHub feeYes, built inYes: SOC 1 and SOC 2 Type 2, ISO 27001EU, Australia, US, Japan on Enterprise Cloud; no UK region listed
GitLabRepos + GitLab CIGitLab.com; self-managed (CE or EE); Dedicated (single tenant on AWS)5 users per private group on GitLab.com; no user cap self-managed$29 Premium (annual); Ultimate by quote400 Free, 10,000 Premium, 50,000 UltimateYes; GitLab suggests your own runners to save minutesYes, id_tokensYes: GitLab.com and DedicatedDedicated: 28 AWS regions listed, incl. London and Frankfurt; or self-managed
BitbucketRepos + PipelinesCloud; Data Center5 users, 50 minutes$3.65 Standard, $8 Premium2,500 Standard, 3,500 Premium; then $10 per 1,000Up to 100 basic runners free; not counted as minutesYes, oidc: trueYes: Bitbucket Cloud, under NDANone on Cloud yet; EU planned by end of 2026
Azure DevOpsAzure Repos + Azure PipelinesServices (cloud); Server5 Basic users; 1 hosted job, 1,800 min$6 Basic1,800 on the free job; paid jobs $40 each, no minute cap1 free job; $15 per extra jobYes, AWS Toolkit 1.15.0+Yes: standalone SOC 2 Type 2Choose UK or EU geography at setup
JenkinsCI only, any Git hostSelf-hosted onlySoftware is free$0None: you supply machinesEverything is self-hostedThrough the OpenID Connect Provider plugin; most setups use instance rolesNo vendor reportWherever you run it
AWS CodeBuild / CodePipeline (+ CodeCommit)CI and orchestration; CodeCommit reposAWS-managed, in your account100 build minutes; CodeCommit 5 usersCodeCommit $1 per extra user100 a month on smalln/a: runs in your accountNative IAM roleYes: in AWS SOC scopeAny region you deploy in
CircleCICI only, any Git hostCloud; Server5 users, 30,000 credits$15 per user over 530,000 credits (3,000 Linux medium minutes)Yes: 5 concurrent free, 20 PerformanceYes, CIRCLE_OIDC_TOKENYes: SOC 2 Type IINot verified
BuildkiteCI only, any Git hostCloud control plane, your agents or theirs5 users, 10 concurrent self-hosted jobs$30 Pro4,000 Linux vCPU minutes on Pro (2,000 minutes on a 2 vCPU agent)The main model: 10 agents included, then $3.50 eachYes, buildkite-agent oidcYes: SOC 2 Type 2 (2024 post)Not verified
Gitea / ForgejoRepos + Actions-style CISelf-hosted (Codeberg runs Forgejo)Open source$0None: you supply runnersEverything is self-hostedNot verifiedNo vendor reportWherever you run it

Three rows deserve a footnote. GitHub's free allowance is now a dollar amount ($12, $18 and $300 a month); the minute counts above are what that buys on a standard Linux runner, and our GitHub Actions pricing guide has the per-minute rates. CircleCI's figure assumes Linux medium at 10 credits a minute, the example on its pricing page. Buildkite counts vCPU minutes, so its allowance halves on a 2 vCPU machine. Bitbucket's minutes are for 1x steps; Atlassian's pricing page says a 5-minute step on a 2x runner counts as 10 build minutes.

Compare tiers, not only seat prices. GitHub's Free plan keeps rules and required reviewers to public repositories, GitLab needs Premium for merge request approval rules, and Bitbucket keeps enforced merge checks for Premium. If you are heading for SOC 2, compare the tier that enforces reviews, not the cheapest one.

Why did searches for "GitHub alternatives" jump in 2026?

No source we found measures why people searched, but the rise came in the same months as a run of public departures from GitHub over its reliability, reported by reputable outlets. Searches for "github alternatives" rose sharply from March to July 2026 in our Google Trends pull, and are now about a tenth of that peak.

  • 28 April 2026: Mitchell Hashimoto, a HashiCorp co-founder and GitHub user since 2008, announced that his Ghostty project was leaving GitHub. He wrote that it was "no longer a place for serious work if it just blocks you out for hours per day, every day", after a GitHub Actions outage stopped his pull request reviews for about two hours that day. A read-only mirror stays on GitHub.
  • 14 May 2026: GitHub's own availability report for April lists 10 incidents that degraded its services that month.
  • 29 July 2026: InfoWorld's segment on who is leaving GitHub names Zig, which moved to Codeberg, and Ghostty, and puts the complaints down to reliability, especially Actions, rather than ideology. It also says the departures are not statistically significant across GitHub as a whole.

For a startup the useful reading is narrow. Public open source projects moving to Codeberg is not a reason for a private SaaS codebase to move. A CI platform that blocks merges for hours is a reason to keep your deploy path able to run without it: tagged images in ECR, a documented manual deploy, and infrastructure in Terraform rather than in workflow files. The deploy and rollback items on our production readiness checklist cover the rest.

Is GitLab the best GitHub alternative?

For teams that want one product for the whole delivery toolchain, or that must run it in their own AWS account, yes. For most small teams on AWS it costs more than it saves.

GitHub Team is $4 a seat with 3,000 Linux minutes; GitLab Premium is $29 a seat with 10,000 compute minutes. GitLab puts more of the delivery toolchain into one product and can be run in your own AWS account or as a single-tenant Dedicated instance. GitHub has the larger ecosystem of Actions and integrations. For an 8-engineer team the seat difference alone is $200 a month.

Both have startup programs, with different shapes. GitLab gives pre-seed and seed companies with up to $5M raised a free Ultimate licence for a year for up to 20 seats, then 50% off; Series A and B companies get discounts. GitHub gives $10,000 of credits towards Enterprise Cloud for up to 12 months, to startups up to Series B that come through a GitHub for Startups partner and are new to Enterprise. Read the terms: GitHub's credits don't apply to Enterprise Server or data residency and expire after 12 months, and GitLab's seed offer drops to 50% off in year two.

Prices, CI syntax, self-managed GitLab on AWS and which suits which team are in our GitHub vs GitLab guide.

Bitbucket vs GitHub: which is better and cheaper for a small team?

GitHub, for most teams. Bitbucket is cheaper per seat ($3.65 on Standard against $4), but its hosted minutes cost more once you pass the allowance. It makes sense when the company already runs on Jira and Confluence and wants one vendor, or when you plan to run builds on your own runners anyway.

Bitbucket CloudGitHub Team
Seat price$3.65 Standard, $8 Premium$4
Hosted CI minutes2,500 Standard, 3,500 Premium, then $10 per 1,000$18 of compute, 3,000 Linux minutes, then $0.006 a minute
Enforced review rulesEnforced merge checks on PremiumRequired reviewers and rulesets on Team
Self-hosted runnersUp to 100 basic runners free per workspace; their builds don't count as minutesFree, no GitHub fee
OIDC to AWSYes, per stepYes, per job
Data residencyUS today; EU (Frankfurt) planned by end of 2026Enterprise Cloud only, no UK region

Pros for a small team. The cheapest paid seat in the table. Jira links work without setup. Self-hosted runners are free: Atlassian's March 2026 runner announcement keeps up to 100 basic runners per workspace free, with only its new Premium runners billed, and its licensing FAQ says builds on self-hosted runners don't count towards build minutes.

Cons. Hosted minutes run out fast: at $10 per 1,000 extra minutes, Bitbucket's overage is about $0.010 a minute against GitHub's $0.006 on a 2-core runner. Bigger steps cost more: a 5-minute step on a 2x runner counts as 10 build minutes. Enforced merge checks, IP allowlisting and required two-step verification need Premium at $8. There is no data residency on Bitbucket Cloud yet. Atlassian's engineering blog of 5 March 2026 says EU residency in Frankfurt (eu-central-1) should arrive by the end of 2026; until it ships, plan as if it hasn't.

Bitbucket Data Center. Most Atlassian Data Center products reach end of life on 28 March 2029. Bitbucket and Bamboo Data Center are the exceptions: Atlassian says they "will not end of life", and existing customers get a Hybrid licence covering Data Center and Cloud. Atlassian's page also says new customers could no longer buy new Data Center subscriptions after 30 March 2026, and doesn't say whether that applies to Bitbucket. If you were planning a new Data Center install, ask Atlassian first.

SOC 2. Atlassian's SOC 2 page lists Bitbucket Cloud among the covered products; you accept an NDA to download the report.

Pick Bitbucket when the company is already on Jira and Confluence, you are happy on Premium, and either your CI is light or you will run self-hosted runners on AWS. Moving off it later is straightforward; see moving to GitHub.

Azure DevOps vs GitHub: which should a startup use?

If you are starting fresh, GitHub. If you already run Azure DevOps and it works, there is no urgent reason to move: Microsoft's roadmap still lists Pipelines, Repos and security work for 2026 and 2027. Azure DevOps has one real advantage for UK companies: you can pick a UK geography for your organisation's data.

How it's priced. The first 5 Basic users are free, then $6 a user. CI is priced by concurrency, not minutes. Once you link an Azure subscription for billing, private projects get one Microsoft-hosted job that runs up to 60 minutes at a time, with 1,800 minutes a month. Each paid Microsoft-hosted parallel job costs $40 a month with no minute limit and a 360-minute job limit. Self-hosted: one job free, then $15 per parallel job. Microsoft's rule of thumb is one parallel job per four or five users; a busy team will need more, because the jobs queue.

Pros. Low seat price. Branch policies can require reviewers, successful builds and status checks before a merge. Data can live in the UK or EU, and Azure DevOps has its own SOC 2 Type 2 report on Microsoft's Service Trust Portal. Boards and Test Plans are stronger than GitHub's equivalents if you use them. It reaches AWS without stored keys: the AWS Toolkit for Azure DevOps supports OIDC from version 1.15.0.

Cons. Fewer people outside large companies know it, so hiring and onboarding take longer, and most third-party tools document GitHub first. The residency has exceptions in Microsoft's own docs: personal access tokens and SSH keys are stored in a US datacenter, and builds on Microsoft-hosted macOS agents run in a GitHub datacenter in the US. Microsoft's roadmap still lists "Auditing GA" as a future item. Public projects are retired and convert to private in 2027.

Pick Azure DevOps when you are already on it, or you are a UK company that needs code held in the UK on a hosted plan and doesn't want to run anything. Otherwise GitHub, and moving from Azure DevOps to GitHub covers the switch.

Jenkins vs GitHub Actions: is Jenkins still relevant in 2026?

For a startup, rarely. Jenkins is free software, but you pay for a controller that is always on, for agents, and for the person who patches it. The usual Jenkins alternatives, GitHub Actions or your Git host's own CI, do the same work for a small team with nothing to run.

Jenkins on AWSGitHub Actions
What you runA controller, its plugins, agents, backups, TLS, upgradesNothing, on hosted runners
Cash cost, small teamA controller on m7i.large is $73.58 a month On-Demand before agents and diskSeats plus minutes past the allowance
Security upkeep10 Jenkins security advisories in 2026 to date, 7 of them affecting pluginsGitHub patches the platform; you pin and review third-party actions
AWS credentialsUsually the agent's instance role, shared by every job on that agentOIDC role per job, scoped by repository and branch
Audit trailWhat you configure and keepAudit log on every plan; API on Enterprise

Where Jenkins still wins. Builds that must run on hardware or networks no SaaS reaches, very long or unusual pipelines with years of shared libraries behind them, and teams that already have someone whose job includes Jenkins. If that's you, keep it, and put it in its own AWS account with agents that are destroyed after each build.

The credentials problem. On AWS, Jenkins agents normally get permissions from their EC2 instance role, so every job on that agent can do whatever the role allows. An OpenID Connect Provider plugin can issue per-build tokens that AWS accepts, but it is one more plugin to install, configure and patch. GitHub's OIDC model gives each job a token that AWS checks against a trust policy; GitHub's docs recommend conditioning on token.actions.githubusercontent.com:sub so only named repositories and branches can assume the deploy role. That difference is the one auditors and security reviews ask about.

Pick Jenkins when you can name the build only Jenkins can do. Otherwise move the jobs onto your Git host's CI; the steps are in moving to GitHub.

CircleCI vs GitHub Actions: when is a separate CI service worth paying for?

For a team under 15, rarely: neither CircleCI nor Buildkite usually beats the CI that came with the Git host. They are the two GitHub Actions alternatives most teams look at when they keep their code on GitHub, and both are CI-only services, so you pay for them on top of GitHub or Bitbucket seats. CircleCI suits teams that want fast hosted builds and its caching and test-splitting features. Buildkite suits teams that want to run every build on their own machines with a hosted dashboard.

CircleCIBuildkite
Free planUp to 5 active users, 30,000 credits a monthUp to 5 users, 10 concurrent self-hosted jobs, 2,000 Linux vCPU minutes (small agents only, so 1,000 minutes)
Paid planPerformance from $15 a month for 5 users, $15 per extra userPro, $30 per active user a month, up to 50 users
Hosted computeCredits: $15 per 25,000; Linux medium uses 10 a minute, so about $0.006 a minute$0.004 per vCPU minute on Linux: $0.008 a minute for 2 vCPU, metered per second, no rounding; 4,000 vCPU minutes included on Pro
Self-hostedRunners: 5 concurrent tasks on Free, 20 on Performance10 agents included on Pro, then $3.50 per agent a month
Watch out forDocker layer caching uses 200 credits per jobSeat price is the highest in this guide

CircleCI vs GitHub Actions. On a 2-core Linux machine the per-minute cost is close: about $0.006 on both. The difference is the seat charge on top of GitHub's, and a second system for engineers to learn and for auditors to review. Choose CircleCI if a feature it has saves you real time; otherwise Actions avoids a vendor. Both issue OIDC tokens for AWS, and CircleCI's Trust Center offers its SOC 2 Type II report.

Buildkite. The model is the reverse of hosted CI: Buildkite runs the control plane, you run agents in your own AWS account, often on Spot instances. That keeps code and secrets inside your network and suits large monorepos and heavy test suites. At $30 a user it is the most expensive seat here, so it pays only when build volume is large. Agents can request OIDC tokens to assume AWS roles. Buildkite says it maintained its SOC 2 Type 2 report in 2024; ask for the current one.

AWS CodeBuild, CodePipeline and CodeCommit: are they a GitHub alternative?

CodeBuild and CodePipeline are good CI building blocks inside AWS; CodeCommit is a plain Git host. Together they can replace GitHub for a team that wants everything in one AWS account, but most small teams find the pull request and review experience thin and keep GitHub for code.

CodeCommit is open to new customers again. AWS stopped onboarding new CodeCommit customers in 2024, and on 24 November 2025 announced it had returned to general availability: "New customer sign-ups are open as of today." The user guide's history records the change on 25 November 2025. The same post promised Git LFS for Q1 2026 and new regions from Q3 2026; the document history, checked today, lists no entry after November 2025, so we couldn't confirm either shipped. AWS's CodeCommit pricing page still carried the old "no longer available to new customers" line when we checked, which is out of date.

Prices. CodeCommit's free tier doesn't expire, and AWS's own example bills an account with 6 active users $1 a month, so the first 5 are free. CodeBuild includes 100 build minutes a month on small instances, and AWS's example prices general1.small at $0.005 a minute. All three services are in scope for AWS's SOC reports, and they run in whichever region you choose, which settles residency.

Where they fit for a startup. CodeBuild works well as a self-hosted runner for GitHub Actions jobs that need to reach private resources in your VPC, such as database migrations. Our GitHub Actions pricing guide compares CodeBuild and CodePipeline with Actions minute for minute; the short version is that CodeBuild is not cheaper per minute at small sizes, and you choose it for IAM and VPC access.

Pick the AWS tools when an auditor or customer wants source, build and deploy history inside your own AWS account, or a CI job needs private network access. Pick CodeCommit as your main Git host only if you can live without the review tooling the others have.

What are the best self-hosted, open source GitHub alternatives?

GitLab CE if you want the full GitLab product, Gitea or Forgejo if you want something light; all three run in your own AWS account. Self-hosting gets you code in your own AWS account and region, and no seat fees on the open source editions. It costs you a server to patch, back up and upgrade. For a team without an ops person, that's usually the wrong trade unless a customer or regulator requires it.

OptionWhat it isSizing on AWSInstance, us-east-1, per monthGood for
GitLab self-managed (CE or EE)The full GitLab, in your account. CE is the open source edition, EE the one paid tiers run on. GitLab documents converting CE to EE, and back.GitLab's baseline for a single node: 8 vCPU, 16 GBc7i.2xlarge: $260.61Teams that need GitLab and data in a region or network they control
GitLab DedicatedSingle-tenant GitLab run by GitLab on AWS, with the Ultimate feature set, in a region you choose (28 listed, including London, Frankfurt and Ireland)GitLab runs itPrice by quoteResidency without running anything, at enterprise prices
GiteaA lightweight Git host with Gitea ActionsA small instance (our assumption: t4g.medium, 2 vCPU, 4 GiB)t4g.medium: $24.53Internal mirrors, side projects, very small teams who like running things
ForgejoA hard fork of Gitea since early 2024; Codeberg runs on it. Forgejo Actions reads .github/workflows if there is no .forgejo/workflows.As Giteat4g.medium: $24.53The same, with a non-profit governance model

Instance prices are On-Demand list, us-east-1, times 730 hours, checked 2 November 2026; they exclude disk, backups, load balancer and runners. Runners cost the same as for any self-hosted CI: about $72 a month for the example team's workload on ephemeral m7i.large instances (section 12).

Two cautions. Forgejo's docs say Forgejo Actions is "not designed to be compatible" with GitHub Actions and that "some minimal tweaking will most likely be necessary", so budget time for every workflow. And with any self-hosted Git server, the SOC 2 evidence is yours to produce: who has admin, how backups are tested, when it was patched.

Self-hosted GitLab cost and upkeep on AWS, including runners and backups, is covered in more depth in GitHub vs GitLab.

What should a CI/CD platform give you for AWS and a SOC 2 audit?

Short-lived AWS credentials through OIDC, isolated runners, enforced reviews with an exportable audit log, and the vendor's own SOC 2 report. Whatever you choose, check five things before you sign up. They decide how much of your SOC 2 evidence the platform produces for you, and how bad a leaked token would be.

  1. OIDC to AWS, no long-lived keys. GitHub, GitLab, Bitbucket, CircleCI and Buildkite issue a short-lived token per job that AWS exchanges for a role through AssumeRoleWithWebIdentity; Azure DevOps does it through the AWS Toolkit. In GitHub's words, the cloud provider "issues a short-lived access token that is only valid for a single job." Restrict each role's trust policy to the repository and branch that deploys, and keep production roles separate from staging. If an AWS access key is stored in your CI settings today, that is the first thing to remove.
  2. Secrets stay out of the CI tool where possible. Keep application secrets in AWS Secrets Manager or Parameter Store and let the running service read them; let CI hold only what it needs to deploy. Our DevSecOps for startups page covers the pipeline side.
  3. Runner isolation. Hosted runners are fresh per job. Self-hosted runners should be too: one job per machine, then destroy it, in a separate AWS account or VPC from production, with almost no permissions of their own. Never attach self-hosted runners to public repositories.
  4. Review evidence. Auditors ask who can push to main and whether every change was reviewed. That needs required reviews on the default branch, which means GitHub Team, GitLab Premium, Bitbucket Premium or Azure DevOps branch policies, plus an audit log you can export. Then test it: try to push to main without a review.
  5. The vendor's own report. GitHub (SOC 1 and SOC 2 Type 2, ISO 27001, from enterprise settings), GitLab (GitLab.com and Dedicated), Atlassian (Bitbucket Cloud), Microsoft (a standalone Azure DevOps report), CircleCI, Buildkite and AWS all offer one. Your auditor will ask for it as a subservice organisation. See SOC 2 on AWS.

UK and EU data residency changes the choice only when a contract or regulator requires source code to stay in a region. If it does: Azure DevOps offers UK and EU geographies on its standard plans; GitLab Dedicated runs in London, Frankfurt, Ireland and other AWS regions; GitHub offers EU (including Norway and Switzerland) on Enterprise Cloud with data residency, with no UK region listed; Bitbucket Cloud has none yet. Self-hosting in eu-west-2 or eu-central-1 is the other route.

12Worked example

Illustrative. The invented 8-engineer team from our GitHub Actions pricing guide: 37,074 billed minutes and 5,826 jobs a month on 2-core Linux machines. Usage is made up; rates are each vendor's list prices on 2 Nov 2026.

EC2: m7i.large $0.1008, c7i.2xlarge $0.357, t4g.medium $0.0336 an hour, us-east-1 On-Demand.

Sources: GitLab cost factors, Buildkite pricing, Azure parallel jobs, GitHub for Startups.

What does source control and CI cost an 8-engineer team on each platform?

Between about $97 and $749 a month in cash for the same workload, before anyone's time. GitHub Team with hosted runners comes to about $236. The self-hosted rows look cheap until you add the hours someone spends keeping them running.

Same work on every platform: eight engineers, the same pull request checks and deploys, the same minutes. The per-minute maths for GitHub is in the Actions pricing guide; here we only reuse its totals. Where a CI-only tool needs a Git host, we add GitHub Team seats ($32).

Platform and planSeatsCI compute$ / month
GitHub Team, hosted runners8 × $4 = $3237,074 × $0.006 = $222.44, less $18 included = $204.44236.44
GitHub Team, CodeBuild as the runner$3242,900 machine minutes (1 minute start-up per job assumed), less 100 free, × $0.005 = $214.00246.00
GitLab Premium, GitLab.com8 × $29 = $232Small runner, cost factor 1: 37,074 less 10,000 included = 27,074, so 28 packs of 1,000 × $10 = $280512.00
Bitbucket Standard, 1x steps8 × $3.65 = $29.2037,074 less 2,500 = 34,574, so 35 × $10 = $350379.20
Bitbucket Standard, 2x steps (counted double)$29.2074,148 counted minutes less 2,500 = 71,648, so 72 × $10 = $720749.20
Bitbucket Premium, 1x steps8 × $8 = $6437,074 less 3,500 = 33,574, so 34 × $10 = $340404.00
Bitbucket Standard, self-hosted runners on EC2$29.20715 machine hours × $0.1008 (m7i.large) = $72.07; no build minutes used101.27
Azure DevOps, Microsoft-hosted5 free + 3 × $6 = $185 paid parallel jobs × $40 = $200 (see note)218.00
GitHub Team + CircleCI Performance$32 + $15 + 3 × $15 = $9237,074 × 10 credits = 370,740, less 30,000 included, × $0.0006 = $204.44296.44
GitHub Team + Buildkite Pro, hosted agents$32 + 8 × $30 = $27237,074 × $0.008 = $296.59, less 4,000 included vCPU minutes ($16) = $280.59552.59
GitHub Team + Buildkite Pro, own EC2 agents$272$72.07 of EC2; within the 10 included agents344.07
GitHub Team + Jenkins on EC2$32Controller m7i.large 730 h = $73.58, agents $72.07177.65
CodeCommit + CodeBuild3 extra users × $1 = $3$214.00, as above217.00
GitLab CE, self-managed on EC2$0c7i.2xlarge 730 h = $260.61, runners $72.07332.68
Forgejo, self-hosted on EC2$0t4g.medium 730 h = $24.53, runners $72.0796.60

How to read it:

  • Add people to the self-hosted rows. Jenkins, GitLab CE, Forgejo and every row with EC2 runners need patching, upgrades and the odd stuck queue. On our estimate that's 4 to 8 hours a month; at an illustrative $100 an hour, $400 to $800, which puts every self-hosted row above GitHub Team with hosted runners. Disk, backups, NAT and load balancers are not priced either.
  • Azure DevOps is priced by concurrency. 37,074 minutes over 21 working days is about 29 hours of jobs a day, or nearly four jobs running at every moment of an 8-hour day. We assumed five paid parallel jobs to keep queues short; Microsoft's rule of thumb (one per four or five users) would give two, and this team would wait. With self-hosted agents instead: $18 + 4 extra jobs × $15 + $72.07 of EC2 = $150.07.
  • Minutes don't translate exactly. GitHub rounds every job up to a whole minute; Buildkite bills per second; other vendors' rounding rules differ. Machine sizes differ too (GitLab's small runner, for example, has 2 vCPU and 8 GB), so check that each vendor's default machine is big enough for your build. Treat each row as within 10 to 20% either way.
  • Startup programs can zero a year. A seed company accepted into GitLab for Startups gets Ultimate free for a year for up to 20 seats, and GitLab.com Ultimate lists 50,000 compute minutes, more than this team uses; confirm with GitLab that the program licence includes them. GitHub for Startups' $10,000 in credits would cover this team on Enterprise Cloud for the full 12 months they last: 8 seats at $21 is $168 a month, and 37,074 minutes fit inside Enterprise's $300 allowance.

At this size, the platform bill is small next to the AWS bill it deploys to (compare the profiles in how much AWS costs a startup). Choose on fit and on how little you have to run; cut minutes in the workflow files before you change vendor.

13Switching

Source: Forgejo Actions.

Full plan: moving to GitHub.

How hard is it to switch Git and CI platforms later?

For a typical startup, days of work rather than months. The Git history is the easy part: every platform here can import a repository with its branches and tags. The work is in everything around it:

  • Pipelines. Each CI has its own YAML, and each job has to be rewritten and run green on the new platform. Even Forgejo, which reads GitHub-style workflow files, expects small edits.
  • Secrets and AWS trust. Every OIDC trust policy names the old platform's issuer, so each AWS role needs a new trust statement before the first deploy from the new CI.
  • Branch rules, reviews and history. Protection rules have to be recreated by hand, and pull request discussions usually stay behind as an archive. Tell your auditor before you switch, not after.
  • Integrations. Webhooks, deploy keys, status checks, Jira links and Slack notifications all point at the old host.

With a handful of repositories that estimate holds if you run both side by side and cut over one repository at a time. The step-by-step plan, with cutover and rollback, is in moving to GitHub from GitLab, Bitbucket, Azure DevOps, Jenkins or CodeCommit.

14How to choose

How do you choose a CI/CD platform for a startup?

Answer these six questions in order and stop at the first yes. Most small teams on AWS reach the last one: GitHub Team with GitHub Actions.

  1. Does a contract or regulator require code to stay in the UK or EU? Yes: Azure DevOps, GitLab Dedicated, GitHub Enterprise Cloud in the EU, or self-hosted on AWS in your region. No: carry on.
  2. Are you already on a platform that works? Stay. Add OIDC to AWS, required reviews and an audit log export, and revisit in a year. Switching costs more than seats save at this size.
  3. Must everything run in your own AWS account? GitLab self-managed if you want the full product and have someone to run it; GitHub with self-hosted runners or CodeBuild if only the builds must be inside.
  4. Is the company already standardised on Jira and Confluence? Bitbucket Premium is reasonable. Otherwise GitHub.
  5. Do you need one product for repos, CI, registry and security scanning, and will you pay $29 a seat for it? GitLab Premium, or Ultimate through the startup program while it lasts.
  6. Everyone else: GitHub Team and GitHub Actions on hosted runners. Add self-hosted runners on AWS only past roughly 100,000 minutes a month on 2-core runners, or for jobs that need VPC access.
  • Cheapest cash cost, someone to run itForgejo or Bitbucket with EC2 runners
  • Cheapest with nothing to runGitHub Team, hosted runners
  • UK data, nothing to runAzure DevOps or GitLab Dedicated
  • Everything in your AWS accountGitLab self-managed, or CodeCommit + CodeBuild
  • Already on JenkinsPlan its retirement
15Questions

GitHub alternatives and CI/CD tools: short answers.

What is the best GitHub alternative for a startup?

GitLab, for most teams that want to leave GitHub: it covers repos, CI, registry and security scanning in one product, runs on GitLab.com, in your own AWS account or as a Dedicated instance, and has a startup program. Bitbucket suits teams already on Jira. Azure DevOps suits UK companies that need UK data residency on a hosted plan.

Is there a free GitHub alternative for private repositories?

Yes, for small teams. GitLab.com Free allows 5 users per private group and 400 compute minutes; Bitbucket Free allows 5 users and 50 minutes; Azure DevOps is free for 5 Basic users, with one hosted job of 1,800 minutes once billing is linked. Gitea and Forgejo are free to self-host. GitHub Free has private repositories too, but keeps branch rules and required reviewers to public ones.

What are the best CI/CD tools for a small team on AWS?

The CI that comes with your Git host: GitHub Actions, GitLab CI or Bitbucket Pipelines. Add AWS CodeBuild as a runner for jobs that need VPC access. CircleCI and Buildkite are good products, but they add a second vendor and seat fees, which rarely pays for itself under 15 engineers.

Bitbucket vs GitHub: which is cheaper?

Bitbucket's seats are cheaper ($3.65 Standard against $4 for GitHub Team), but its hosted minutes cost more past the allowance: $10 per 1,000, about $0.010 a minute, against $0.006 on GitHub. In our illustrative 8-engineer example, Bitbucket Standard came to about $379 a month and GitHub Team to about $236. With self-hosted runners, which don't use Bitbucket build minutes, Bitbucket is cheaper.

What are the best Jenkins alternatives for a startup?

The CI built into your Git host: GitHub Actions, GitLab CI or Bitbucket Pipelines, on hosted runners with OIDC to AWS and nothing to patch. If builds must stay inside your AWS account, use AWS CodeBuild or self-hosted runners that are destroyed after each job. Buildkite suits teams that want Jenkins-style control of their own agents behind a hosted dashboard.

What are the alternatives to GitHub Actions?

GitLab CI and Bitbucket Pipelines if you move the repositories too; CircleCI or Buildkite if you keep code on GitHub; AWS CodeBuild and CodePipeline if you want builds inside your AWS account; Jenkins if you must self-host everything. For cost alone, self-hosted runners on AWS are usually a better answer than a new CI vendor; see our GitHub Actions pricing guide.

CircleCI vs GitHub Actions: which is cheaper?

Per minute on a 2-core Linux machine they are close, about $0.006 on both. CircleCI adds its own seats ($15 a month per user over five on Performance) on top of your Git host's, so for our illustrative 8-engineer team it came to about $296 a month against $236 on GitHub Actions alone.

Is AWS CodeCommit still available to new customers?

Yes. AWS stopped onboarding new CodeCommit customers in 2024 and reopened sign-ups on 24 November 2025, when it announced a return to general availability. It promised Git LFS for Q1 2026 and new regions from Q3 2026; we couldn't confirm either in the user guide's history on 2 November 2026.

Is Bitbucket Data Center end of life?

No. Atlassian's Data Center end of life on 28 March 2029 covers Jira, Confluence and others, but Atlassian says Bitbucket and Bamboo Data Center "will not end of life", and existing customers get a Hybrid licence for Data Center and Cloud. Ask Atlassian before planning a new Data Center install.

Which CI tools support OIDC to AWS?

GitHub Actions, GitLab CI, Bitbucket Pipelines, CircleCI and Buildkite all issue OIDC tokens that AWS can exchange for a role. Azure Pipelines does it through the AWS Toolkit for Azure DevOps, version 1.15.0 or later. CodeBuild uses its IAM service role directly. Jenkins needs the OpenID Connect Provider plugin for this; without it, agents on AWS usually rely on their instance role.

Does GitHub charge for self-hosted runners in 2026?

No. A $0.002 a minute charge was announced for 1 March 2026 and postponed in December 2025 with no new date. GitHub's billing docs, checked on 2 November 2026, say self-hosted runners remain free and don't reduce your included compute. The detail is in our GitHub Actions pricing guide.

Can we keep our source code in the UK?

Yes, three ways: Azure DevOps lets you choose a UK geography when you create the organisation; GitLab Dedicated can run in London (eu-west-2); or self-host GitLab, Gitea or Forgejo in eu-west-2. GitHub's data residency regions are EU, Australia, US and Japan, with no UK region listed. Bitbucket Cloud has no residency yet.

16Related
17Next step

If you are a small team on GitHub with hosted runners, required reviews on main and OIDC roles into AWS, you don't need us for this: you already have the setup this guide recommends. If you are not there yet, or you are stuck on Jenkins, an old platform or stored AWS keys, that is ordinary work on a fractional DevOps plan: OIDC roles per environment, branch protection your auditor will accept, faster pipelines and self-hosted runners only where the maths says so. Moving platforms is a fixed-scope job; we don't have a set price for it yet, so we quote it after a short call about your repositories and pipelines. Talk to an engineer. If you'd rather start with a one-off look at CI/CD alongside IAM, backups and cost, that's the AWS readiness review for $1,900.

StripPLAN-20
PlanEssentials
Hoursup to 20 / mo
ResponseNext business day
TermMonthly after 3 mo
Price$2,900 /mo
NextFractional DevOps plan
Talk to an engineer