Guide for auditing a Jenkins instance with the GitHub Actions Importer to discover pipelines, dry-run convert them to GitHub Actions, and generate per-job outputs and migration summaries.
This guide shows how to audit a Jenkins instance using the GitHub Actions Importer. The audit will:
Discover jobs and pipelines on a Jenkins server.
Attempt to convert each pipeline into a GitHub Actions workflow (dry-run).
Produce per-job output files (converted YAML, metadata, Jenkinsfile, errors) and an overall migration summary.
Export a workflow_usage.csv to help estimate required Actions, secrets, and runners.
Before running the audit, configure authentication for both GitHub and Jenkins. The interactive gh actions-importer configure flow writes credentials to a local environment file.Example interactive flow (sensitive values redacted):
root@jenkins in /home➜ gh actions-importer configure✓ Which CI providers are you configuring?: JenkinsEnter the following values (leave empty to omit):✓ Personal access token for Github: *****************************✓ Base url of the Github instance: https://github.com✓ Personal access token for Jenkins: *****************************✓ Username of Jenkins user: siddharth✓ Base url of the Jenkins instance: http://139.84.149.83:8080/Environment variables successfully updated.
The command populates .env.local:
root@jenkins in /home❯ cat .env.localGITHUB_ACCESS_TOKEN=ghp_**********************GITHUB_INSTANCE_URL=https://github.comJENKINS_ACCESS_TOKEN=**********************JENKINS_INSTANCE_URL=http://139.84.149.83:8080/JENKINS_USERNAME=siddharth
Tip: Keep your tokens secure and do not commit .env.local to source control.
Open tmp/audit/audit_summary.md for a human-readable report. It contains importer version, timestamp, counts, and a breakdown of discovered pipelines and conversion statuses.Sample high-level summary:
Metric
Value
Total pipelines discovered
4
Successful
1
Partially successful
2
Unsupported
1
Failed
0
Result definitions:
Successful: Fully converted pipeline constructs and steps.
Partially successful: Major constructs converted; some steps require manual fixes.
The audit aggregates known vs unknown build steps and suggests mapped GitHub Actions.Example of known vs unknown steps (excerpt):Known steps (automatically mapped):
The importer creates a directory per job with relevant artifacts. Use the generated YAML and config.json as the basis for manual edits and secret/re-runner setup.Table — example per-job outputs:
workflow_usage.csv lists detected Actions, secrets, and runners for converted pipelines — useful to plan which Actions to include and which runners or secrets to configure.Sample CSV excerpt:
The audit provides a migration plan that highlights what can be auto-converted and what requires manual work. Use the per-job config.json and generated YAML as the authoritative reference when migrating each pipeline.
Scripted Jenkins pipelines are often unsupported by the importer and will appear as unsupported/failed — they require manual migration. Also, the importer redacts secrets and cannot provision self-hosted runners; you must recreate those manually in GitHub.
That’s a summary of the audit process and how to interpret the generated artifacts. In subsequent lessons you can explore individual generated YAML files and run dry-run conversions for individual pipelines.