Files
sundynix-agentix/.github/workflows/release.yml
T
Blizzard a5cf2c5f36 ci: 构建链补完 wails v2→v3 迁移,CI 触发收敛到 main
代码早就全量迁到 v3(go.mod 只要 wails/v3、main.go import v3/pkg/application),
但"怎么构建"这一层从没跟上,全还是 v2:

- release.yml 装 v2 CLI(wails@v2.12.0)去编 v3 代码,编不过;产物路径也还
  指向 v2 的 build/bin/,而 v3 落在 bin/。这条只在打 v* tag 时触发,迁移后
  一次都没跑过,所以坏了半个月没人知道 —— 下次发版必炸。
- Makefile 的 wails dev/build 直接 command not found。
- README 叫人装 v2 CLI;RELEASE.md 还在提早已删除的 wails.json。

改动:
- ci.yml 触发从 [main, dev] 收到 [main]。dev 分支已删,开发在 feat/wails3,
  留着 dev 是死条件;PR 以 main 为目标仍会跑,合入前有关卡。
- release.yml 全量转 v3:
  * CLI 钉死 v3.0.0-alpha2.117,与 go.mod 的 wails/v3 版本一致 —— alpha 阶段
    CLI 生成的 bindings 和运行时配套,版本错开会出难查的怪问题。
  * mac 走 wails3 task darwin:package:universal。v3 的 build 只出裸二进制
    (macOS 上双击不起窗),必须 package 才有 .app;本地实跑验证过,
    lipo -archs 确认是真 universal(x86_64 + arm64)。
  * Windows 保持 v2 时代行为发裸 .exe。v3 的 package 默认走 NSIS 出 installer,
    依赖 runner 上有 makensis,属额外未知数,要升级安装包再单独议。
  * 产物路径 build/bin/ → bin/。
  * fail_on_unmatched_files 改 true,并按 matrix 只匹配自己那个产物 ——
    原来是 false 且两个平台都列全量文件,产物路径写错会安静发一个没附件的
    Release。这次的 bug 正是路径漂移,得让它当场炸。
- RELEASE.md 版本号对齐表补上第三处 build/config.yml 的 info.version(此前写着
  "必须三处对齐"却只列了两处,第三处是已删的 wails.json),并记下改完必须跑
  wails3 task common:update:build-assets 重新生成 Info.plist —— 这坑踩过。
- 清掉 v2 残留:frontend/wailsjs/(v2 绑定,v3 用已跟踪的 bindings/)及其
  gitignore 规则、build/bin/ 里 v2 时代的 .app。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:03:32 +08:00

79 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Release
# 打 vX.Y.Z 标签即触发:各平台用 wails3 构建桌面端 → 发布到 GitHub Release。
# 用户旧版 App 启动时查 /releases/latest,发现新版即提示下载(见 frontend/src/lib/version.ts)。
on:
push:
tags: ["v*"]
permissions:
contents: write # 创建 release + 上传产物需要
env:
# 必须与 sundynix-desktop/go.mod 里的 wails/v3 版本一致:alpha 阶段 CLI 生成的
# bindings 与运行时是配套的,版本错开会出难查的怪问题。升级时两处一起改。
WAILS3_VERSION: v3.0.0-alpha2.117
jobs:
build:
name: 构建 ${{ matrix.label }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: macos-latest
label: macOS (universal)
asset: sundynix_desktop_macos_universal.zip
- os: windows-latest
label: Windows (amd64)
asset: sundynix_desktop_windows_amd64.exe
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.25"
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: 安装 wails3 CLI
run: go install github.com/wailsapp/wails/v3/cmd/wails3@${{ env.WAILS3_VERSION }}
# v3 的 build 只出裸二进制(macOS 上双击不起窗),必须 package 才有 .app
# universal 走 darwin:package:universal:分别编 amd64/arm64 再 lipo 合并。
# 任务链自带 npm install + generate:bindings,故不需要单独的前端构建步骤。
- name: 构建 macOS .appuniversal
if: runner.os == 'macOS'
working-directory: sundynix-desktop
env:
GOWORK: "off" # 必须加引号:YAML 裸 off 会被解析成布尔 false,使 workflow 校验不合法而不触发
run: wails3 task darwin:package:universal
# Windows 沿用 v2 时代的行为:发裸 .exe。v3 的 package 默认走 NSIS 出 installer
# 需 runner 上有 makensis,属于额外未知数,要升级安装包再单独议。
- name: 构建 Windows .exe
if: runner.os == 'Windows'
working-directory: sundynix-desktop
env:
GOWORK: "off"
run: wails3 build
# macOS.app 是目录,打包成 zip 才能作为单文件资产分发。
- name: 打包 macOS 产物
if: runner.os == 'macOS'
working-directory: sundynix-desktop/bin
run: zip -r -y ${{ matrix.asset }} sundynix_desktop.app
- name: 重命名 Windows 产物
if: runner.os == 'Windows'
working-directory: sundynix-desktop/bin
run: Rename-Item sundynix_desktop.exe ${{ matrix.asset }}
# fail_on_unmatched_files 必须为 true:产物路径写错时要当场炸,而不是安静地
# 发一个没有附件的 Release。v2→v3 迁移正是把产物从 build/bin 挪到了 bin。
- name: 发布到 GitHub Release(按 tag 创建/追加资产)
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
files: sundynix-desktop/bin/${{ matrix.asset }}