From e1717154909608db0c03b14ac8dfe74ff81a2055 Mon Sep 17 00:00:00 2001 From: rebecca554owen Date: Mon, 3 Feb 2025 13:53:18 +0800 Subject: [PATCH] =?UTF-8?q?GitHub=20Actions=20=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 升级 actions/checkout 从 v3 到 v4。 新增 Get release tag 步骤,支持手动触发和自动触发时动态获取发布标签: 手动触发时,使用 workflow_dispatch 输入的 tag 参数。 自动触发时,从 GITHUB_REF 中提取标签(如 v1.0.0)。 统一使用 secrets.GITHUB_TOKEN 替代 secrets.GH_TOKEN,遵循 GitHub 官方推荐的最佳实践。 --- .github/workflows/release.yml | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 985b8fd2..b43f8493 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,6 +2,11 @@ name: Release on: workflow_dispatch: + inputs: + tag: + description: 'Release tag (e.g. v1.0.0)' + required: true + default: 'v0.9.18' push: tags: - v*.*.* @@ -16,10 +21,21 @@ jobs: strategy: matrix: os: [macos-latest, windows-latest, ubuntu-latest] + fail-fast: false steps: - name: Check out Git repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 + + - name: Get release tag + id: get-tag + shell: bash + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "tag=${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT + else + echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + fi - name: Install Node.js uses: actions/setup-node@v3 @@ -53,7 +69,7 @@ jobs: yarn build:linux env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build Mac if: matrix.os == 'macos-latest' @@ -66,13 +82,13 @@ jobs: APPLE_ID: ${{ vars.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ vars.APPLE_APP_SPECIFIC_PASSWORD }} APPLE_TEAM_ID: ${{ vars.APPLE_TEAM_ID }} - GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build Windows if: matrix.os == 'windows-latest' run: yarn build:win env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Replace spaces in filenames run: node scripts/replace-spaces.js @@ -83,5 +99,6 @@ jobs: draft: true allowUpdates: true makeLatest: false + tag: ${{ steps.get-tag.outputs.tag }} artifacts: 'dist/*.exe,dist/*.zip,dist/*.dmg,dist/*.AppImage,dist/*.snap,dist/*.deb,dist/*.rpm,dist/*.tar.gz,dist/latest*.yml,dist/*.blockmap' - token: ${{ secrets.GH_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }}