ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MachOExplorer一键发布流水线揭秘:deploy.sh如何搞定签名、公证与Homebrew推送

MachOExplorer一键发布流水线揭秘:deploy.sh如何搞定签名、公证与Homebrew推送 MachOExplorer一键发布流水线揭秘deploy.sh如何搞定签名、公证与Homebrew推送【免费下载链接】machoexplorerExplore MachO File on macOS and Windows项目地址: https://gitcode.com/gh_mirrors/ma/machoexplorerMachOExplorer 是一款开源的 Mach-O 结构浏览器而它的 deploy.sh 发布流水线把版本号递增、编译、Developer ID 签名、Apple 公证、创建标签、发布 Release、更新 Homebrew cask 这 8 件事压缩成了一条命令。对于 macOS 应用来说签名与公证是最容易翻车的环节这篇文章带你完整看清这条一键发布流水线背后的每一步。为什么 macOS 发布需要一条「流水线」在 macOS 上发版打包成.dmg只是最表面的一步⚠️ 没有Developer ID 签名用户会直接看到已损坏无法打开⚠️ 没有公证Notarization新版系统下 Gatekeeper 依然会拦截除了打包还有版本号、回归测试、git 标签、Release 页面、Homebrew 更新等一堆繁琐步骤。deploy.sh的思路是把所有步骤变成确定性流水线脚本以set -euo pipefail启动任何一步出错立即中止绝不产出半成品启动前还会预检 git、cmake、codesign、xcrun 等命令是否齐备、签名证书与公证凭据是否可用缺什么就打印清晰的提示并退出。deploy.sh 的七步流程第 1 步版本号自动递增scripts/inc_patch_version.sh 从 src/libmoex/ver.h 读取当前版本如 2.0.16把 patch 位加 1 得到 2.0.17并同步更新中英文 README 里的版本引用。版本号只有一份事实来源彻底告别手工改号漏改。第 2 步编译 全量回归测试CMake 以 Release 模式构建后脚本会自动执行 tests/regression/run_all.sh 下的回归套件——包含恶意/截断二进制文件的崩溃回归测试。全部通过才允许继续保证每个发出去的版本都经过实测。第 3 步Developer ID 签名用macdeployqt完成 Qt 运行时打包后脚本执行codesign --force --deep --options runtime --timestamp --sign Developer ID Application: ... App随后用codesign --verify与spctl --assess双重校验签名有效性再用hdiutil制作出MachOExplorer.dmg。签名身份可通过环境变量CODE_SIGN_IDENTITY覆盖默认值。第 4 步公证与票据钉扎Staple这是最魔法的一步。脚本调用xcrun notarytool submit把 DMG 提交给 Apple 公证服务器并--wait同步等待结果成功后执行xcrun stapler staple把公证票据直接钉进 DMG。凭据有两种准备方式keychain profileNOTARYTOOL_PROFILE或APPLE_ID APPLE_TEAM_ID APPLE_APP_SPECIFIC_PASSWORD组合二选一即可详见 docs/release_packaging.md。第 5 步提交、打标签、推送版本号变更自动 commit 并推送主分支然后创建vX.Y.Z标签。若标签已存在会直接报错——防止误重复发版。第 6 步发布 Release通过gh release create自动创建 Release 页并上传 DMG如果该标签的 Release 已存在则用--clobber覆盖上传方便同一版本补发修改后的安装包。第 7 步一键更新 Homebrew cask最后调用 scripts/release_homebrew.sh计算 DMG 的 SHA256 → 生成 cask 文件 → 推送到 tap 仓库。完成后用户只需一行命令即可装上新版brew install --cask machoexplorer想先看看会生成什么而不真正推送加个--dry-run即可。上手指南开关与演练方法流水线每一步都可以单独跳过非常适合先「空跑」验证本地环境git clone https://gitcode.com/gh_mirrors/ma/machoexplorer ./deploy.sh --no-push --no-tag --no-release --no-homebrew这条命令会完整走完构建、签名、公证但什么都不往远端推。确认无误后再去掉开关正式执行。⚠️ 注意工作区必须干净无未提交改动且gh已登录否则脚本会在预检阶段直接退出。用户最终拿到什么流水线跑完后用户侧的体验是无缝的 一个已签名 已公证的 DMGGatekeeper 直接放行 仓库里可追溯的版本标签与 Release 下载页 Homebrew cask 自动同步到最新版brew upgrade即得。相关文件清单文件职责deploy.shmacOS 发布主脚本签名、公证、推送全在这scripts/inc_patch_version.sh版本号递增并同步 READMEscripts/release_homebrew.sh计算 SHA256 并推送 Homebrew casksrc/libmoex/ver.h版本号唯一事实来源tests/regression/发布前必过的回归测试套件docs/release_packaging.md发布打包说明含凭据配置scripts/build_windows_release.ps1Windows 侧打包上传脚本与 packaging/windows/MachOExplorer.iss 搭配小结deploy.sh的价值不在于少敲几行命令而在于把 macOS 发布中最容易出错的签名与公证环节标准化、可预检、可跳过、可重跑版本错了会报错签名不对会列出现有证书公证凭据缺失会给出配置指引。一条命令的背后是一条对半成功状态零容忍的完整发布流水线。【免费下载链接】machoexplorerExplore MachO File on macOS and Windows项目地址: https://gitcode.com/gh_mirrors/ma/machoexplorer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表