CodeCargo logo

Migration

Migration Assistant

What is Migration Assistant?

Migration Assistant helps you migrate legacy CI/CD systems to GitHub Actions workflows. It ingests data from your existing CI/CD platform, walks you through a mapping wizard, and produces CodeCargo workspaces ready for AI-assisted conversion to GitHub Actions.

Currently supported source systems:

  • Jenkins - Import jobs, pipelines, plugins, and credentials
  • Azure DevOps - Import YAML pipelines, Classic Build/Release definitions, variable groups, service connections, and templates

The data model and UI are designed to be source-agnostic, making it straightforward to add support for additional CI/CD platforms in the future.

GitLab is also a supported source: gitlab.com or a self-managed instance. Start from Migrate → Pipelines → Import → GitLab.

How a Migration Flows

A migration moves through five broad phases, each covered in detail on its own page:

  1. Migrate Repositories (Azure DevOps only) - Connect your Azure DevOps organization and copy its repositories to GitHub through GitHub Enterprise Importer, from inside CodeCargo. Each copy is recorded so the later phases know where every repository went.
  2. Import - Bring pipeline data in from Jenkins or Azure DevOps, either by running the importer against your live instance or by uploading a JSON export. Post-import discovery then maps the dependencies between your jobs, shared libraries, and templates.
  3. Map - Work through the mapping wizard to match legacy jobs to GitHub repositories, plugins to GitHub Actions, and credentials to GitHub Secrets.
  4. Migrate - Convert jobs to GitHub Actions workflows with AI assistance — one at a time in the GenAI Editor, or at scale with Migration Batches and the migration agent.
  5. Prepare Rewire (Azure DevOps only) - After repositories have moved to GitHub, find and fix lingering Azure DevOps references before rewiring your pipelines.

You don't have to complete each phase for every job before starting the next — most teams import everything, then map and migrate in incremental batches. Repositories already on GitHub, or moved with gh ado2gh outside CodeCargo, skip the first phase.

Source-Aware Terminology

Migration Assistant displays entity types using each source platform's native vocabulary while maintaining a stable internal data model. This ensures the interface feels natural regardless of your source CI/CD system.

Internal conceptJenkinsAzure DevOps
InstanceControllerOrganization
Build unitJobPipeline
GroupingFolderProject
ExtensionPluginTask
Reusable codeShared LibraryTemplate Repository
DefinitionFunctionTemplate
CredentialCredentialService Connection

This terminology layer applies across the overview landing, scoped entity tables, and mapping pages. When viewing data from multiple sources simultaneously, the interface falls back to neutral cross-platform terms for aggregate views while preserving source-specific labels in detailed breakdowns.

These docs use the neutral terms job (a build unit), plugin (an extension), and reusable pipeline element (a function or template from a shared library or template repository) when a statement applies to both source systems.

Consistent Internal Model

While display labels adapt to your source platform, the underlying data model uses stable enum values. This ensures reliable data processing and migration logic regardless of terminology differences between CI/CD platforms.

Migration Status Lifecycle

Every job and reusable pipeline element carries a migration status that drives the progress bars, filters, and completion percentages you see throughout Migration Assistant:

StatusMeaning
Not StartedImported, but no migration work has begun
In ProgressMigration work is underway, manually or via the migration agent
Ready for ReviewThe migration agent has opened a pull request that's awaiting your review
MigratedThe entity has been converted to GitHub Actions
SkippedIntentionally excluded from the migration

Entities marked as migrated or intentionally skipped both count toward completion percentages — skipping something is a decision, not unfinished work.

The Dashboard

Migration Assistant lives in the Migrate group of the organization sidebar, which has three entries:

  • Repositories - The repositories CodeCargo can see through its source connections, the repository migrations run against them, and the custom properties those migrations stamp. See Migrating Repositories.
  • Pipelines - The pipeline dashboard described below, with its Sources, Batches, and Waves tabs.
  • Connections - The source systems connected to CodeCargo, and where a new one is connected.

The Pipelines dashboard opens on its Sources tab, an overview that groups all imported migration data by source system. Each source (Jenkins, Azure DevOps) displays its instances with progress indicators and summary metrics. New imports are started from this overview level.

Instance Summary Cards

Each instance shows:

  • Progress bar - segmented view of migrated, skipped, in-progress, and not-started jobs
  • Completion percentage - jobs marked as migrated or intentionally skipped count toward completion
  • Metric columns - aligned counts for build units, extensions, reusable code, and credentials
  • Instance URL - normalized controller/organization URL for easy identification

Scoped Instance Views

Click any instance to drill down to a scoped entity table showing only that instance's data. The scoped view hides the source column (context is already established), shows the instance URL in the header, and uses that source's vocabulary throughout.

Within a scoped view you get statistics, filters, and inline editing capabilities:

  • Summary statistics - jobs imported, mappings configured, repositories matched
  • Filter controls - search by job name, filter by status or repository
  • Inline mapping edits - update repository and migration mappings directly from the dashboard
  • Per-job migration launch - trigger "Migrate in Editor" for individual jobs

Filtering

The dashboard supports multi-select Type and Status filters so you can focus on a specific subset of migration entities — for example, viewing only Jenkins Shared Libraries that are currently in progress.

The segmented progress bar at the top of each instance or batch is also interactive. Click any colored segment to filter the entity table to items in that state. Click the segment again, or click the legend label, to clear the filter.

Service Catalog Integration

Migration Assistant integrates with the Service Catalog to provide visibility into your migration progress alongside the rest of your services:

  • Migration Assistant Container nodes - Represent the overall migration project
  • Migration Assistant Job nodes - Individual jobs from your legacy CI/CD system
  • Dependency visualization - See relationships between migrated and existing workflows

Migration components appear in both the organization graph (overall migration progress across your organization) and the per-service detail graph (migration status for specific services and repositories).

Best Practices

Before You Start

  • Audit your source CI/CD instance - Review active vs. inactive legacy jobs
  • Document custom plugins or tasks - Note any organization-specific plugins or tasks that need special handling
  • Plan repository structure - Decide how legacy jobs map to your GitHub repository organization
  • Prepare credentials - Plan how to recreate sensitive credentials in GitHub Secrets

During Migration

  • Start with simple jobs - Begin with basic build jobs before tackling complex pipelines
  • Validate mappings - Test repository and plugin mappings with a few jobs before bulk operations
  • Use Building Blocks - Create reusable workflow templates for common patterns with Building Blocks
  • Iterate incrementally - Migrate and test jobs in small batches

After Migration

  • Test thoroughly - Run migrated workflows in a test environment before production use
  • Update documentation - Ensure team documentation reflects the new GitHub Actions workflows
  • Train your team - Help developers understand the new GitHub Actions-based workflows
  • Monitor and optimize - Use CodeCargo's compliance and insights features to improve your workflows over time

Migrating Repositories

Connect Azure DevOps and copy its repositories to GitHub with GitHub Enterprise Importer, from inside CodeCargo.

Importing Data

Run the importer against Jenkins or Azure DevOps and discover dependencies in the imported data.

Mapping

Match legacy jobs, plugins, and credentials to their GitHub equivalents with the mapping wizard.

Migrating Jobs

Convert jobs to GitHub Actions with AI assistance, individually or in batches.

Prepare Rewire

Fix lingering Azure DevOps references before running gh ado2gh rewire-pipeline.

Previous
Actions Advisor