From 2e6948aa319ca7d67e691723a57f40891eb5cf51 Mon Sep 17 00:00:00 2001 From: Marcin Krasowski Date: Wed, 16 Sep 2026 08:27:46 +0200 Subject: [PATCH 1/2] ci: skip changeset check on the changesets release PR The release PR opened by changesets/action deletes every .changeset/*.md and bumps package.json + CHANGELOG.md across packages/framework, packages/blocks and friends. That makes changed-packages report requires_changeset=true, while check-changeset looks for an ADDED changeset and finds none, so the job fails on every release PR. Exempt it by head branch (changeset-release/*), the prefix changesets/action owns, alongside the existing renovate[bot] exemption. --- .github/workflows/pull-request.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index b78304b65..4862fc0d3 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -81,10 +81,13 @@ jobs: check-changeset: needs: [skip-duplicate-check, changed-packages] + # Renovate PRs get a changeset generated for them by create-renovate-changeset, + # and the changesets release PR consumes changesets instead of adding one. if: | needs.skip-duplicate-check.outputs.should_skip != 'true' && needs.changed-packages.outputs.requires_changeset == 'true' && - github.event.pull_request.user.login != 'renovate[bot]' + github.event.pull_request.user.login != 'renovate[bot]' && + !startsWith(github.event.pull_request.head.ref, 'changeset-release/') runs-on: ubuntu-latest steps: - name: Checkout repository From 8c42b6bde68cb34b49d3368c6ab605759702f3f0 Mon Sep 17 00:00:00 2001 From: Marcin Krasowski Date: Wed, 16 Sep 2026 08:36:38 +0200 Subject: [PATCH 2/2] ci: scope the release-PR changeset exemption to same-repo branches head.ref is contributor-controlled on fork PRs, so a fork branch named changeset-release/anything would have skipped check-changeset. Pair the prefix match with head.repo.full_name == github.repository, which only the branch changesets/action pushes can satisfy. --- .github/workflows/pull-request.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull-request.yaml b/.github/workflows/pull-request.yaml index 4862fc0d3..228f1a78e 100644 --- a/.github/workflows/pull-request.yaml +++ b/.github/workflows/pull-request.yaml @@ -83,11 +83,14 @@ jobs: needs: [skip-duplicate-check, changed-packages] # Renovate PRs get a changeset generated for them by create-renovate-changeset, # and the changesets release PR consumes changesets instead of adding one. + # head.ref is contributor-controlled on fork PRs, so the release-PR exemption + # also requires the branch to live in this repo. if: | needs.skip-duplicate-check.outputs.should_skip != 'true' && needs.changed-packages.outputs.requires_changeset == 'true' && github.event.pull_request.user.login != 'renovate[bot]' && - !startsWith(github.event.pull_request.head.ref, 'changeset-release/') + !(github.event.pull_request.head.repo.full_name == github.repository && + startsWith(github.event.pull_request.head.ref, 'changeset-release/')) runs-on: ubuntu-latest steps: - name: Checkout repository