Guide for using gh actions-importer forecast to estimate GitHub Actions runner usage from Jenkins build history, requiring the Paginated Builds plugin and producing jobs JSON and a forecast report
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.
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:
root@jenkins in /home❯ gh actions-importer forecast jenkins --output-dir tmp/forecast[2025-05-22 09:33:36] Logs: 'tmp/forecast/log/valet-20250522-093336.log'[2025-05-22 09:33:36] Forecasting 'http://139.84.149.83:8080/'[2025-05-22 09:33:37] The 'Paginated Builds' plugin (https://plugins.jenkins.io/paginated-builds) must be installed on your Jenkins server prior to running the `forecast` command. Please view https://github.com/actions-importer/preview/tree/main/jenkins#paginated-builds-plugin for more detailsExtracting jobs: |=--=--=--=------------=---------------------=|root@jenkins in /home took 18s❯
The detailed logfile shows the same error and includes a stack trace from the importer:
# Logfile created on 2025-05-22 09:33:36 +0000 by logger.rb/v1.6.0I, [2025-05-22T09:33:36.761835 #1] INFO -- : Using GitHub Features: DefaultsI, [2025-05-22T09:33:36.761882 #1] INFO -- : Forecasting 'http://139.84.149.83:8080/'I, [2025-05-22T09:33:36.844907 #1] INFO -- : request: GET http://139.84.149.83:8080/pluginManager/api/json?depth=1&tree=plugins%5BshortName%5DI, [2025-05-22T09:33:37.046147 #1] INFO -- : response: Status 200E, [2025-05-22T09:33:37.048371 #1] ERROR -- : The 'Paginated Builds' plugin (https://plugins.jenkins.io/paginated-builds) must be installed on/usr/local/bundle/gems/actions_importer-1.3.22397/lib/valet/services/jenkins/extract_jobs.rb:12:in `call'... (stack trace truncated) ...
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:
root@jenkins in /home❯ gh actions-importer forecast --helpDescription: Forecast GitHub Actions usage from historical pipeline utilization.Options: --source-file-path <source-file-path> (REQUIRED) The file path(s) to existing jobs data. -o, --output-dir <output-dir> (REQUIRED) The location for any output files. --start-date <start-date> The start date of the forecast analysis in YYYY-MM-DD format. --time-slice <time-slice> The time slice in seconds to use for computing concurrency metrics. [default: 60] --credentials-file <credentials-file> The file containing the credentials to use. --no-telemetry Boolean value to disallow telemetry. --no-ssl-verify Disable SSL certificate verification. --no-http-cache Disable caching of HTTP responses. --prerelease Use prerelease image for GitHub Actions Importer. --no-host-network Use docker's default bridge network instead of the host machine's network. -?, -h, --help Show help and usage informationCommands: azure-devops Forecasts GitHub Actions usage from historical Azure DevOps pipeline utilization. jenkins Forecasts GitHub Actions usage from historical Jenkins pipeline utilization. gitlab Forecasts GitHub Actions usage from historical GitLab pipeline utilization. circle-ci Forecasts GitHub Actions usage from historical CircleCI pipeline utilization. travis-ci Forecasts GitHub Actions usage from historical Travis CI pipeline utilization. github Forecasts GitHub Actions usage from historical Github pipeline utilization. bamboo Forecasts GitHub Actions usage from historical Bamboo pipeline utilization. bitbucket Forecasts GitHub Actions usage from historical Bitbucket pipeline utilization.
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:
root@jenkins in /home❯ gh actions-importer forecast jenkins --output-dir tmp/forecast --no-http-cache[2025-05-22 09:40:18] Logs: 'tmp/forecast/log/valet-20250522-094018.log'[2025-05-22 09:40:18] Forecasting 'http://139.84.149.83:8080/'[2025-05-22 09:40:21] Output file(s): tmp/forecast/jobs/05-22-2025-09-40_jobs_0.json tmp/forecast/forecast_report.mdroot@jenkins in /home took 23s
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.
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.