- Updates `scripts/cancel-all-ci-runs.sh` with a safer, more robust version that handles repository detection and `xargs` limitations. - Adds `docs/cancelling-ci-runs.md` explaining how to use the script. - Links the new documentation in `README.md` under Quickstart Commands. Co-authored-by: PR0M3TH3AN <[email protected]>
1.8 KiB
Cancelling CI Runs
This document explains how to use the scripts/cancel-all-ci-runs.sh script to cancel pending or in-progress CI workflows. This is useful when you have a backlog of runs that are no longer needed.
Prerequisites
- GitHub CLI (
gh): You must have the GitHub CLI installed and authenticated.- Install: GitHub CLI Installation Guide
- Authenticate:
gh auth login
Usage
Basic Usage (Repo Root)
From the root of the repository, you can simply run:
./scripts/cancel-all-ci-runs.sh
The script will automatically detect the repository from your git configuration.
Running from Anywhere
You can run the script from any directory by setting the REPO environment variable:
REPO=PR0M3TH3AN/bitvid ./scripts/cancel-all-ci-runs.sh
Previewing Runs
Before cancelling, you might want to see which runs are currently active. You can use the following commands:
# List in-progress runs
gh run list --repo PR0M3TH3AN/bitvid --status in_progress --limit 1000 --json databaseId,headBranch,name,createdAt | jq .
# List queued runs
gh run list --repo PR0M3TH3AN/bitvid --status queued --limit 1000 --json databaseId,headBranch,name,createdAt | jq .
How it Works
The script performs the following steps:
- Checks if
ghis installed. - Determines the repository (either from
REPOenv var orgh repo view). - Fetches IDs of all runs with status
in_progressandqueued. - Cancels them one by one using
gh run cancel.
Why use this script?
Trying to cancel runs in bulk using xargs gh run cancel directly can fail because some versions of gh only accept a single run ID per invocation. This script uses xargs -n1 to ensure gh run cancel is called individually for each run ID, preventing "accepts at most 1 arg(s)" errors.