Migrate from CircleCI to GitHub Actions

Our migration team moves your CircleCI pipelines onto reusable GitHub workflows: orbs, executors, workflows and contexts mapped once per family, then delivered in waves of pull requests your teams review.

Run by our migration team, on the CodeCargo platform
.circleci/config.ymlCircleCI
version: 2.1
orbs:
  node: circleci/node@5
workflows:
  test:
    jobs:
      - node/test:
          version: "20"
.github/workflows/ci.ymlGitHub Actions
name: ci
on: [push, pull_request]
jobs:
  test:
    uses: acme/platform-workflows/.github/workflows/node-package.yml@v2
    with:
      node-version: "20"
    secrets: inherit
An orb-based test job becomes a call to your Node building block.

Trusted by teams moving to GitHub at scale

What moves

Everything your CircleCI estate runs on.

  • Config

    .circleci/config.yml, including reusable commands, executors and parameters.

  • Orbs

    Each orb in use mapped to an action or one of your building blocks.

  • Workflows

    Jobs, requires and filters become GitHub jobs, needs and triggers.

  • Contexts

    Contexts become GitHub Environments and organization secrets.

  • Caching and workspaces

    save_cache and persist_to_workspace map to caching and artifacts.

  • Approvals and schedules

    Approval jobs become environment reviewers; scheduled pipelines become schedules.

scopes, converts and cuts over with you
Our team
of similar configs converted once, not repository by repository
Families
of pull requests to each repository’s owners
Waves

How it maps

CircleCI concepts, in GitHub Actions terms.

Commands shared across many configs become composite actions, so they are written once.

How CircleCI configuration maps to GitHub Actions
CircleCIGitHub Actions
orbs: node: circleci/nodeactions/setup-node (or your building block)
executors / docker: imageruns-on + container
workflows: jobs: requires:jobs with needs:
filters: branches: onlyon: push: branches
context: aws-prodenvironment + secrets
save_cache / restore_cacheactions/cache
persist_to_workspaceupload-artifact / download-artifact
type: approvalEnvironment with required reviewers
parameters:workflow_dispatch inputs / workflow_call inputs

No surprises at cutover.

The parts that need a person are named in the plan up front, so they are decided before cutover, not discovered during it.

What needs a person

  • Machine and macOS executors, matched to GitHub-hosted or self-hosted runners
  • Private orbs, mapped to building blocks with their owners
  • Context secret values, entered in GitHub rather than exported

How we run it

  • Inventory every config, orb and context, then group similar configs into families
  • Convert each family once onto your building blocks, and pilot it with one team
  • Roll out in waves of pull requests, and switch triggers off in CircleCI as each team cuts over

The same method for every CircleCI estate.

See the full method
  1. 01Inventory everything
  2. 02Convert families, not files
  3. 03Ship in waves of pull requests
  4. 04Cut over with rollback

Your migration, your way

Run it yourself, or run it with us.

Self-serve

Migration Assistant

The whole program in one app: inventory, families, waves of pull requests and cutover. Built for platform teams who want to drive.

  • Inventory, families, waves and cutover in one app
  • Pull requests to repository owners, not tickets
  • Start free on 10 repositories, no card
Start free on 10 repositories →

With our migration team

Migration services

We scope, plan and run the move alongside your team, on the same platform, for the estates and deadlines that can't slip.

  • GitHub Enterprise Cloud to EMU and data-residency moves
  • Scoping, wave plans and cutover support
  • The custom pipelines nobody wants to touch
  • A team that has done this at enterprise scale

After the move

Land clean, then stay clean.

CodeCargo Manage keeps every repository on the standards and building blocks you migrated onto, fixing drift as pull requests, as far on its own as you allow.

See how Manage works

CircleCI migration questions.

Don't see yours? Our migration team will walk through your CircleCI estate with you.

Is CircleCI migration done in the app or by your team?

By our migration team, working on the CodeCargo platform. You get the same families, waves of pull requests and cutover approach as every other source.

What happens to our CircleCI orbs?

Each orb in use is mapped to a GitHub action or one of your building blocks. Private orbs are mapped with their owners so nothing is lost.

How are CircleCI contexts migrated?

Contexts become GitHub Environments and organization secrets, with secret values entered in GitHub rather than exported.

Find out how many weeks
your migration takes.

Or start free on 10 repositories.

Migrate CircleCI to GitHub Actions | CodeCargo