From c27f2b846705042afab3f16a95652e31c9fbf2e3 Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Sat, 25 Jul 2026 03:56:10 +0200 Subject: [PATCH] ci: stop cancelling master runs, and revert the release job conditions The empty homebrew tap was never a condition problem. The release job ran, the matrix built all six targets, and the tap step then failed with "Input required and not supplied: token" because HOMEBREW_TAP_TOKEN resolves to an empty string. Four rounds of edits to those `if` expressions chased a symptom, so they go back to what they were. What stays is the CI concurrency change: a cancelled master run leaves the release gate waiting on a CI run for a commit nothing will push again. --- .github/workflows/ci.yml | 4 ---- .github/workflows/release.yml | 18 ++---------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3687606..29f4526 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,10 +9,6 @@ on: pull_request: branches: ['**'] -# Superseding a branch run saves the matrix from running twice, but a master run -# must be allowed to finish: the release workflow gates on finding a completed -# CI run for its own commit, and nothing ever pushes that commit again. A -# cancelled run there strands the release until it times out. concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3fb084..db2ad6c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -128,14 +128,6 @@ jobs: # refuse anything that is not a literal version tag. [[ "$tag" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?$ ]] || { echo "::error::unexpected tag: $tag"; exit 1; } echo "tag=$tag" >> "$GITHUB_OUTPUT" - echo "resolved tag: '$tag'" - - # The downstream jobs gate on these, and a silent empty value here cost - # four release runs, so say them out loud. - - name: Report what the downstream jobs will see - run: | - echo "created = '${{ steps.release-plz.outputs.releases_created }}'" - echo "tag = '${{ steps.tag.outputs.tag }}'" # Attaches downloadable binaries to the release GitHub just created, or to an # existing tag when dispatched manually with `tag` (recovering a target that @@ -143,13 +135,7 @@ jobs: binaries: name: ${{ matrix.target }} needs: release - # `github.event_name` is the one context proven to evaluate here: ci-gate - # uses it and skips correctly on dispatch. `inputs.tag`, - # `github.event.inputs.tag` and `needs.release.outputs.tag` were all tried - # and all left this job skipped, which is how v7.0.0 shipped to crates.io - # with an empty homebrew tap. A dispatch without a tag now fails loudly in - # the checkout below rather than skipping in silence. - if: needs.release.outputs.created == 'true' || github.event_name == 'workflow_dispatch' + if: needs.release.outputs.created == 'true' || inputs.tag != '' runs-on: ${{ matrix.os }} strategy: # One flaky cross-linker must not hold back the five targets that built. @@ -206,7 +192,7 @@ jobs: homebrew: name: Homebrew tap needs: [release, binaries] - if: needs.release.outputs.created == 'true' || github.event_name == 'workflow_dispatch' + if: needs.release.outputs.created == 'true' || inputs.tag != '' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4