Repositories and pipelines together. Rewire Azure Pipelines to your new GitHub repositories on day one, or convert them to GitHub Actions on reusable workflows, team by team, with rollback at every step.
Repositories and pipelines both run in the apptrigger: [main]
resources:
repositories:
- repository: templates
type: git
name: platform/pipeline-templates
steps:
- template: steps/dotnet-build.yml@templates
parameters:
projects: '**/*.csproj'
configuration: Releasename: ci
on:
push:
branches: [main]
jobs:
build:
uses: acme/platform-workflows/.github/workflows/dotnet-build.yml@v2
with:
project: '**/*.csproj'
configuration: Release
secrets: inheritTrusted by teams moving to GitHub at scale
What moves
Full history, connected with Microsoft sign-in or a token.
Templates and extends become reusable workflows; stages and jobs become jobs with needs.
Classic build and release definitions are imported and converted too.
Each group is split into one GitHub secret or variable per key.
Moved to OpenID Connect, so no long-lived cloud keys are stored.
Pipelines from Azure DevOps Services and on-premises Server.
Two ways to move your pipelines
Once your repositories are on GitHub, each Azure pipeline can go one of two ways. Most teams use both: rewire everything on day one, then convert to GitHub Actions in waves.
Keep Azure Pipelines running, pointed at the new GitHub repositories.
Best when: You need code on GitHub first, or a pipeline is not ready to convert.
Pipelines become GitHub Actions workflows on shared building blocks.
Best when: You want one CI system, shared workflows and Azure DevOps switched off.
Choose per team or per pipeline. The Azure DevOps source stays enabled until its rewire pull requests merge, and every step can be rolled back.
How it maps
Deprecated task versions are flagged during import so they are replaced, not carried over.
| Azure DevOps | GitHub Actions |
|---|---|
| UseDotNet@2 | actions/setup-dotnet |
| NodeTool@0 | actions/setup-node |
| Cache@2 | actions/cache |
| PublishPipelineArtifact@1 | actions/upload-artifact |
| AzureCLI@2 | azure/login (OIDC) + az |
| AzureWebApp@1 | azure/webapps-deploy |
| Docker@2 | docker/build-push-action |
| KubernetesManifest@1 | azure/k8s-deploy |
| template: / extends: | reusable workflow (workflow_call) |
| pool: vmImage | runs-on |
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 Azure DevOps estate with you.
Yes. Repositories move with full history, and pipelines are converted onto reusable workflows. Cutover then rewires and relinks them, team by team.
Usually both, in order. Rewiring points your existing Azure Pipelines at the new GitHub repositories, so code moves first and nothing changes for your builds. Converting moves each pipeline onto GitHub Actions and shared reusable workflows, so Azure Pipelines can be retired. You can choose per team or per pipeline, and a rewired pipeline can convert in a later wave.
Yes. Classic build and release pipelines are imported and converted alongside YAML pipelines. Logic that only lived in the Classic UI is surfaced in the plan for a person to confirm.
Each variable group is split into one GitHub secret or variable per key, and service connections move to OpenID Connect, so no long-lived cloud credentials are stored in GitHub.
Yes. Every rewire step waits for an approval, and rollback restores the original repository and pipeline triggers, in bulk or one repository at a time.