Skip to content

build: add a workflow to automatically open release PRs #11

build: add a workflow to automatically open release PRs

build: add a workflow to automatically open release PRs #11

Workflow file for this run

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