Skip to content

Commit 1b5801b

Browse files
authored
[build] Prevent nightly releases during release window (#16948)
* [build] do not release nightly while release is in progress
1 parent 7a674bb commit 1b5801b

1 file changed

Lines changed: 34 additions & 6 deletions

File tree

‎.github/workflows/nightly.yml‎

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,31 @@ permissions:
3333
packages: write
3434

3535
jobs:
36+
check-release:
37+
name: Check Release Window
38+
runs-on: ubuntu-latest
39+
if: github.event.repository.fork == false
40+
outputs:
41+
release-in-progress: ${{ steps.check.outputs.release-in-progress }}
42+
steps:
43+
- name: Check if release ruleset is active
44+
id: check
45+
env:
46+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47+
shell: bash
48+
run: |
49+
set -euo pipefail
50+
# Ruleset 11911909 is "Release In Progress Access" - see restrict-trunk.yml
51+
if ! ENFORCEMENT=$(gh api /repos/${{ github.repository }}/rulesets/11911909 --jq '.enforcement' 2>/dev/null); then
52+
echo "::warning::Failed to check release ruleset, assuming release in progress"
53+
echo "release-in-progress=true" >> "$GITHUB_OUTPUT"
54+
exit 0
55+
fi
56+
echo "release-in-progress=$([[ "$ENFORCEMENT" == "active" ]] && echo 'true' || echo 'false')" >> "$GITHUB_OUTPUT"
57+
3658
ruby:
37-
if: (github.event.repository.fork == false) && (inputs.language == 'ruby' || inputs.language == 'all' || github.event_name == 'schedule')
59+
needs: check-release
60+
if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'ruby' || inputs.language == 'all' || github.event_name == 'schedule')
3861
name: Ruby
3962
uses: ./.github/workflows/bazel.yml
4063
strategy:
@@ -66,7 +89,8 @@ jobs:
6689
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
6790

6891
python:
69-
if: (github.event.repository.fork == false) && (inputs.language == 'python' || inputs.language == 'all' || github.event_name == 'schedule')
92+
needs: check-release
93+
if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'python' || inputs.language == 'all' || github.event_name == 'schedule')
7094
name: Python
7195
uses: ./.github/workflows/bazel.yml
7296
with:
@@ -92,7 +116,8 @@ jobs:
92116
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
93117

94118
java:
95-
if: (github.event.repository.fork == false) && (inputs.language == 'java' || inputs.language == 'all' || github.event_name == 'schedule')
119+
needs: check-release
120+
if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'java' || inputs.language == 'all' || github.event_name == 'schedule')
96121
name: Java
97122
uses: ./.github/workflows/bazel.yml
98123
with:
@@ -118,7 +143,8 @@ jobs:
118143
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
119144

120145
dotnet:
121-
if: (github.event.repository.fork == false) && (inputs.language == 'dotnet' || inputs.language == 'all' || github.event_name == 'schedule')
146+
needs: check-release
147+
if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'dotnet' || inputs.language == 'all' || github.event_name == 'schedule')
122148
name: DotNet
123149
uses: ./.github/workflows/bazel.yml
124150
with:
@@ -145,7 +171,8 @@ jobs:
145171
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
146172

147173
grid:
148-
if: (github.event.repository.fork == false) && (inputs.language == 'grid' || inputs.language == 'all' || github.event_name == 'schedule')
174+
needs: check-release
175+
if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'grid' || inputs.language == 'all' || github.event_name == 'schedule')
149176
name: Grid
150177
permissions:
151178
contents: write # for creating nightly GitHub release
@@ -173,7 +200,8 @@ jobs:
173200
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
174201

175202
javascript:
176-
if: (github.event.repository.fork == false) && (inputs.language == 'javascript' || inputs.language == 'all' || github.event_name == 'schedule')
203+
needs: check-release
204+
if: (github.event.repository.fork == false) && (needs.check-release.outputs.release-in-progress != 'true') && (inputs.language == 'javascript' || inputs.language == 'all' || github.event_name == 'schedule')
177205
name: JavaScript
178206
uses: ./.github/workflows/bazel.yml
179207
with:

0 commit comments

Comments
 (0)