mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-22 16:48:23 +01:00
85 lines
3.4 KiB
YAML
85 lines
3.4 KiB
YAML
# Workflow to manage bumping the package version and pushing it to the target branch with a new tag.
|
|
# This workflow uses a GitHub App to bypass branch protection and uses the GitHub API directly to ensure commits and tags are signed.
|
|
# For more information, see this doc: https://github.com/Nautilus-Cyberneering/pygithub/blob/main/docs/how_to_sign_automatic_commits_in_github_actions.md
|
|
|
|
name: Bump Version
|
|
run-name: "branch: ${{ github.ref_name }}; semver-bump: ${{ inputs.bump }}; prerelease: ${{ inputs.is-prerelease }}"
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
bump:
|
|
description: SemVer Bump
|
|
required: true
|
|
type: choice
|
|
default: none
|
|
options:
|
|
- none
|
|
- patch
|
|
- minor
|
|
- major
|
|
is-prerelease:
|
|
description: Is Prerelease
|
|
required: true
|
|
type: boolean
|
|
default: true
|
|
env:
|
|
NODE_VERSION: "20"
|
|
jobs:
|
|
bump-version:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Get App Token
|
|
uses: actions/create-github-app-token@v1
|
|
id: app-token
|
|
with:
|
|
app-id: ${{ vars.WAVE_BUILDER_APPID }}
|
|
private-key: ${{ secrets.WAVE_BUILDER_KEY }}
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ steps.app-token.outputs.token }}
|
|
|
|
# General build dependencies
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{env.NODE_VERSION}}
|
|
- name: Install Yarn
|
|
run: |
|
|
corepack enable
|
|
yarn install
|
|
- name: Install Task
|
|
uses: arduino/setup-task@v2
|
|
with:
|
|
version: 3.x
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: "Bump Version: ${{ inputs.bump }}"
|
|
id: bump-version
|
|
run: echo "WAVETERM_VERSION=$( task version -- ${{ inputs.bump }} ${{inputs.is-prerelease}} )" >> "$GITHUB_OUTPUT"
|
|
shell: bash
|
|
|
|
- name: "Push version bump: ${{ steps.bump-version.outputs.WAVETERM_VERSION }}"
|
|
if: github.ref_protected
|
|
run: |
|
|
# Create a new commit for the package version bump in package.json
|
|
export VERSION=${{ steps.bump-version.outputs.WAVETERM_VERSION }}
|
|
export MESSAGE="chore: bump package version to $VERSION"
|
|
export FILE=package.json
|
|
export BRANCH=${{github.ref_name}}
|
|
export SHA=$( git rev-parse $BRANCH:$FILE )
|
|
export CONTENT=$( base64 -i $FILE )
|
|
gh api --method PUT /repos/:owner/:repo/contents/$FILE \
|
|
--field branch="$BRANCH" \
|
|
--field message="$MESSAGE" \
|
|
--field content="$CONTENT" \
|
|
--field sha="$SHA"
|
|
|
|
# Fetch the new commit and create a tag referencing it
|
|
git fetch
|
|
export TAG_SHA=$( git rev-parse origin/$BRANCH )
|
|
gh api --method POST /repos/:owner/:repo/git/refs \
|
|
--field ref="refs/tags/v$VERSION" \
|
|
--field sha="$TAG_SHA"
|
|
shell: bash
|
|
env:
|
|
GH_TOKEN: ${{ steps.app-token.outputs.token }}
|