--- name: pack-mac-personal description: 当用户明确要求为个人 macOS 项目在本机生成带个人 Developer ID 签名的验证包、可选公证包,或检查本次产物时使用。公司项目按公司签名与专用规则处理。 --- # 个人 macOS 验证包 正式 CI 构建发布仍由项目自己的 workflow 执行。此入口复用项目打包脚本,在本机验证当前代码;记录当前分支、来源 SHA、未提交改动与本次验收范围。用户已有本地验包规则时按其要求执行。 ## 运行 签名配置使用 MACOS_SIGNING_HOME,默认 ~/.config/macos-signing/config.env。只读取私有配置,不输出、复制或提交签名材料。配置字段见 [签名配置模板](references/signing-config.env.example);先在自己的 Keychain 安装 Developer ID 身份。需要 Python 3.10+,并从项目根目录执行。 ```bash "<本技能目录>/scripts/pack.sh" "<本技能目录>/scripts/pack.sh" --notarize ``` 默认选择 scripts/package_app.sh 或 script/build_and_run.sh,可用 PACK_SCRIPT 指定项目现有可执行入口。PACK_OUTPUT_DIR 默认 dist,产物需位于该目录顶层;其它布局使用项目适配,不重新造一套构建。 脚本记录打包前状态,只验证本次新增/变化的 app、DMG;无本次产物、签名失败、身份/Team 不符即失败。DMG 会只读挂载并核对内含 app,默认支持顶层单 app 布局。 --notarize 会把 NOTARIZE=1 和已配置的 Apple API 参数交给项目脚本,再核对 ticket 和适用 Gatekeeper 结果。多个 .p8 时必须明确 APPLE_API_KEY_PATH,不默认挑第一把。公证由项目脚本实际执行,环境变量本身不是公证证据。 未请求公证时写明“签名已核实,公证未请求”,不承诺其它电脑一定能打开。请求对外分发时,核实实际 CI/项目产物的签名、公证、staple 和安装结果;不推断所有 CI 包都经过公证。 回执保存于 dist/skill-package-receipt.json,可用 PACK_RECEIPT_PATH 指定。记录本次来源、产物、身份和验证状态;绑定版本/build 与实际验收用例。代码再变后重新出包。 本版完成空产物、旧产物、签名与公证评估失败的模拟回归;未调用真实签名、公证或构建。