Skip to content

Commit 5151f0e

Browse files
authored
Merge branch 'master' into get_or_fetch
2 parents 9e9f5e7 + 78db054 commit 5151f0e

File tree

1 file changed

+75
-9
lines changed

1 file changed

+75
-9
lines changed

.github/workflows/release.yml

Lines changed: 75 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,43 @@ jobs:
6464
echo "is_rc=false" >> $GITHUB_OUTPUT
6565
fi
6666
67+
branch_protection_rename:
68+
needs: [safety_check]
69+
runs-on: ubuntu-latest
70+
environment: release
71+
env:
72+
GH_TOKEN: ${{ secrets.ADMIN_GITHUB_TOKEN }}
73+
outputs:
74+
master_rule_id: ${{ steps.get_rule_ids.outputs.master_rule_id }}
75+
master_pattern: ${{ steps.get_rule_ids.outputs.master_pattern }}
76+
v_rule_id: ${{ steps.get_rule_ids.outputs.v_rule_id }}
77+
v_pattern: ${{ steps.get_rule_ids.outputs.v_pattern }}
78+
steps:
79+
- name: Get branch protection rule IDs
80+
id: get_rule_ids
81+
run: |
82+
gh api repos/${{ github.repository }}/branch-protection-rules > rules.json
83+
MASTER_ID=$(jq -r '.[] | select(.pattern == "master") | .id' rules.json)
84+
MASTER_PATTERN=$(jq -r '.[] | select(.pattern == "master") | .pattern' rules.json)
85+
V_ID=$(jq -r '.[] | select(.pattern | test("^v[0-9]+\\.[0-9]+\\.x$")) | .id' rules.json)
86+
V_PATTERN=$(jq -r '.[] | select(.pattern | test("^v[0-9]+\\.[0-9]+\\.x$")) | .pattern' rules.json)
87+
echo "master_rule_id=$MASTER_ID" >> $GITHUB_OUTPUT
88+
echo "master_pattern=$MASTER_PATTERN" >> $GITHUB_OUTPUT
89+
echo "v_rule_id=$V_ID" >> $GITHUB_OUTPUT
90+
echo "v_pattern=$V_PATTERN" >> $GITHUB_OUTPUT
91+
- name: Rename master protection to temp-master
92+
if: ${{ steps.get_rule_ids.outputs.master_rule_id != '' }}
93+
run: |
94+
gh api repos/${{ github.repository }}/branch-protection-rules/${{ steps.get_rule_ids.outputs.master_rule_id }} \
95+
-X PATCH -F pattern="temp-master"
96+
- name: Rename v*.* protection to temp-v
97+
if: ${{ steps.get_rule_ids.outputs.v_rule_id != '' }}
98+
run: |
99+
gh api repos/${{ github.repository }}/branch-protection-rules/${{ steps.get_rule_ids.outputs.v_rule_id }} \
100+
-X PATCH -F pattern="temp-v"
101+
67102
lib_release:
68-
needs: [safety_check,pre_config]
103+
needs: [safety_check, pre_config, branch_protection_rename]
69104
runs-on: ubuntu-latest
70105
environment: release
71106
env:
@@ -119,7 +154,7 @@ jobs:
119154
DATE=$(date +'%Y-%m-%d')
120155
sed -i "/These changes are available on the \`.*\` branch, but have not yet been released\./{N;d;}" CHANGELOG.md
121156
sed -i "s/## \[Unreleased\]/## [$VERSION] - $DATE/" CHANGELOG.md
122-
sed -i "0,/## \[$VERSION\]/ s|## \[$VERSION\]|## [Unreleased]\n\nThese changes are available on the \`$BRANCH\` branch, but have not yet been released.\n\n### Added\n\n### Changed\n\n### Fixed\n\n### Removed\n\n&|" CHANGELOG.md
157+
sed -i "0,/## \[$VERSION\]/ s|## \[$VERSION\]|## [Unreleased]\n\nThese changes are available on the \`$BRANCH\` branch, but have not yet been released.\n\n### Added\n\n### Changed\n\n### Fixed\n\n### Deprecated\n\n### Removed\n\n&|" CHANGELOG.md
123158
sed -i "s|\[unreleased\]:.*|[unreleased]: https://github.com/$REPOSITORY/compare/v$VERSION...HEAD\n[$VERSION]: https://github.com/$REPOSITORY/compare/$(git describe --tags --abbrev=0 @^)...v$VERSION|" CHANGELOG.md
124159
git add CHANGELOG.md
125160
git commit -m "chore(release): update CHANGELOG.md for version $VERSION"
@@ -193,14 +228,15 @@ jobs:
193228
attestations: false
194229
verify-metadata: false
195230

