mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 16:05:12 +08:00
fix(build): 修复 GitHub Release 上传失败问题
- 调整 artifacts 下载方式,避免文件覆盖冲突 - 手动扁平化并重命名发布资产文件 - 确保服务端可执行文件唯一性 - 排除 electron 构建产生的 unpacked 目录 - 统一上传目录内容至 GitHub Release - 避免使用通配符导致的重复匹配问题
This commit is contained in:
47
.github/workflows/build.yml
vendored
47
.github/workflows/build.yml
vendored
@@ -101,43 +101,42 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# 1. 获取版本号
|
|
||||||
- name: Get Version
|
- name: Get Version
|
||||||
id: get_version
|
id: get_version
|
||||||
run: echo "VERSION=v$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
run: echo "VERSION=v$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# 2. 下载所有 Artifact (注意这里会平铺所有文件)
|
# 1. 下载时,不使用 merge-multiple,防止覆盖冲突
|
||||||
- name: Download All Artifacts
|
- name: Download Artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
path: ./release-dir
|
path: ./raw-assets
|
||||||
merge-multiple: true # 关键:将所有构建出的 .exe, .dmg 平铺到 release-dir 根目录
|
|
||||||
|
|
||||||
# 3. 清理不需要的中间产物 (排除 unpacked 等目录)
|
# 2. 核心步骤:手动移动文件到一个扁平目录,并强制重命名
|
||||||
- name: Prepare Assets
|
- name: Flatten and Rename Assets
|
||||||
shell: bash
|
|
||||||
run: |
|
run: |
|
||||||
cd ./release-dir
|
mkdir -p ./final-release
|
||||||
# 只保留安装程序后缀,删除所有文件夹和杂质文件
|
|
||||||
# 这样能确保不上传 electron 产生的 win-unpacked 等目录
|
# 移动 Server 文件并确保名字唯一
|
||||||
find . -maxdepth 1 -type d -not -path '.' -exec rm -rf {} +
|
# 注意:根据你之前的附件,Artifact 名字是 server-windows-amd64
|
||||||
# 查看一下最终要上传的文件列表,方便调试
|
cp ./raw-assets/server-windows-amd64/ogame-server-win.exe ./final-release/ogame-server-win.exe || cp ./raw-assets/server-windows-amd64/server-windows-amd64.exe ./final-release/ogame-server-win.exe || true
|
||||||
ls -R
|
cp ./raw-assets/server-linux-amd64/ogame-server-linux ./final-release/ogame-server-linux || true
|
||||||
|
cp ./raw-assets/server-linux-arm64/ogame-server-linux-arm64 ./final-release/ogame-server-linux-arm64 || true
|
||||||
|
|
||||||
|
# 移动 Electron 安装包 (排除 unpacked 目录)
|
||||||
|
find ./raw-assets/electron-* -type f \( -name "*.exe" -o -name "*.dmg" -o -name "*.AppImage" -o -name "*.zip" \) -exec cp {} ./final-release/ \;
|
||||||
|
|
||||||
|
# 检查结果
|
||||||
|
echo "Final assets to upload:"
|
||||||
|
ls -R ./final-release
|
||||||
|
|
||||||
# 4. 上传到 GitHub Release
|
# 3. 一次性上传,禁止重复匹配
|
||||||
- name: Create and Upload Release
|
- name: Create GitHub Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.get_version.outputs.VERSION }}
|
tag_name: ${{ steps.get_version.outputs.VERSION }}
|
||||||
name: Release ${{ steps.get_version.outputs.VERSION }}
|
name: Release ${{ steps.get_version.outputs.VERSION }}
|
||||||
# 核心修复:直接上传目录下的所有安装包,不再手动写死文件名避免 404
|
# 重点:只上传这个干净目录下的所有文件,不要再写具体的通配符防止重复
|
||||||
files: |
|
files: ./final-release/*
|
||||||
./release-dir/*.exe
|
|
||||||
./release-dir/*.dmg
|
|
||||||
./release-dir/*.AppImage
|
|
||||||
./release-dir/*.zip
|
|
||||||
./release-dir/server-*
|
|
||||||
./release-dir/ogame-*
|
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
Reference in New Issue
Block a user