Skip to main content
Let’s review the output files produced by the audit command when migrating Jenkins jobs to GitHub Actions.
A blue-green gradient slide with centered white text that reads "Review Audit Output Files." A small "© Copyright KodeKloud" appears in the bottom-left corner.
Overview The audit run performs the following high-level steps:
  • Fetches Jenkins job configuration (config.xml) from the Jenkins API.
  • Attempts to convert Jenkinsfiles to a JSON intermediate representation using the pipeline-model-converter.
  • Generates per-job artifact directories under tmp/audit/<job>/ containing converted GitHub Actions workflows, JSON job metadata, original Jenkinsfiles (if available), and diagnostic files (e.g., error.txt) when conversion fails.
  • Redacts secrets in any exported output files.
The audit log below demonstrates these interactions — HTTP requests/responses, transformer activity, and the list of generated output files:
What the audit produces The audit writes a directory per job under tmp/audit/. Typical contents include: Generate ASCII Artwork — config.json The exporter translates the Jenkins job configuration into JSON. For this job the config.json shows a shell builder that calls an external Advice API.
Generate ASCII Artwork — generated GitHub Actions workflow The importer generated a GitHub Actions workflow that preserves job intent: run on Ubuntu, checkout code, query the Advice API, validate word count, install cowsay, and print the message with a random cow. Note how filenames were normalized (e.g., writing to advice.json) to match the generated workflow layout.
Tip: After import, verify the generated workflow in the target repository and adjust filenames, environment variables, or permissions as needed. ci-pipeline-poll-scm — config.json (declarative pipeline metadata) Declarative (pipeline model) jobs include plugin metadata and trigger information in config.json. The Jenkins SCM trigger shows up as a cron-like schedule in the JSON:
ci-pipeline-poll-scm — generated GitHub Actions workflow (partial) The importer converts many declarative pipeline constructs into Actions equivalents. However, when a Jenkins step or plugin has no matching transformer, the tool inserts commented YAML blocks marked with “This item has no matching transformer”. These commented sections indicate items that must be migrated manually or addressed by implementing custom transformers.
When you encounter commented sections like these, plan to either:
  • Implement a custom transformer to map the Jenkins plugin to a GitHub Action, or
  • Rework that pipeline step manually in the generated workflow using equivalent Actions or scripts.
Scripted pipeline — config.json and error.txt Scripted (CPS) Jenkins pipelines are not supported by the importer. For jobs using scripted pipelines the audit still saves the config.json (so you have the original pipeline script and metadata) and writes an error.txt describing the limitation.
Scripted Jenkins pipelines are not supported by the importer. Jobs using scripted pipelines must be migrated manually to GitHub Actions or rewritten as declarative pipelines for automated conversion.
Example config.json captured for a scripted pipeline:
Corresponding error.txt produced by the importer:
This limitation means scripted pipelines require manual conversion efforts — either rewrite as declarative or design equivalent GitHub Actions workflows. Best practices and next steps
  • Start with declarative pipelines and plugin-dependent steps; those convert more cleanly.
  • Inspect tmp/audit/<job>/ for each job: review .github/workflows/*.yml, resolve commented/unmapped sections, and adjust secrets or environment variables.
  • For jobs with error.txt, plan a manual migration or pipeline refactor to declarative form.
  • Consider implementing custom transformers for frequently-used proprietary plugins to automate parts of the migration.
Quick checklist Links and references Summary
  • The audit fetches Jenkins job configurations and Jenkinsfiles, calls the pipeline-model-converter to produce an intermediate JSON representation, and writes converted artifacts into tmp/audit/<job>/.
  • Per-job output commonly includes .github/workflows/*.yml, config.json, jenkinsfile, and error.txt (for failed conversions).
  • Declarative pipelines convert best; plugin-specific or unsupported features are left commented in the generated YAML and require manual attention or custom transformers.
  • Scripted pipelines are not automatically converted and must be migrated manually.
That’s all for now.

Watch Video