workflow: add a "publish" workflow for automated releases (#9690)
This commit is contained in:
parent
275354caba
commit
a586901a76
|
@ -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
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue