workflow: add a "publish" workflow for automated releases (#9690)

This commit is contained in:
Haoqun Jiang 2024-08-06 20:42:36 +08:00 committed by GitHub
parent 275354caba
commit a586901a76
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 81 additions and 0 deletions

70
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Publish Package
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to publish'
required: true
default: 'main'
type: choice
options:
- main
- minor
bump:
description: 'Bump version'
required: true
default: 'patch'
type: choice
options:
- patch
- minor
- prepatch
- preminor
- custom
custom_version:
description: 'Custom version'
required: false
default: ''
type: string
jobs:
publish:
# prevents this action from running on forks
if: github.repository == 'vuejs/core'
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
# Use Release environment for deployment protection
environment: Release
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}
- name: Install pnpm
uses: pnpm/action-setup@v2
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install deps
run: pnpm install
- name: Configure git user as vue bot
run: |
git config user.name "vue-bot"
git config user.email "<bot@vuejs.org>"
- name: Release
run: pnpm release ${{ inputs.bump != 'custom' && inputs.bump || inputs.custom_version }} --skip-prompts
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Push tags
run: git push -u origin ${{ inputs.branch }} --follow-tags

View File

@ -218,6 +218,12 @@ async function main() {
}
}
// @ts-expect-error
if (versionIncrements.includes(targetVersion)) {
// @ts-expect-error
targetVersion = inc(targetVersion)
}
if (!semver.valid(targetVersion)) {
throw new Error(`invalid target version: ${targetVersion}`)
}
@ -338,6 +344,11 @@ async function main() {
if (branch !== 'main') {
additionalPublishFlags.push('--publish-branch', branch)
}
// add provenance metadata when releasing from CI
// canary release commits are not pushed therefore we don't need to add provenance
if (process.env.CI && !isCanary) {
additionalPublishFlags.push('--provenance')
}
for (const pkg of packages) {
await publishPackage(pkg, targetVersion, additionalPublishFlags)