-
Notifications
You must be signed in to change notification settings - Fork 0
141 lines (122 loc) · 4.91 KB
/
Copy pathbump-version-rust.yml
File metadata and controls
141 lines (122 loc) · 4.91 KB
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: bump version / rust
on:
workflow_call:
inputs:
package:
description: Cargo package
required: true
type: string
level:
# https://github.com/crate-ci/cargo-release/blob/master/docs/reference.md#bump-level
description: Bump level
required: true
type: string
secrets:
APP_ID:
description: GitHub App installation ID
required: true
APP_PRIVATE_KEY:
description: GitHub App private key
required: true
env:
CARGO_INCREMENTAL: 0
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
RUSTFLAGS: -D warnings
jobs:
prepare_next_release:
name: prepare next release
runs-on: ubuntu-latest
steps:
- name: Validate bump level
env:
INPUTS_LEVEL: ${{ inputs.level }}
run: |
case "${INPUTS_LEVEL}" in
major|minor|patch|release|rc|beta|alpha) ;;
*)
echo "::error::Invalid level '${INPUTS_LEVEL}' (expected major, minor, patch, release, rc, beta, or alpha)."
exit 1
;;
esac
- id: generate_token
name: Generate a GitHub App token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
permission-contents: write
permission-pull-requests: write
- name: Checkout source code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
token: ${{ steps.generate_token.outputs.token }}
ref: main
fetch-depth: 0
persist-credentials: false
- name: Add Toolbox Envy to PATH
uses: EarthmanMuons/toolbox-envy/.github/actions/add-to-path@main
with:
include_bins: |
common
rust
- name: Install stable Rust toolchain
uses: dtolnay/rust-toolchain@2c7215f132e9ebf062739d9130488b56d53c060c
with:
toolchain: stable
- name: Cache dependencies
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4
with:
shared-key: stable-ubuntu-latest
timeout-minutes: 5
- name: Install cargo-release
uses: taiki-e/install-action@c7eb1735f09259a5035e8e5d44b1406b1cddc0fb
with:
tool: cargo-release
- name: Bump ${{ inputs.level }} version for package ${{ inputs.package }}
env:
INPUTS_PACKAGE: ${{ inputs.package }}
INPUTS_LEVEL: ${{ inputs.level }}
run: cargo release version -v --execute --no-confirm --package "${INPUTS_PACKAGE}" "${INPUTS_LEVEL}"
- name: Perform pre-release replacements
env:
INPUTS_PACKAGE: ${{ inputs.package }}
run: cargo release replace -v --execute --no-confirm --package "${INPUTS_PACKAGE}"
- name: Fix up CHANGELOG formatting
run: npx --yes prettier@latest --color --prose-wrap always --write -- **/CHANGELOG.md
- id: version
name: Get the new release version
env:
INPUTS_PACKAGE: ${{ inputs.package }}
run: |
echo "release_version=$(get-project-version "$INPUTS_PACKAGE")" >>"$GITHUB_OUTPUT"
- id: cpr
name: Create pull request
uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1
with:
token: ${{ steps.generate_token.outputs.token }}
branch: release/bump-version
branch-suffix: timestamp
commit-message: Release ${{ inputs.package }} v${{ steps.version.outputs.release_version }}
title: Prepare the ${{ inputs.package }} v${{ steps.version.outputs.release_version }} ${{ inputs.level }} release
body: |-
This PR was automatically created by the [bump-version](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) workflow, which ran the following commands:
```
$ cargo release version --execute --package ${{ inputs.package }} ${{ inputs.level }}
$ cargo release replace --execute --package ${{ inputs.package }}
$ prettier --prose-wrap always --write -- **/CHANGELOG.md
```
**Please review the submitted changes.**
Once this PR is merged into the _main_ branch, an automated process will tag the commit, which triggers the next step in the release process for this package.
- name: Annotate workflow run with PR URL
env:
INPUTS_PACKAGE: ${{ inputs.package }}
PULL_REQUEST_URL: ${{ steps.cpr.outputs.pull-request-url }}
RELEASE_VERSION: ${{ steps.version.outputs.release_version }}
run: |
set -euo pipefail
{
echo "### :shipit: Opened pull request for ${INPUTS_PACKAGE} release v${RELEASE_VERSION}:"
echo
echo "- ${PULL_REQUEST_URL}"
} >>"$GITHUB_STEP_SUMMARY"