Skip to content

Release 1.1.0

Release 1.1.0 #11

Workflow file for this run

name: Release
run-name: "Release ${{ inputs.version }}"
on:
workflow_dispatch:
inputs:
version:
description: 'Version (e.g., 1.0.0 for full release, or 1.0.0-beta.1/1.0.0-rc.1 for tag-only)'
required: true
type: string
jobs:
determine-release-type:
runs-on: ubuntu-latest
outputs:
is_stable_version: ${{ steps.check.outputs.is_stable_version }}
steps:
- name: Determine release type
id: check
run: |
VERSION="${{ github.event.inputs.version }}"
BRANCH="${{ github.ref }}"
# Stable version (x.y.z) - full release
if [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
if [[ "$BRANCH" != "refs/heads/master" ]]; then
echo "Error: Stable version releases can only be triggered from master branch"
exit 1
fi
echo "is_stable_version=true" >> $GITHUB_OUTPUT
# Beta or RC version - tag only
elif [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+-(beta|rc)\.[0-9]+$ ]]; then
echo "is_stable_version=false" >> $GITHUB_OUTPUT
# Anything else - reject
else
echo "Error: Invalid version format '$VERSION'"
echo "Accepted formats:"
echo " - x.y.z (stable release)"
echo " - x.y.z-beta.N (tag only)"
echo " - x.y.z-rc.N (tag only)"
exit 1
fi
release:
needs: determine-release-type
if: needs.determine-release-type.outputs.is_stable_version == 'true'
runs-on: ubuntu-latest
environment: release
permissions:
contents: write
id-token: write
steps:
- name: Generate a token
id: generate_token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.RELEASER_APP_ID }}
private-key: ${{ secrets.RELEASER_APP_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.generate_token.outputs.token }}
- run: |
git config --global user.email "releaser-bot"
git config --global user.name "releaser-bot"
- name: Log release info
run: |
echo "Releasing stable version: ${{ github.event.inputs.version }}"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
registry-url: 'https://registry.npmjs.org'
- name: Update npm
run: npm install -g npm@latest
- name: Install dependencies
run: npm ci
- name: Release
run: npx release-it ${{ github.event.inputs.version }} --ci --config .release-it.stable.json
env:
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
tag-only:
needs: determine-release-type
if: needs.determine-release-type.outputs.is_stable_version == 'false'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Generate a token
id: generate_token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.RELEASER_APP_ID }}
private-key: ${{ secrets.RELEASER_APP_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.generate_token.outputs.token }}
- name: Create tag
run: |
git config --global user.email "releaser-bot"
git config --global user.name "releaser-bot"
VERSION="${{ github.event.inputs.version }}"
git tag -a "$VERSION" -m "Tag $VERSION"
git push origin "$VERSION"
echo "Created tag: $VERSION"