---
name: release-pr
permissions:
contents: read
on:
push:
branches:
- main
concurrency:
group: release-pr
cancel-in-progress: true
env:
FORCE_COLOR: '1'
CLICOLOR: '1'
jobs:
prepare-release:
name: Prepare Release PR
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
fetch-depth: 0
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install git-cliff
uses: taiki-e/install-action@509565405a8a987e73cf742e26b26dcc72c4b01a with:
tool: git-cliff,typos
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf with:
app-id: ${{ secrets.RELEASE_APP_ID }}
private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
- name: Prepare release
id: prepare
run: ./scripts/ci/prepare-release
- name: Create or update release PR
if: steps.prepare.outputs.skip != 'true'
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 with:
token: ${{ steps.app-token.outputs.token }}
branch: release
base: main
draft: always-true
title: Release v${{ steps.prepare.outputs.version }}
commit-message: 'chore(release): prepare v${{ steps.prepare.outputs.version }}'
body-path: .github/release-pr-body.md
add-paths: |
Cargo.toml
CHANGELOG.md
delete-branch: true
sign-commits: true
signoff: true
- name: Skip reason
if: steps.prepare.outputs.skip == 'true'
run: |-
echo "Skipping release PR: ${{ steps.prepare.outputs.reason }}"