196-
197231
- name: "Echo release url"
198232
run: echo "${{ steps.gh-release.outputs.url }}"
199233

200234
docs_release:
201235
runs-on: ubuntu-latest
202-
needs: [lib_release,pre_config]
203-
if: ${{ needs.pre_config.outputs.is_rc == 'false' || (needs.pre_config.outputs.is_rc == 'true' && endsWith(needs.pre_config.outputs.version, '0rc1')) }}
236+
needs: [lib_release, pre_config, branch_protection_rename, safety_check]
237+
if:
238+
${{ needs.pre_config.outputs.is_rc == 'false' || (needs.pre_config.outputs.is_rc
239+
== 'true' && endsWith(needs.pre_config.outputs.version, '0rc1')) }}
204240
environment: release
205241
steps:
206242
- name: "Sync Versions on Read the Docs"
@@ -228,7 +264,8 @@ jobs:
228264
229265
inform_discord:
230266
runs-on: ubuntu-latest
231-
needs: [lib_release,docs_release,pre_config]
267+
needs:
268+
[lib_release, docs_release, pre_config, branch_protection_rename, safety_check]
232269
environment: release
233270
steps:
234271
- name: "Notify Discord"
@@ -264,7 +301,7 @@ jobs:
264301
265302
determine_milestone_id:
266303
runs-on: ubuntu-latest
267-
needs: [lib_release,pre_config]
304+
needs: [lib_release, pre_config, branch_protection_rename, safety_check]
268305
if: ${{ !contains(needs.pre_config.outputs.version, '-') }}
269306
outputs:
270307
old_milestone_version: ${{ steps.extract_version.outputs.old_milestone_version }}
@@ -286,8 +323,10 @@ jobs:
286323
287324
close_milestone:
288325
runs-on: ubuntu-latest
289-
needs: [determine_milestone_id,pre_config]
290-
if: ${{ !contains(needs.pre_config.outputs.version, 'rc') && endsWith(needs.pre_config.outputs.version, '.0') }}
326+
needs: [determine_milestone_id, pre_config, branch_protection_rename, safety_check]
327+
if:
328+
${{ !contains(needs.pre_config.outputs.version, 'rc') &&
329+
endsWith(needs.pre_config.outputs.version, '.0') }}
291330
environment: release
292331
env:
293332
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -308,3 +347,30 @@ jobs:
308347
run: |
309348
gh extension install valeriobelli/gh-milestone
310349
gh milestone create "${{ needs.determine_milestone_id.outputs.new_milestone_version }}"
350+
351+
branch_protection_restore:
352+
runs-on: ubuntu-latest
353+
needs:
354+
[
355+
branch_protection_rename,
356+
lib_release,
357+
docs_release,
358+
inform_discord,
359+
determine_milestone_id,
360+
close_milestone,
361+
]
362+
environment: release
363+
if: always()
364+
env:
365+
GH_TOKEN: ${{ secrets.ADMIN_GITHUB_TOKEN }}
366+
steps:
367+
- name: Restore master protection pattern
368+
if: ${{ needs.branch_protection_rename.outputs.master_rule_id != '' }}
369+
run: |
370+
gh api repos/${{ github.repository }}/branch-protection-rules/${{ needs.branch_protection_rename.outputs.master_rule_id }} \
371+
-X PATCH -F pattern="${{ needs.branch_protection_rename.outputs.master_pattern }}"
372+
- name: Restore v*.* protection pattern
373+
if: ${{ needs.branch_protection_rename.outputs.v_rule_id != '' }}
374+
run: |
375+
gh api repos/${{ github.repository }}/branch-protection-rules/${{ needs.branch_protection_rename.outputs.v_rule_id }} \
376+
-X PATCH -F pattern="${{ needs.branch_protection_rename.outputs.v_pattern }}"

0 commit comments

Comments
 (0)