Groups, subgroups and GitLab CI, from GitLab.com or self-managed. Includes and CI/CD components become reusable workflows, and variables land as secrets, variables and environments, scoped the way they were.
Pipelines and GitLab.com repositories run in the appinclude:
- project: platform/ci-templates
file: /templates/maven-build.yml
inputs:
java_version: "21"
build:
extends: .maven-build
stage: buildname: ci
on: [push, pull_request]
jobs:
build:
uses: acme/ci-templates/.github/workflows/maven-build.yml@v4
with:
java_version: "21"
secrets: inheritTrusted by teams moving to GitHub at scale
What moves
GitLab.com groups and subgroups, exported and moved with full history. Self-managed with our team.
.gitlab-ci.yml, includes and CI/CD components, from GitLab.com or self-managed.
project and component includes become reusable workflows or building blocks.
Masked variables become secrets, protected ones environment secrets, and scoped ones GitHub Environments.
Group and instance variables become organization-level secrets and variables.
GitLab SAST and dependency templates map to CodeQL and Dependabot.
How it maps
Predefined variables such as $CI_COMMIT_SHA map to their GitHub context equivalents, like github.sha.
| GitLab | GitHub Actions |
|---|---|
| stages: | jobs with needs: |
| rules: if $CI_PIPELINE_SOURCE == "merge_request_event" | on: pull_request |
| extends: / !reference | flattened, or a composite action |
| include: project / component | reusable workflow or building block |
| include: template (SAST) | CodeQL / Dependabot |
| artifacts: expire_in | upload-artifact retention-days |
| cache: | actions/cache |
| parallel: matrix | strategy.matrix |
| when: manual | Environment with required reviewers |
| resource_group | concurrency |
The parts that need a person are named in the plan up front, so they are decided before cutover, not discovered during it.
Your migration, your way
Self-serve
The whole program in one app: inventory, families, waves of pull requests and cutover. Built for platform teams who want to drive.
With our migration team
We scope, plan and run the move alongside your team, on the same platform, for the estates and deadlines that can't slip.
After the move
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.
Don't see yours? Our migration team will walk through your GitLab estate with you.
Yes. GitLab CI pipelines convert from both GitLab.com and self-managed instances. GitLab.com repositories move in the app; self-managed repositories are moved with our migration team.
Shared includes and CI/CD components become reusable workflows or building blocks, so every project calls one definition instead of carrying its own copy.
Masked variables become secrets, protected variables become environment secrets, environment-scoped variables become GitHub Environments, and group variables become organization-level secrets and variables.
No. Projects are exported a few at a time, so the instance stays responsive for the teams still working in it.