4.9 KiB
Forecast potential build runner usage
In this lab you will use the forecast command to forecast potential GitHub Actions usage by computing metrics from completed pipeline runs in your GitLab server.
In this lab we will use the forecast command to forecast potential GitHub Actions usage by computing metrics from the historical pipeline data in our GitLab instance. The metrics will be stored on disk in a markdown file and include job metrics for execution time, queue time, and concurrency. We will look at each of these metrics in more depth later in this lab.
Prerequisites
- Followed the steps here to set up your Codespace environment and start a GitLab server.
- Completed the configure lab.
Perform a forecast
We will need to answer the following questions before running the forecast command:
- What namespace do we want to run the forecast for?
- valet
- What is the date we want to start forecasting from?
- 2022-08-02. This date is needed as it is prior to when the data was seeded in GitLab for these labs. This value defaults to the date one week ago, however, you should use a start date that will show a representative view of typical usage.
- Where do we want to store the results?
- ./tmp/forecast_reports
Steps
-
Navigate to the codespace terminal
-
Run the following command from the root directory:
gh valet forecast gitlab --output-dir ./tmp/forecast_reports --namespace valet --start-date 2022-08-02 -
The command will list all the files written to disk when the command succeeds.
Review the forecast report
The forecast report, logs, and completed job data will be located within the tmp/forecast_reports folder.
- Find the
forecast_report.mdfile in the file explorer. - Right-click the
forecast_report.mdfile and selectOpen Preview. - This file contains metrics used to forecast potential GitHub Actions usage.
Total
The "Total" section of the forecast report contains high level statistics related to all the jobs completed after the --start-date CLI option:
- Job count: **57**
- Pipeline count: **15**
- Execution time
- Total: **135 minutes**
- Median: **0 minutes**
- P90: **7 minutes**
- Min: **0 minutes**
- Max: **10 minutes**
- Queue time
- Median: **0 minutes**
- P90: **5 minutes**
- Min: **0 minutes**
- Max: **42 minutes**
- Concurrent jobs
- Median: **0**
- P90: **0**
- Min: **0**
- Max: **9**
Here are some key terms of items defined in the forecast report:
- The
job countis the total number of completed jobs. - The
pipeline countis the number of unique pipelines used. Execution timedescribes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of GitHub hosted runners.- This metric is correlated to how much you should expect to spend in GitHub Actions. This will vary depending on the hardware used for these minutes and the Actions pricing calculator should be used to estimate a dollar amount.
Queue timemetrics describe the amount of time a job spent waiting for a runner to be available to execute it.Concurrent jobsmetrics describe the amount of jobs running at any given time. This metric can be used to define the number of runners a customer should configure.
Additionally, these metrics are defined for each queue of runners defined in GitLab. This is especially useful if there are a mix of hosted/self-hosted runners or high/low spec machines to see metrics specific to different types of runners.
Forecasting multiple providers
We can examine the available options for the forecast command by running gh valet forecast --help. When you do this you will see the --source-file-path option:
The --source-file-path CLI option can be used to combine data from multiple reports into a single report. This becomes useful if you use multiple CI/CD providers and wanted to get a holistic view of the runner usage. This works by using the .json files generated by forecast commands as space-delimited values for the --source-file-path CLI option. Optionally, this value could be a glob pattern to dynamically specify the list of files (e.g. **/*.json).
Run the following command from within the codespace terminal:
gh valet forecast --source-file-path tmp/**/jobs/*.json -o tmp/combined-forecast
You can now inspect the output of the command to see a forecast report using all of the files matching the tmp/**/jobs/*.json pattern.
Next steps
This concludes all labs for migrating GitLab pipelines to Actions with Valet!

