mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-22 16:48:23 +01:00
e5f98c6475
NodeJS 20 is almost EOL so I'm updating our workflows to use NodeJS 22. This does not change anything about our app, which will still use NodeJS 20 until Electron shifts away from it. NodeJS 22 is fully backwards-compatible with NodeJS 20 so there's no issue from a testing standpoint.
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: 22
|
|
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 }}
|