Skip to content

Commit f9a2287

Browse files
committed
Use release-plz to check if we want to release
Gate the actual release behind a github actions workflow approval.
1 parent 6685811 commit f9a2287

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

.github/dependabot.yml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "github-actions"
4+
directory: "/"
5+
# Check for updates every Monday
6+
schedule:
7+
interval: "weekly"

.github/workflows/release-plz.yml

+56
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ on:
55
branches:
66
- master
77

8+
env:
9+
RELEASE_PLZ_VERSION: "0.3.130"
10+
811
jobs:
912
release-plz-pr:
1013
permissions:
@@ -28,7 +31,59 @@ jobs:
2831
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
2932

3033
# Release unpublished packages.
34+
release-plz-release-check:
35+
name: Release-plz release check
36+
runs-on: ubuntu-latest
37+
outputs:
38+
releases: ${{ steps.release-plz.outputs.releases }}
39+
releases_created: ${{ steps.release-plz.outputs.releases_created }}
40+
permissions:
41+
contents: write
42+
steps:
43+
- name: Checkout repository
44+
uses: actions/checkout@v4
45+
with:
46+
fetch-depth: 0
47+
- name: Install Rust toolchain
48+
uses: dtolnay/rust-toolchain@stable
49+
- name: Install binaries
50+
uses: taiki-e/install-action@v2
51+
with:
52+
tool: release-plz@${{env.RELEASE_PLZ_VERSION}}
53+
- name: Run release-plz
54+
id: release-plz
55+
shell: bash
56+
# Modified from https://github.com/release-plz/action/blob/main/action.yml
57+
run: |
58+
release_output=$(release-plz release\
59+
--git-token "${GITHUB_TOKEN}"\
60+
--dry-run\
61+
-o json)
62+
echo "release_output: $release_output"
63+
releases=$(echo $release_output | jq -c .releases)
64+
echo "releases=$releases" >> "$GITHUB_OUTPUT"
65+
releases_length=$(echo "$releases" | jq 'length')
66+
if [ "$releases_length" != "0" ]; then
67+
releases_created=true
68+
else
69+
releases_created=false
70+
fi
71+
echo "releases_created=$releases_created" >> "$GITHUB_OUTPUT"
72+
env:
73+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
74+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
75+
- name: Read release output
76+
env:
77+
RELEASES: ${{ steps.release-plz.outputs.releases }}
78+
RELEASES_CREATED: ${{ steps.release-plz.outputs.releases_created }}
79+
run: |
80+
set -e
81+
echo "releases: $RELEASES"
82+
echo "releases_created: $RELEASES_CREATED" # example: true
83+
3184
release-plz-release:
85+
needs: ["release-plz-release-check"]
86+
if: needs.release-plz-release-check.outputs.releases_created == 'true'
3287
name: Release-plz release
3388
environment: "crates.io"
3489
runs-on: ubuntu-latest
@@ -45,6 +100,7 @@ jobs:
45100
uses: release-plz/[email protected]
46101
with:
47102
command: release
103+
version: ${{env.RELEASE_PLZ_VERSION}}
48104
env:
49105
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50106
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

0 commit comments

Comments
 (0)