Skip to content

Commit

Permalink
workflow: add a "publish" workflow for automated releases (#9690)
Browse files Browse the repository at this point in the history
  • Loading branch information
haoqunjiang committed Aug 6, 2024
1 parent 275354c commit a586901
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -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
11 changes: 11 additions & 0 deletions scripts/release.js
Original file line number Diff line number Diff line change
Expand Up @@ -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}`)
}
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit a586901

Please sign in to comment.