From 8492984d407b59342dfba2685a6d802e21a6c8d8 Mon Sep 17 00:00:00 2001 From: Titus Fortner Date: Sun, 18 Jan 2026 23:38:35 -0600 Subject: [PATCH 1/2] [build] do not release nightly while release is in progress --- .github/workflows/nightly.yml | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 88858036a9c31..c563249620f87 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -33,8 +33,24 @@ permissions: packages: write jobs: + check-release: + name: Check Release Window + runs-on: ubuntu-latest + if: github.event.repository.fork == false + outputs: + release-in-progress: ${{ steps.check.outputs.releasing }} + steps: + - name: Check if release ruleset is active + id: check + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + ENFORCEMENT=$(gh api /repos/${{ github.repository }}/rulesets/11911909 --jq '.enforcement') + echo "releasing=$([[ "$ENFORCEMENT" == "active" ]] && echo 'true' || echo 'false')" >> "$GITHUB_OUTPUT" + ruby: - if: (github.event.repository.fork == false) && (inputs.language == 'ruby' || inputs.language == 'all' || github.event_name == 'schedule') + needs: check-release + if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'ruby' || inputs.language == 'all' || github.event_name == 'schedule') name: Ruby uses: ./.github/workflows/bazel.yml strategy: @@ -66,7 +82,8 @@ jobs: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} python: - if: (github.event.repository.fork == false) && (inputs.language == 'python' || inputs.language == 'all' || github.event_name == 'schedule') + needs: check-release + if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'python' || inputs.language == 'all' || github.event_name == 'schedule') name: Python uses: ./.github/workflows/bazel.yml with: @@ -92,7 +109,8 @@ jobs: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} java: - if: (github.event.repository.fork == false) && (inputs.language == 'java' || inputs.language == 'all' || github.event_name == 'schedule') + needs: check-release + if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'java' || inputs.language == 'all' || github.event_name == 'schedule') name: Java uses: ./.github/workflows/bazel.yml with: @@ -118,7 +136,8 @@ jobs: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} dotnet: - if: (github.event.repository.fork == false) && (inputs.language == 'dotnet' || inputs.language == 'all' || github.event_name == 'schedule') + needs: check-release + if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'dotnet' || inputs.language == 'all' || github.event_name == 'schedule') name: DotNet uses: ./.github/workflows/bazel.yml with: @@ -145,7 +164,8 @@ jobs: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} grid: - if: (github.event.repository.fork == false) && (inputs.language == 'grid' || inputs.language == 'all' || github.event_name == 'schedule') + needs: check-release + if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'grid' || inputs.language == 'all' || github.event_name == 'schedule') name: Grid permissions: contents: write # for creating nightly GitHub release @@ -173,7 +193,8 @@ jobs: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} javascript: - if: (github.event.repository.fork == false) && (inputs.language == 'javascript' || inputs.language == 'all' || github.event_name == 'schedule') + needs: check-release + if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'javascript' || inputs.language == 'all' || github.event_name == 'schedule') name: JavaScript uses: ./.github/workflows/bazel.yml with: From 9efb5d8309340a45f1ab828081161934007853d5 Mon Sep 17 00:00:00 2001 From: Titus Fortner Date: Mon, 19 Jan 2026 11:57:54 -0600 Subject: [PATCH 2/2] update with feedback --- .github/workflows/nightly.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index c563249620f87..3512e9b93909b 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -38,15 +38,22 @@ jobs: runs-on: ubuntu-latest if: github.event.repository.fork == false outputs: - release-in-progress: ${{ steps.check.outputs.releasing }} + release-in-progress: ${{ steps.check.outputs.release-in-progress }} steps: - name: Check if release ruleset is active id: check env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash run: | - ENFORCEMENT=$(gh api /repos/${{ github.repository }}/rulesets/11911909 --jq '.enforcement') - echo "releasing=$([[ "$ENFORCEMENT" == "active" ]] && echo 'true' || echo 'false')" >> "$GITHUB_OUTPUT" + set -euo pipefail + # Ruleset 11911909 is "Release In Progress Access" - see restrict-trunk.yml + if ! ENFORCEMENT=$(gh api /repos/${{ github.repository }}/rulesets/11911909 --jq '.enforcement' 2>/dev/null); then + echo "::warning::Failed to check release ruleset, assuming release in progress" + echo "release-in-progress=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + echo "release-in-progress=$([[ "$ENFORCEMENT" == "active" ]] && echo 'true' || echo 'false')" >> "$GITHUB_OUTPUT" ruby: needs: check-release