build: add a workflow to automatically open release PRs #11
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: push | |
name: Open a PR to bump the version | |
jobs: | |
open_pr: | |
strategy: | |
matrix: | |
component: ["server", "client"] | |
name: Open PR | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: x86_64-unknown-linux-gnu | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: swatinem/rust-cache@v2 | |
- run: cargo install git-cliff@^2.2 cargo-edit@^0.12 | |
- name: determine version | |
run: | | |
echo "COMPONENT=${{ matrix.component }}" | tee -a "$GITHUB_ENV" | |
comp_dir="mm-${{ matrix.component }}" | |
echo "COMPONENT_DIR=$comp_dir" | tee -a "$GITHUB_ENV" | |
version=$( git cliff -c .github/workflows/cliff.toml \ | |
--bumped-version --unreleased \ | |
--tag-pattern "${{ matrix.component }}" \ | |
--include-path "$comp_dir/**/*" ) | |
echo "BUMPED_VERSION=$version" | tee -a "$GITHUB_ENV" | |
echo "BUMPED_VERSION_SHORT=$( echo $version | sed -E 's/^[a-z]+-v(.*)/\1/' )" | tee -a "$GITHUB_ENV" | |
- name: echo version | |
run: echo $BUMPED_VERSION | |
- name: replace version in files | |
if: ${{ env.BUMPED_VERSION != '' }} | |
run: git ls-files | xargs sed -i -E 's/$COMPONENT-v[0-9]+\.[0-9]+\.[0-9]+/$BUMPED_VERSION/g' | |
- name: replace version in Cargo.toml | |
if: ${{ env.BUMPED_VERSION != '' }} | |
run: (cd $COMPONENT_DIR && cargo set-version --offline $BUMPED_VERSION_SHORT) | |
- name: update BUSL change date | |
if: ${{ env.BUMPED_VERSION != '' && matrix.component == 'server' }} | |
run: | | |
change_date=$(date -d "4 years hence" +%Y-%m-01) # Round down to the 1st of the month | |
sed -i -E "/Change/s/[0-9]{4}-[0-9]{2}-[0-9]{2}/$change_date/" LICENSES/BUSL-1.1.txt | |
- name: update CHANGELOG.md | |
if: ${{ env.BUMPED_VERSION != '' }} | |
run: | | |
git cliff -c .github/workflows/cliff.toml \ | |
--include-path "$COMPONENT_DIR/**/*" \ | |
--tag-pattern "$COMPONENT" \ | |
-t "$BUMPED_VERSION" -u \ | |
-p CHANGELOG.md | |
- name: generate PR body | |
if: ${{ env.BUMPED_VERSION != '' }} | |
run: | | |
git cliff -c .github/workflows/cliff.toml \ | |
--include-path "$COMPONENT_DIR/**/*" \ | |
--tag-pattern "$COMPONENT" \ | |
-t "$BUMPED_VERSION" -u > "$RUNNER_TEMP/pr-body.txt" | |
- name: open PR | |
if: ${{ env.BUMPED_VERSION != '' }} | |
id: cpr | |
uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e | |
with: | |
draft: true | |
branch: "auto-bump-${{ matrix.component }}" | |
commit-message: "chore: bump mm${{ matrix.component }} to ${{ env.BUMPED_VERSION }}" | |
body-path: "${{ runner.temp }}/pr-body.txt" | |
- name: tag branch commit | |
if: ${{ steps.cpr.outputs.pull-request-head-sha }} | |
run: | | |
git tag --force "$BUMPED_VERSION" ${{ steps.cpr.outputs.pull-request-head-sha }} | |
git push --tags --force | |