Skip to main content
This lesson covers the forecast command from GitHub Actions Importer. The forecast step estimates the effort, resource usage, and feasibility of migrating Jenkins CI/CD pipelines to GitHub Actions before you convert them. By analyzing historical Jenkins run data, it predicts runner minutes, concurrency needs, and queue behavior so you can plan capacity and cost for GitHub-hosted or self-hosted runners.
A presentation slide titled "Purpose" that says "Estimate the effort and feasibility of migrating pipelines before conversion." It shows two cards: "Estimating GitHub Actions Usage" and "Analyzing Historical Data" with bullets about predicting resource use, cost planning, and evaluating past and future pipeline workloads.
How the forecast command works — a high-level overview:
  • Data collection: extracts Jenkins metrics such as build durations, frequencies, job metadata, and queue labels.
  • Usage prediction: analyzes the collected metrics to estimate GitHub Actions runner minutes, peak concurrency, and expected queue times.
  • Reporting: produces logs, datasets of completed jobs, and human-readable forecast reports.
  • Planning aid: provides actionable numbers to size runner pools, choose runner types, and estimate billing costs.
A presentation slide titled "Functionalities" showing four feature tiles: Data Collection (highlighted), Usage Prediction, Reporting, and Planning Aid. The Data Collection tile notes it "Collects Jenkins metrics like build duration and frequency."

Usage

Run the forecast against your Jenkins instance. The command writes logs and the forecast report to the output directory you specify:
gh actions-importer forecast jenkins --output-dir tmp/forecast
After the command completes, the output directory (for example tmp/forecast) contains:
  • Logs of the forecast process
  • A dataset of completed Jenkins jobs used for analysis
  • One or more forecast reports summarizing resource and concurrency predictions

Key metrics included in the forecast report

The forecast report focuses on a concise set of metrics that drive migration planning. Use the table below to quickly understand each metric and why it matters.
MetricWhat it measuresWhy it matters
Job countTotal number of completed jobs analyzedHelps validate dataset size and representativeness
Pipeline countNumber of unique pipelines (jobs) observedIdentifies breadth of workflows to migrate
Execution timeTime a runner spent executing a job (per-job and aggregated)Direct input for calculating total runner minutes and cost
Queue timeTime jobs waited for a runnerReveals need for higher concurrency or autoscaling
Concurrent jobsJobs running simultaneously over timeDetermines peak runner count required
Per-queue metricsMetrics broken down by Jenkins queue/label/node typeUseful when different queue types have different capacity or hardware
Example summary from a forecast report:
- Job count: 73
- Pipeline count: 6

- Execution time
  - Total: 27,057 minutes
  - Median: 2 minutes
  - P90: 19 minutes
  - Min: 0 minutes
  - Max: 15,625 minutes
Use those totals to estimate GitHub-hosted runner cost (runner minutes × price per minute for the chosen runner type). Refer to the GitHub Actions billing documentation to apply accurate pricing:

How to interpret the numbers

  • Execution time (total and percentiles): gives you expected monthly or yearly runner minutes. Multiply these by the per-minute price for the runner image you plan to use to estimate cost.
  • Peak concurrency: informs how many simultaneous runners you should provide (self-hosted or GitHub-hosted concurrency limits).
  • High queue time: indicates either not enough runners or uneven scheduling; consider autoscaling or redistributing workloads.
  • Per-queue differences: prioritize migrating queues with predictable usage first; complex or highly variable queues may need capacity buffer or dedicated self-hosted runners.
Use the forecast results to size runner pools and estimate costs before migrating pipelines. Combine the forecasted runner minutes and peak concurrency with GitHub Actions pricing and your chosen runner types to prepare an accurate migration plan.

Example planning steps after a forecast

  1. Aggregate total runner minutes from the forecast for the migration window you care about (monthly, quarterly).
  2. Choose runner types (GitHub-hosted images or self-hosted hardware), and apply cost per-minute or infrastructure cost estimates.
  3. Evaluate peak concurrency to set a minimum runner pool or autoscaling policy.
  4. For queues with large variance or long-running jobs, consider isolating those onto dedicated self-hosted runners or throttling parallelism.
  5. Re-run forecasts periodically or after major pipeline changes to keep capacity planning accurate.
That’s all for now.

Watch Video