Bump the version on a release branch #7
This file contains hidden or 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
name: Bump the version on a release branch | |
on: | |
workflow_dispatch: | |
inputs: | |
rc: | |
description: "Is it a release candidate?" | |
type: boolean | |
default: false | |
merge-back: | |
description: "Should we merge back the release branch to main?" | |
type: boolean | |
default: true | |
jobs: | |
compute-version: | |
name: Compute the next version | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: read | |
outputs: | |
version: ${{ steps.next.outputs.version }} | |
steps: | |
- name: Fail the workflow if not on a release branch | |
if: ${{ !startsWith(github.ref_name, 'release/v') }} | |
run: exit 1 | |
- name: Checkout the code | |
uses: actions/[email protected] | |
- name: Install Rust toolchain | |
run: | | |
rustup toolchain install stable | |
rustup default stable | |
- name: Extract the current version | |
id: current | |
run: echo "version=$(cargo metadata --format-version 1 | jq -r '.packages[] | select(.name == "mas-cli") | .version')" >> "$GITHUB_OUTPUT" | |
- name: Compute the new minor RC | |
id: next | |
env: | |
BUMP: ${{ inputs.rc && 'prerelease' || 'patch' }} | |
VERSION: ${{ steps.current.outputs.version }} | |
run: echo "version=$(npx --yes [email protected] -i "$BUMP" --preid rc "$VERSION")" >> "$GITHUB_OUTPUT" | |
tag: | |
uses: ./.github/workflows/tag.yaml | |
needs: [compute-version] | |
with: | |
version: ${{ needs.compute-version.outputs.version }} | |
secrets: | |
BOT_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} | |
merge-back: | |
uses: ./.github/workflows/merge-back.yaml | |
needs: [tag] | |
if: inputs.merge-back | |
with: | |
sha: ${{ needs.tag.outputs.sha }} | |
secrets: | |
BOT_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} | |
update-branch: | |
name: Update the release branch | |
runs-on: ubuntu-22.04 | |
permissions: | |
pull-requests: write | |
needs: [tag, compute-version] | |
steps: | |
- name: Update the release branch | |
uses: actions/[email protected] | |
env: | |
BRANCH: "${{ github.ref_name }}" | |
SHA: ${{ needs.tag.outputs.sha }} | |
with: | |
github-token: ${{ secrets.BOT_GITHUB_TOKEN }} | |
script: | | |
const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); | |
const branch = process.env.BRANCH; | |
const sha = process.env.SHA; | |
const ref = `heads/${branch}`; | |
await github.rest.git.updateRef({ | |
owner, | |
repo, | |
ref, | |
sha, | |
}); | |
console.log(`Updated branch ${branch} to ${sha}`); |