From 6b2841285cfbef5fa7e0b7f21c142edabaf35a00 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 26 Aug 2025 10:59:01 -0700 Subject: [PATCH 1/4] feat(ci): add shared workflow for "next release" label --- .github/workflows/release-checks.yml | 43 ++++++++++++++++++++++++++++ .github/workflows/tests.yml | 5 ++++ 2 files changed, 48 insertions(+) create mode 100644 .github/workflows/release-checks.yml diff --git a/.github/workflows/release-checks.yml b/.github/workflows/release-checks.yml new file mode 100644 index 0000000..5ca4215 --- /dev/null +++ b/.github/workflows/release-checks.yml @@ -0,0 +1,43 @@ +name: Release Checks +on: + workflow_call: + inputs: + next-release-label-check: + type: boolean + default: false + pull_request: + +permissions: + contents: read + +jobs: + next-release-label-check: + name: Check for "next release" labels + runs-on: ubuntu-latest + # if: github.event.pull_request.user.login == 'release-please[bot]' && inputs.next-release-label-check + if: inputs.next-release-label-check + steps: + - + name: Check for "next release" label + uses: actions/github-script@v6 + with: + script: | + const { data: pulls } = await github.rest.pulls.list({ + owner: context.repo.owner, + repo: context.repo.repo, + state: 'open', + }); + + // check for open PRs which contain the 'next release' label + const openPRs = pulls.filter(pr => + pr.labels.some(label => label.name === 'next release') + ).map(pr => ` - #${pr.number}: ${pr.title}`); + + if (openPRs.length > 0) { + const errorMessage = 'Found "next release" label on the following open pull requests:\n' + + openPRs.join('\n') + + '\nPlease merge them before release.'; + core.setFailed(errorMessage); + } else { + console.log('No "next release" label found on any open pull requests!'); + } diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 636e786..e8fbe7d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -48,6 +48,11 @@ jobs: static-analysis: uses: ./.github/workflows/static-analysis.yml + release_checks: + uses: ./.github/workflows/release-checks.yml + with: + next-release-label-check: true + build_docs: uses: ./.github/workflows/doctum.yml with: From 2be8ac3159e763c8dfa4ba7ecc94ef69f91c43e3 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Tue, 26 Aug 2025 11:02:29 -0700 Subject: [PATCH 2/4] it worked, so we can now run only on release PRs --- .github/workflows/release-checks.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release-checks.yml b/.github/workflows/release-checks.yml index 5ca4215..e091815 100644 --- a/.github/workflows/release-checks.yml +++ b/.github/workflows/release-checks.yml @@ -14,8 +14,7 @@ jobs: next-release-label-check: name: Check for "next release" labels runs-on: ubuntu-latest - # if: github.event.pull_request.user.login == 'release-please[bot]' && inputs.next-release-label-check - if: inputs.next-release-label-check + if: github.event.pull_request.user.login == 'release-please[bot]' && inputs.next-release-label-check steps: - name: Check for "next release" label From a03e9f18e99f4f029f0dc1c8e56adcc21ae5276d Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Wed, 27 Aug 2025 10:08:34 -0700 Subject: [PATCH 3/4] remove release-please check from shared workflow --- .github/workflows/release-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-checks.yml b/.github/workflows/release-checks.yml index e091815..d2a32b2 100644 --- a/.github/workflows/release-checks.yml +++ b/.github/workflows/release-checks.yml @@ -14,7 +14,7 @@ jobs: next-release-label-check: name: Check for "next release" labels runs-on: ubuntu-latest - if: github.event.pull_request.user.login == 'release-please[bot]' && inputs.next-release-label-check + if: inputs.next-release-label-check steps: - name: Check for "next release" label From 32134a5ad8107bb580a27af6fa8fa8382d8fea04 Mon Sep 17 00:00:00 2001 From: Brent Shaffer Date: Wed, 27 Aug 2025 10:32:06 -0700 Subject: [PATCH 4/4] consistent job name --- .github/workflows/release-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-checks.yml b/.github/workflows/release-checks.yml index d2a32b2..0153506 100644 --- a/.github/workflows/release-checks.yml +++ b/.github/workflows/release-checks.yml @@ -12,7 +12,7 @@ permissions: jobs: next-release-label-check: - name: Check for "next release" labels + name: Check for "next release" label runs-on: ubuntu-latest if: inputs.next-release-label-check steps: