Skip to content

Changesets – Create/Update Release PR and Cut Tags #671

Changesets – Create/Update Release PR and Cut Tags

Changesets – Create/Update Release PR and Cut Tags #671

# -------------------------------------------------------------
# 🚢 Changesets – Create/Update Release PR and Cut Tags
# Main path: on push to main, create/update the Release PR and cut tags/GitHub Releases
# -------------------------------------------------------------
name: Changesets – Create/Update Release PR and Cut Tags
on:
push:
branches: ["main"]
delete:
permissions:
# Needed to push version commit + create releases
contents: write
# Needed to open/update the Release PR
pull-requests: write
jobs:
release_pr:
name: 🧩 Create/Update Release PR (and cut tags/releases)
runs-on: ubuntu-24.04
if: github.event_name == 'push' || (github.event_name == 'delete' && github.event.ref_type == 'tag' && startsWith(github.event.ref, 'v') && !contains(github.event.ref, '-')) # Only run on push to main or when a tag starting with "v" is deleted, but do not run for pre-releases (containing a hyphen)
concurrency:
group: changesets-main-${{ github.ref }}
cancel-in-progress: true
steps:
# Work on the main branch that was just pushed
- name: ⏬ Checkout main
uses: actions/checkout@v6
- name: 🔄 Init Node & NPM cache
uses: ./.github/actions/npm-cache
- name: 🧬 Generate a token
id: generate-token
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.AUTO_MERGE_APP_ID }}
private-key: ${{ secrets.AUTO_MERGE_PRIVATE_KEY }}
# Let changesets open/update the "Version Packages" PR, commit bumped versions and create GitHub Releases/tags
- name: 🧩 Changesets Action
id: changesets
if: github.event_name == 'push'
uses: changesets/action@v1
with:
commit: "chore(release): version packages"
title: "chore(release): version packages"
version: npm run ci:version
env:
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
HUSKY: 0 # Disable Husky hooks in CI
- name: 🆙 Publish
if: steps.changesets.outputs.hasChangesets != 'true'
run: |
npx --no tsx scripts/github/changesets/publish.ts
env:
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}