ci: cancel stale pull request workflow runs

The CI workflow groups runs by commit hash, so every push to a pull
request starts a separate workflow run. Group pull request runs by pull
request number and cancel runs superseded by a newer push, while keeping
push events grouped by commit hash for the skip-if-redundant behavior.

Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Harald Nordgren
2026-07-31 10:10:41 +00:00
committed by Junio C Hamano
parent e9019fcafe
commit c6b106fd8c

View File

@@ -5,18 +5,20 @@ on: [push, pull_request]
env:
DEVELOPER: 1
# If more than one workflow run is triggered for the very same commit hash
# (which happens when multiple branches pointing to the same commit), only
# the first one is allowed to run, the second will be kept in the "queued"
# state. This allows a successful completion of the first run to be reused
# in the second run via the `skip-if-redundant` logic in the `config` job.
# For pull requests, only the latest workflow run is allowed to proceed.
# Older runs are canceled when a new revision is pushed.
#
# The only caveat is that if a workflow run is triggered for the same commit
# hash that another run is already being held, that latter run will be
# canceled. For more details about the `concurrency` attribute, see:
# For pushes, if more than one workflow run is triggered for the very same
# commit hash (which happens when multiple branches point to the same commit),
# only the first one is allowed to run. This allows a successful completion of
# the first run to be reused in the second run via the `skip-if-redundant`
# logic in the `config` job.
#
# For more details about the `concurrency` attribute, see:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
concurrency:
group: ${{ github.sha }}
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
ci-config: