Skip to content

emrg: workflow 支持双 p12 方案 — Installer 独立 Secret 导入(rant 15:26,MACOS_INSTALLER_*)+ Sign pkg 优先 Installer 身份 - #474

Merged
argszero merged 1 commit into
masterfrom
feature/installer-dual-p12
Aug 6, 2026
Merged

emrg: workflow 支持双 p12 方案 — Installer 独立 Secret 导入(rant 15:26,MACOS_INSTALLER_*)+ Sign pkg 优先 Installer 身份#474
argszero merged 1 commit into
masterfrom
feature/installer-dual-p12

Conversation

@argszero

@argszero argszero commented Aug 6, 2026

Copy link
Copy Markdown
Owner

背景:宿主 rant 2026-08-06T15:26:22 已申请 Developer ID Installer 证书并配置 3 个新 Secret(MACOS_INSTALLER_IDENTITY / MACOS_INSTALLER_P12_BASE64 / MACOS_INSTALLER_P12_PASSWORD),要求 workflow 支持双 p12 方案。

改动(build-release.yml + workflows/README.md):

  1. job env:新增 3 个 MACOS_INSTALLER_* Secret(未配置时降级单 p12 方案)
  2. Import step:导入 Application p12 后,若 MACOS_INSTALLER_P12_BASE64 非空则额外导入 Installer p12(含私钥校验,单复数匹配 emrg: 修复 p12 私钥校验单复数匹配 — identities imported #461);双证书检查说明更新为支持两种方案
  3. Sign pkg step:优先用 MACOS_INSTALLER_IDENTITY(宿主显式配置),未配置则 fallback 到 keychain 自动检测(emrg: 修复 macOS pkg 签名 — 自动检测 Developer ID Installer 身份 + 恢复 .app 自动签名 #462
  4. README:Secrets 表补 3 个 Installer 条目 + 两种方案说明(单 p12 / 双 p12)

验证

  • actionlint 全 workflow ✅ / bash 语法全 block ✅
  • 完整 CI 模拟(本机双证书 p12):Application 导入(4 identities)✅ → Installer 导入 ✅ → 双证书检查 ✅ → Sign pkg Secret 方案 + fallback 自动检测均提取正确 ✅
  • pytest 473 passed ✅ / import ✅

兼容性:双 p12 方案(宿主当前配置)与单 p12 方案(默认降级)均支持,互不冲突。

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle 20260806-1526

独立复核:

  • 宿主 rant(15:26:22)要求逐条满足:① 双 p12 导入 ✅(Import step 新增 MACOS_INSTALLER_P12_BASE64 导入,含私钥校验 #461 单复数)② Sign pkg 用 Installer 身份 ✅(MACOS_INSTALLER_IDENTITY 优先 + fallback 自动检测 #462)③ 保留 electron-builder CSC_LINK / notarytool / stapler / spctl ✅(未动)④ CI 验证 pkgutil ✅(Sign pkg 步骤保留)
  • 双 p12 与单 p12 兼容降级设计合理(Secret 未配置时行为与 #467 一致)
  • 正反两态验证:双证书检查输出判空(#464 原则)、私钥校验单复数(#461 原则)
  • actionlint ✅ / bash -n ✅ / 完整 CI 模拟(双证书 p12 导入 + Sign pkg 身份提取两态)✅ / pytest 473 ✅

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle 1527

独立复核(正反两态 + 单复数 + 输出判空):

  • actionlint 全绿:本机 /tmp/actionlint 对 .github/workflows/*.yml 通过
  • 双 p12 导入逻辑(正反两态):
    • 配置 MACOS_INSTALLER_P12_BASE64 → 导入 /tmp/installer.p12 + identit(y|ies) 正则校验(#461 单复数 ✓)
    • 未配置 → if [ -n ] 跳过,降级单 p12 方案 ✓
  • 双证书校验保留 for 循环 + 输出判空(#464 ✓),错误信息已区分单/双 p12 指引
  • Sign pkg 身份优先:MACOS_INSTALLER_IDENTITY 优先,未配置则 find-identity 自动检测(#462 保留)✓
  • 降级安全:未配置任何 INSTALLER_* Secret 时行为与旧版完全一致
  • 本机 keychain 实测:Developer ID Application + Developer ID Installer 双证书均存在(宿主已创建)
  • 9 个 Secret 已确认(gh secret list 验证 3 个 MACOS_INSTALLER_* 07:24-07:25Z 新增)

与 rant 2026-08-06T15:26:22 验收项 1-4 完全对应。LGTM。

@argszero argszero left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM — cycle 20260806-1530

独立复核(workflow 改动,全量校验):

  1. actionlint 通过(全 workflow exit 0,#441 教训应用)+ 所有 run block bash -n 通过
  2. 教训应用完整:①Import Installer p12 用 identit(y|ies)\ imported 单复数正则(#461)✅ ②双证书检查保留输出判空(#464#455 正反两态教训)✅ ③双证书存在性校验更新为支持两种方案,报错信息区分单/双 p12 配置 ✅
  3. 降级兼容正确MACOS_INSTALLER_P12_BASE64 为空时跳过 Installer 导入,走单 p12 方案——未配置新 secrets 的实例不受影响
  4. Sign pkg 优先级正确:优先 MACOS_INSTALLER_IDENTITY(宿主显式配置),未配置 fallback keychain 自动检测(#462)——与双/单方案对应
  5. README 同步:Secrets 表 + 两种方案说明清晰
  6. CI test SUCCESS @ b7d84ec(31081059592)
  7. 直接适配宿主当前配置(已申请 Installer 证书 + 配 3 个 MACOS_INSTALLER_* secrets)——merge 后 v0.2.7 构建链可用宿主配置推进

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant