From a8382d2f36850fca572e33b9a40bfbae2e6dbbfd Mon Sep 17 00:00:00 2001 From: woksin Date: Wed, 26 Aug 2026 10:24:29 +0200 Subject: [PATCH] chore: adopt the organization reusable workflows Converts copied workflow logic to thin callers of Cratis/Workflows: release-intent gate and/or documentation-build trigger. Per-repository copies of the gate drifted apart and caused the 2026-08-25 unintended releases; the policy now lives in one place. Where this repository has never produced a workflow artifact, the cleanup-pr-artifacts workflow is removed as dead weight. --- .github/workflows/verify-semver-label.yml | 35 ++++------------------- 1 file changed, 6 insertions(+), 29 deletions(-) diff --git a/.github/workflows/verify-semver-label.yml b/.github/workflows/verify-semver-label.yml index 1ab872e..fc6e62e 100644 --- a/.github/workflows/verify-semver-label.yml +++ b/.github/workflows/verify-semver-label.yml @@ -1,12 +1,10 @@ name: Verify Semver Label -# A merged pull request with no major/minor/patch label produces a Publish run that reports success while -# skipping every publish step, because the release action resolves should-publish to false. That reads as a -# release having happened when nothing was published. Requiring the label here turns a silent non-release into -# a visible failure before the merge, where it costs nothing to fix. -# -# Triggered on labeled/unlabeled as well as the usual events, so adding the label re-runs the check rather than -# leaving a red cross behind that only a push would clear. +# Thin caller of the organization-wide release-intent gate. The policy - which +# labels are accepted and what the errors say - lives in +# Cratis/Workflows/.github/workflows/verify-release-intent.yml. Thirty diverging +# per-repository copies of that logic are how the 2026-08-25 unintended releases +# happened; do not reintroduce logic here. concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true @@ -25,25 +23,4 @@ permissions: jobs: verify: - runs-on: ubuntu-latest - timeout-minutes: 15 - - steps: - - name: Require exactly one semantic version label - env: - LABELS: ${{ toJSON(github.event.pull_request.labels.*.name) }} - run: | - count=$(printf '%s' "$LABELS" | jq '[.[] | select(. == "major" or . == "minor" or . == "patch" or . == "no-release")] | length') - - if [ "$count" -eq 1 ]; then - echo "Found one semantic version label." - exit 0 - fi - - if [ "$count" -eq 0 ]; then - echo "::error::This pull request has no release intent label. Add exactly one of major, minor, patch, or no-release. Without one, merging produces a Publish run that succeeds while skipping every publish step, so no release is cut and nothing is published. (Documentation-only PRs are exempt — see pull-requests.md.)" - else - echo "::error::This pull request carries $count release intent labels. Exactly one of major, minor, patch, or no-release is required, since the release intent cannot be derived from more than one." - fi - - exit 1 + uses: Cratis/Workflows/.github/workflows/verify-release-intent.yml@main