about summary refs log tree commit diff
path: root/.github
diff options
context:
space:
mode:
authorSilvan Mosberger <silvan.mosberger@tweag.io>2024-04-26 22:59:58 +0200
committerSilvan Mosberger <silvan.mosberger@tweag.io>2024-05-14 17:41:26 +0200
commit6fc3ccd95ada9aa6a86459f5dae638f55c9ea964 (patch)
treed78cabb9f6241291701965dad194fc555fd663d1 /.github
parentb0c0fba855b854e15619d4c59f7c9d3e29459c4b (diff)
workflows/check-by-name: Skip instead of canceling on conflicts
This avoids sending emails when there's merge conflicts.
The check will appear to be green,
but it doesn't matter since the PR can't be merged anyways.

Unfortunately there's no better way to do this right now: https://github.com/actions/runner/issues/662
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/check-by-name.yml21
1 files changed, 8 insertions, 13 deletions
diff --git a/.github/workflows/check-by-name.yml b/.github/workflows/check-by-name.yml
index 7482179899c09..e857c88f746d3 100644
--- a/.github/workflows/check-by-name.yml
+++ b/.github/workflows/check-by-name.yml
@@ -16,9 +16,7 @@ on:
     # so it shouldn't be a problem
     types: [opened, synchronize, reopened, edited]
 
-permissions:
-  # We need this permission to cancel the workflow run if there's a merge conflict
-  actions: write
+permissions: {}
 
 # Create a check-by-name concurrency group based on the pull request number. if
 # an event triggers a run on the same PR while a previous run is still in
@@ -79,31 +77,27 @@ jobs:
 
           if [[ "$mergeable" == "true" ]]; then
             echo "The PR can be merged, checking the merge commit $mergedSha"
+            echo "mergedSha=$mergedSha" >> "$GITHUB_ENV"
           else
-            echo "The PR cannot be merged, it has a merge conflict, cancelling the workflow.."
-            gh api \
-              --method POST \
-              -H "Accept: application/vnd.github+json" \
-              -H "X-GitHub-Api-Version: 2022-11-28" \
-              /repos/"$GITHUB_REPOSITORY"/actions/runs/"$GITHUB_RUN_ID"/cancel
-            sleep 60
-            # If it's still not canceled after a minute, something probably went wrong, just exit
-            exit 1
+            echo "The PR cannot be merged, it has a merge conflict, skipping the rest.."
           fi
-          echo "mergedSha=$mergedSha" >> "$GITHUB_ENV"
       - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
+        if: env.mergedSha
         with:
           # pull_request_target checks out the base branch by default
           ref: ${{ env.mergedSha }}
           # Fetches the merge commit and its parents
           fetch-depth: 2
       - name: Checking out base branch
+        if: env.mergedSha
         run: |
           base=$(mktemp -d)
           git worktree add "$base" "$(git rev-parse HEAD^1)"
           echo "base=$base" >> "$GITHUB_ENV"
       - uses: cachix/install-nix-action@8887e596b4ee1134dae06b98d573bd674693f47c # v26
+        if: env.mergedSha
       - name: Fetching the pinned tool
+        if: env.mergedSha
         # Update the pinned version using pkgs/test/check-by-name/update-pinned-tool.sh
         run: |
           # The pinned version of the tooling to use
@@ -114,6 +108,7 @@ jobs:
           # Adds a result symlink as a GC root
           nix-store --realise "$toolPath" --add-root result
       - name: Running nixpkgs-check-by-name
+        if: env.mergedSha
         env:
           # Force terminal colors to be enabled. The library that
           # nixpkgs-check-by-name uses respects: https://bixense.com/clicolors/