macOS 签名与 GitHub Release
Ship
主路径:GitHub Actions 编译、Developer ID 签名、Apple 公证,并挂 Release。
Workflow:.github/workflows/release.yml。
当前仓库:21stware/xbuckle(原 ctx3x3 已更名)。
签名 / 公证凭证与 vav 同一套,已写入本仓 Actions secrets(CSC_* + APPLE_API_*)。日常发布不必再手填。
发布
main已推上远端,package.json的"version"正确。- 打 tag 并推送(触发 workflow):
bash
VERSION=$(node -p "require('./package.json').version")
git tag -a "v$VERSION" -m "XBuckle v$VERSION"
git push origin "v$VERSION"或对已有 tag:
bash
gh workflow run release.yml -f tag=v1.0.0
gh run watch- Actions → Release;产物在
https://github.com/21stware/xbuckle/releases。
Runner:macos-14(arm64)→ .dmg / .zip。
Secrets(已配置,仅换证时改)
| Secret | 说明 |
|---|---|
CSC_LINK | Developer ID .p12 的 base64 |
CSC_KEY_PASSWORD | 该 .p12 密码 |
APPLE_API_KEY | App Store Connect API Key 的 .p8 正文 |
APPLE_API_KEY_ID | Key ID(如 TZFQYH68G6) |
APPLE_API_ISSUER | Issuer UUID |
APPLE_TEAM_ID | Team ID(R54TY86R4C) |
与 vav 对齐;换证或轮换 API Key 后用 gh secret set 更新两侧即可。
本机备选
bash
export CSC_NAME="Cheng Aobo (R54TY86R4C)" # 不要带 "Developer ID Application:" 前缀
# 公证可用 API key 文件:
export APPLE_API_KEY="$HOME/.appstoreconnect/AuthKey_<KEY_ID>.p8"
export APPLE_API_KEY_ID="…"
export APPLE_API_ISSUER="…"
export APPLE_TEAM_ID="R54TY86R4C"
npm run electron:release常见问题
| 现象 | 处理 |
|---|---|
| Actions 签名失败 | 检查 CSC_LINK / CSC_KEY_PASSWORD 是否过期 |
| 公证失败 | 检查 APPLE_API_*;Key 需有 Developer 权限 |
| tag 已存在想重编 | gh workflow run release.yml -f tag=vX.Y.Z |
开发期(不签名)
bash
npm run electron:dev
CSC_IDENTITY_AUTO_DISCOVERY=false npm run electron:pack