Skip to content

Release

Release #4

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
mode:
description: "Release mode"
required: true
type: choice
options:
- stable
- prerelease
bump:
description: "stable: patch | minor | major — prerelease: prerelease | prepatch
| preminor | premajor"
required: true
type: choice
options:
- patch
- minor
- major
- prerelease
- prepatch
- preminor
- premajor
preid:
description: "Pre-release identifier e.g. alpha, beta, rc (prerelease mode only)"
required: false
type: string
default: alpha
concurrency:
group: release
cancel-in-progress: false
permissions:
contents: write
pull-requests: write
id-token: write
jobs:
validate:
name: Validate Inputs
runs-on: ubuntu-latest
outputs:
release_cmd: ${{ steps.build_cmd.outputs.cmd }}
steps:
- name: Validate input combination
run: |
MODE="${{ inputs.mode }}"
BUMP="${{ inputs.bump }}"
STABLE_BUMPS="patch minor major"
PRERELEASE_BUMPS="prerelease prepatch preminor premajor"
if [[ "$MODE" == "stable" ]] && [[ ! " $STABLE_BUMPS " =~ " $BUMP " ]]; then
echo "::error::Stable mode requires bump to be one of: $STABLE_BUMPS. Got: '$BUMP'"
exit 1
fi
if [[ "$MODE" == "prerelease" ]] && [[ ! " $PRERELEASE_BUMPS " =~ " $BUMP " ]]; then
echo "::error::Prerelease mode requires bump to be one of: $PRERELEASE_BUMPS. Got: '$BUMP'"
exit 1
fi
- name: Build release command
id: build_cmd
run: |
MODE="${{ inputs.mode }}"
BUMP="${{ inputs.bump }}"
PREID="${{ inputs.preid }}"
if [[ "$MODE" == "stable" ]]; then
CMD="--$BUMP"
else
CMD="--$BUMP --preid $PREID --tag $PREID"
fi
echo "cmd=$CMD" >> "$GITHUB_OUTPUT"
echo "Release command: relizy release $CMD --yes --no-clean"
release:
name: Release (${{ inputs.mode }} / ${{ inputs.bump }}${{ inputs.mode ==
'prerelease' && format(' / {0}', inputs.preid) || '' }})
runs-on: ubuntu-latest
needs: validate
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
fetch-depth: 0
token: ${{ secrets.USE_PROMISE_GITHUB_PAT }}
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm
- name: Install Dependencies
run: pnpm install --frozen-lockfile
- name: Build Packages
run: pnpm build
- name: Configure Git
run: |
git config --global user.name "favorodera"
git config --global user.email "favorodera@gmail.com"
- name: Release with Relizy
run: pnpm relizy release ${{ needs.validate.outputs.release_cmd }} --yes
--no-clean
env:
RELIZY_GITHUB_TOKEN: ${{ secrets.USE_PROMISE_GITHUB_PAT }}
NODE_AUTH_TOKEN: ${{ secrets.USE_PROMISE_NPM_TOKEN }}