From 8b5f445f7c6a586cfa196a9e92d4e46afb3f82ed Mon Sep 17 00:00:00 2001 From: Stackwright Bot Date: Fri, 15 May 2026 12:31:42 -0400 Subject: [PATCH] fix(ci): remove skip-ci flags from automated commit messages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automated commits on dev (prerelease version bumps, back-merge re-entry) used the GitHub skip-ci flag in their messages to suppress CI reruns. However, GitHub scans the ENTIRE commit message body, not just the subject line — and standard merge commits to main auto-populate their body with the list of individual PR commits. This caused the skip flag to appear in the main merge commit body, suppressing ALL workflow triggers on every dev-to-main merge. Remove skip-ci flags from all automated commit messages in prerelease.yml and release.yml. Loop prevention is handled entirely by the existing job-level if conditions, which is the correct mechanism. Update the startsWith guard in release.yml to match the new commit message string. Root cause confirmed: PRs #410 and #419 both show zero workflow runs on main because their merge commit bodies contained skip-ci lines from automated dev commits. --- .github/workflows/prerelease.yml | 4 ++-- .github/workflows/release.yml | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 4b0958c2..3eeabdec 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -48,7 +48,7 @@ jobs: git config user.name "github-actions" git config user.email "github-actions@github.com" git add .changeset/pre.json - git commit -m "chore: enter prerelease mode [skip ci]" + git commit -m "chore: enter prerelease mode" git push origin dev fi @@ -66,7 +66,7 @@ jobs: - name: Push changes back to dev run: | git add . - git commit -m "chore: bump prerelease versions [skip ci]" || echo "No changes to commit" + git commit -m "chore: bump prerelease versions" || echo "No changes to commit" git push origin dev - name: Publish prereleases with tag 'alpha' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ef72acaa..84e4eb3e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,14 +18,12 @@ permissions: jobs: release: runs-on: ubuntu-latest - # Use startsWith (not contains) to check ONLY the commit title for [skip ci]. - # Squash merges embed individual commit messages in the body, and automated - # commits (prerelease bumps, etc.) include [skip ci] — which would incorrectly - # suppress the release workflow if we used contains() on the full body. + # startsWith guards against the release workflow re-triggering on its own + # version bump commit. Must stay in sync with the commit message below. if: >- ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && - !startsWith(github.event.head_commit.message, 'chore: version packages for release [skip ci]')) }} + !startsWith(github.event.head_commit.message, 'chore: version packages for release')) }} steps: - name: Generate PerAsperaCI token id: app-token @@ -120,7 +118,7 @@ jobs: git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add . - git commit -m "chore: version packages for release [skip ci]" || echo "No changes to commit" + git commit -m "chore: version packages for release" || echo "No changes to commit" git push origin main - name: Back-merge into dev @@ -141,7 +139,7 @@ jobs: if [ ! -f ".changeset/pre.json" ]; then pnpm changeset pre enter alpha git add .changeset/pre.json - git commit -m "chore: re-enter prerelease mode after back-merge [skip ci]" + git commit -m "chore: re-enter prerelease mode after back-merge" fi # Force push is required after a rebase to rewrite dev's remote history. git push origin dev --force-with-lease