From f3be80c40bd79e4fc9b80ccdd65cf92e3e33b477 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 31 Jan 2025 19:07:16 -0800 Subject: [PATCH] workflows/premerge: Cancel in progress jobs when a PR is merged --- .github/workflows/premerge.yaml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml index 91aa3eefde372..b268f1faab989 100644 --- a/.github/workflows/premerge.yaml +++ b/.github/workflows/premerge.yaml @@ -5,6 +5,15 @@ permissions: on: pull_request: + types: + - opened + - synchronize + - reopened + # When a PR is closed, we still start this workflow, but then skip + # all the jobs, which makes it effectively a no-op. The reason to + # do this is that it allows us to take advantage of concurrency groups + # to cancel in progress CI jobs whenever the PR is closed. + - closed paths: - .github/workflows/premerge.yaml push: @@ -14,7 +23,9 @@ on: jobs: premerge-checks-linux: - if: github.repository_owner == 'llvm' + if: >- + github.repository_owner == 'llvm' && + (github.event_name != 'pull_request' || github.event.action != 'closed') runs-on: llvm-premerge-linux-runners concurrency: group: ${{ github.workflow }}-linux-${{ github.event.pull_request.number || github.sha }} @@ -73,7 +84,9 @@ jobs: ./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})" premerge-checks-windows: - if: github.repository_owner == 'llvm' + if: >- + github.repository_owner == 'llvm' && + (github.event_name != 'pull_request' || github.event.action != 'closed') runs-on: llvm-premerge-windows-runners concurrency: group: ${{ github.workflow }}-windows-${{ github.event.pull_request.number || github.sha }} @@ -141,7 +154,8 @@ jobs: if: >- github.repository_owner == 'llvm' && (startswith(github.ref_name, 'release/') || - startswith(github.base_ref, 'release/')) + startswith(github.base_ref, 'release/')) && + (github.event_name != 'pull_request' || github.event.action != 'closed') steps: - name: Checkout LLVM uses: actions/checkout@v4