From: Haoqun Jiang Date: Tue, 6 Aug 2024 12:42:36 +0000 (+0800) Subject: workflow: add a "publish" workflow for automated releases (#9690) X-Git-Tag: v3.4.36~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a586901a7627b1861140e8505aef70aee7000a59;p=thirdparty%2Fvuejs%2Fcore.git workflow: add a "publish" workflow for automated releases (#9690) --- diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000000..95a3cb9d6b --- /dev/null +++ b/.github/workflows/publish.yml @@ -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 "" + + - 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 diff --git a/scripts/release.js b/scripts/release.js index eed71c2fd1..82ecf9f990 100644 --- a/scripts/release.js +++ b/scripts/release.js @@ -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)