Skip to main content
This guide shows how to use the gh actions-importer forecast command to estimate potential GitHub Actions usage from historical CI pipeline runs (example uses Jenkins). The forecast analyzes historical builds and computes metrics — such as total execution minutes, queue times, and concurrency — useful for planning runner capacity or estimating GitHub-hosted runner costs. The Jenkins server must have the Paginated Builds plugin installed so the importer can retrieve large volumes of build history without timing out. Example command:
Install the Jenkins “Paginated Builds” plugin on the target Jenkins server before running gh actions-importer forecast jenkins. For Jenkins instances with a lot of historical builds, paginated access prevents request timeouts and ensures the importer can retrieve the full run history.

What the forecast command does

  • Extracts historical build records from your CI provider (Jenkins in this example).
  • Computes execution-time statistics, queue-time summaries, and concurrent-job distributions.
  • Produces:
    • A jobs JSON file containing one object per build (raw extracted records).
    • A human-readable forecast_report.md summarizing the computed metrics for capacity planning.
Useful links

Initial run (example failure when plugin is missing)

If the Paginated Builds plugin is not installed, the forecast command will fail and log a message instructing you to install the plugin. Example failing run and trimmed logs:
The detailed logfile shows the same error and includes a stack trace from the importer:

Install the Paginated Builds plugin in Jenkins

  1. Open Jenkins → Manage Jenkins → Manage Plugins.
  2. Search for “Paginated Builds” in the Available plugins tab.
  3. Install the plugin and restart Jenkins when prompted.
Screenshot of the Jenkins "Available plugins" page in dark mode showing the search for "paginate" and the "Paginated Builds" plugin selected. A blue "Install" button is visible at the top-right.
The installer shows download and installation progress.
A screenshot of the Jenkins "Download progress" page showing preparation steps and green success indicators for Paginated Builds and loading plugin extensions. The left sidebar shows the Plugins menu (Updates, Available plugins, Installed plugins, etc.).
After restarting Jenkins, confirm the plugin is enabled in Installed plugins.
A screenshot of the Jenkins Plugins management page (dark theme) showing the "Paginated Builds" plugin listed. The plugin is enabled with a blue toggle and the sidebar shows Installed plugins and other settings.

Rerun the forecast — handle HTTP caching issues

Even after installing the plugin, you may still see the same error if the importer is using previously cached HTTP responses that predate the plugin installation. To force fresh requests, re-run the forecast with the --no-http-cache flag. You can check the forecast command options:
If you still see the plugin-related error after installing Paginated Builds, add --no-http-cache to the forecast command to ensure the importer queries Jenkins live instead of using cached plugin lists.
Example successful run using --no-http-cache:

Output artifacts

The forecast run produces two primary outputs:
ArtifactPurposeExample path
Jobs JSONRaw list of extracted builds; one object per build with timestamps and result detailstmp/forecast/jobs/05-22-2025-09-40_jobs_0.json
Forecast report (Markdown)Human-readable summary of totals, execution-time stats, queue times, and concurrencytmp/forecast/forecast_report.md

Example: jobs JSON snippet

The jobs JSON file contains one object per build record. Each object includes fields such as id, result, queue_time, start_time, finish_time, and definition_id.

Example: forecast_report.md (trimmed)

The generated forecast_report.md summarizes totals and statistical metrics that aid capacity planning — such as total execution minutes, median and percentile values, and concurrency distributions.
These metrics are useful for estimating:
  • GitHub-hosted runner minute consumption.
  • The number of concurrent self-hosted runners required to achieve desired throughput.
  • Cost planning and migration strategy when moving pipelines to GitHub Actions.

Recap and troubleshooting checklist

  • Purpose: gh actions-importer forecast jenkins computes GitHub Actions usage estimates from historical Jenkins builds.
  • Precondition: Install the Jenkins Paginated Builds plugin and restart Jenkins.
  • If you see the plugin error after installation:
    • Re-run the command with --no-http-cache to bypass stale HTTP responses.
  • Outputs:
    • Jobs JSON file (raw build records).
    • forecast_report.md (human-readable usage summary).
If you need to review the installer or plugin details, refer to the Jenkins plugin page (https://plugins.jenkins.io/paginated-builds) and the importer docs (https://github.com/actions-importer/preview/tree/main/jenkins#paginated-builds-plugin).

Watch Video