Repository navigation
85 lines (74 loc) · 2.76 KB
/
Copy pathprepare-release.yml
File metadata and controls
85 lines (74 loc) · 2.76 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
name: Prepare Release
on:
workflow_dispatch:
inputs:
version_bump:
description: 'Version bump type'
required: true
default: 'patch'
type: 'choice'
options:
- patch
- minor
- major
custom_version:
description: 'Custom version (optional, overrides version_bump if provided)'
required: false
type: 'string'
release_notes:
description: 'Additional notes for the GitHub release'
required: false
type: 'string'
jobs:
prepare-release:
name: Prepare Release PR
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/free-disk-space
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-release
run: cargo install cargo-release
- name: Configure Git
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
- name: Execute version bump
id: bump
run: |
LEVEL="${{ github.event.inputs.version_bump }}"
CUSTOM_VERSION="${{ github.event.inputs.custom_version }}"
if [ -n "$CUSTOM_VERSION" ]; then
cargo release "$CUSTOM_VERSION" --execute --no-confirm --no-push --no-tag --no-publish
echo "new_version=$CUSTOM_VERSION" >> $GITHUB_OUTPUT
else
cargo release $LEVEL --execute --no-confirm --no-push --no-tag --no-publish
NEW_VERSION=$(grep -m 1 'version = ' Cargo.toml | sed 's/version = "\(.*\)"/\1/')
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@v8
with:
token: ${{ secrets.PAT_TOKEN }}
branch: release/v${{ steps.bump.outputs.new_version }}
title: "chore: release v${{ steps.bump.outputs.new_version }}"
body: |
## Release v${{ steps.bump.outputs.new_version }}
This PR bumps all workspace crate versions to `${{ steps.bump.outputs.new_version }}`.
${{ github.event.inputs.release_notes }}
---
**On merge**, the `publish.yml` workflow will automatically:
1. Publish all crates to crates.io
2. Create a GitHub Release with tag `v${{ steps.bump.outputs.new_version }}`
commit-message: "chore: release v${{ steps.bump.outputs.new_version }}"
labels: release
delete-branch: true