1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
name: release-plz
# Owns crates.io publishing + changelog + version bumps for the shrinkpath
# crate. Configuration lives in release-plz.toml.
#
# On every push to main:
# - release-plz-pr: opens/updates a human-reviewed version-bump PR
# - release-plz-release: publishes the crate when its version is ahead of
# crates.io and creates the git tag
#
# release-plz cuts a package-prefixed tag (shrinkpath-v*), which never matches
# a binary-release `v[0-9]*` trigger, so library publishing stays decoupled.
permissions:
contents: write
pull-requests: write
on:
push:
branches:
concurrency:
group: release-plz-${{ github.ref }}
cancel-in-progress: false
jobs:
release-plz-release:
name: release-plz release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- name: release-plz release
uses: release-plz/action@e8792575c7f2366cf6ff3ccc33ead9ace5b691c7 # v0.5.130
with:
command: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
release-plz-pr:
name: release-plz PR
runs-on: ubuntu-latest
# Serialize PR updates so concurrent pushes don't fight over the release PR.
concurrency:
group: release-plz-pr
cancel-in-progress: false
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- name: release-plz release-pr
uses: release-plz/action@e8792575c7f2366cf6ff3ccc33ead9ace5b691c7 # v0.5.130
with:
command: release-pr
env:
# PRs created with the built-in GITHUB_TOKEN do NOT trigger other workflows
# (CI won't run on the release PR). Set a RELEASE_PLZ_TOKEN secret (a
# fine-grained PAT or a GitHub App token) to get CI on the release PR; until
# then this falls back to GITHUB_TOKEN and works without checks.
GITHUB_TOKEN: ${{ secrets.RELEASE_PLZ_TOKEN || secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}