chore(workflow): 优化 Release 工作流以提高稳定性

- 调整作业依赖顺序,确保构建完成后再执行发布
- 明确设置 GitHub 权限,增强对 PR 和内容的访问控制
- 重构版本号获取逻辑,使用更清晰的脚本方式
- 分步创建 Release 并上传资产,避免并发冲突
- 指定具体文件路径进行上传,防止误传 package.json
- 启用自动生成 Release Notes 功能
- 统一管理下载路径并明确文件命名规则
This commit is contained in:
coolxitech
2025-12-14 12:41:13 +08:00
parent ec77a0656a
commit e2666e1d73

View File

@@ -92,35 +92,56 @@ jobs:
# 3. 发布 Release
release:
needs: [build-server, build-electron]
needs: [ build-server, build-electron ]
runs-on: ubuntu-latest
permissions:
contents: write
contents: write # 必须确保有写权限
pull-requests: read
steps:
- uses: actions/checkout@v4
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: ./assets-to-release
merge-multiple: true # 将所有文件平铺在一个目录下
- name: Get Version for Tagging
# 1. 获取版本号
- name: Get Version
id: get_version
run: echo "VERSION=v$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
shell: bash
run: |
VERSION=$(node -p "require('./package.json').version")
echo "VERSION=v$VERSION" >> $GITHUB_OUTPUT
# 2. 创建 Release (先创建,不上传文件)
# 这一步能有效避免 404确保 Release 实体已存在
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.get_version.outputs.VERSION }}
name: Release ${{ steps.get_version.outputs.VERSION }}
# 核心修复:显式指定要上传的文件后缀,彻底排除 package.json
files: |
./assets-to-release/*.exe
./assets-to-release/*.dmg
./assets-to-release/*.AppImage
./assets-to-release/*.zip
./assets-to-release/ogame-server-*
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 3. 下载产物并上传到已创建的 Release
- name: Download and Upload Assets
uses: actions/download-artifact@v4
with:
path: ./downloads
merge-multiple: true
- name: Upload Assets to Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.get_version.outputs.VERSION }}
append_body: true
# 显式指定文件名,不带版本号
files: |
./downloads/ogame-server-win.exe
./downloads/ogame-server-linux
./downloads/ogame-server-linux-arm64
./downloads/ogame-Setup.exe
./downloads/*.dmg
./downloads/*.AppImage
./downloads/*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}