如何在持续集成上对 macOS 应用程序进行代码签名
How to code-sign a macOS App on Continuous Integration
我完成的步骤:
- 为我的 MacOS 应用程序创建了一个新的空白 Xcode 项目
- 为 CI 设置创建了 .travis.yml 文件
- 推送 未编辑 Xcode 项目到我的 GitHub 仓库
Travis 开始构建我的项目,但它抛出错误:
未找到签名证书 "Mac Development":未找到 "Mac Development" 签名证书匹配 ID "XXXXX" 和私钥
我的.travis.yml:
os: osx
language: swift
osx_image: xcode11.3
script: xcodebuild clean build test -project MyApp.xcodeproj -scheme "MyApp" -sdk "macOS 10.15" -destination "platform=macOS" ONLY_ACTIVE_ARCH=NO
我尝试了完全禁用代码签名的技巧 (),但这更像是一个 hack。但我想要一个干净的解决方案。
然而 Xcode 签署了我的代码,但 Travis 没有。 我怎样才能在 Travis CI 上签署我的 MacOS 应用程序?
顺便说一句:我只有一个 free Apple 开发者帐户,所以我无法从 https://developer.apple.com
下载证书
使用免费 Apple 开发者帐户签名的版本不会 运行 在未连接到您的开发者帐户的计算机上。您需要一个付费开发者帐户才能使用开发者 ID(在应用商店之外)或为 App Store 签署软件。
也就是说,对于 macOS(但不是 iOS/tvOS/etc),使用 CI 构建的二进制文件可能会被某人 运行 下载到禁用 Gatekeeper 的机器(在仅限 10.15,不 推荐),或使用 文件 > 打开 命令或上下文菜单的 打开命令启动应用程序(带有警告)。
在 CI 环境中,在没有签名的情况下构建然后在稍后添加签名是相当普遍的(例如,这可以防止意外运送未经最终测试的二进制文件,或允许公司限制谁可以构建官方二进制文件以及在什么情况下)。
需要说明的是,没有签名证书和密钥,您无法签署应用程序。
我完成的步骤:
- 为我的 MacOS 应用程序创建了一个新的空白 Xcode 项目
- 为 CI 设置创建了 .travis.yml 文件
- 推送 未编辑 Xcode 项目到我的 GitHub 仓库
Travis 开始构建我的项目,但它抛出错误:
未找到签名证书 "Mac Development":未找到 "Mac Development" 签名证书匹配 ID "XXXXX" 和私钥
我的.travis.yml:
os: osx
language: swift
osx_image: xcode11.3
script: xcodebuild clean build test -project MyApp.xcodeproj -scheme "MyApp" -sdk "macOS 10.15" -destination "platform=macOS" ONLY_ACTIVE_ARCH=NO
我尝试了完全禁用代码签名的技巧 (
然而 Xcode 签署了我的代码,但 Travis 没有。 我怎样才能在 Travis CI 上签署我的 MacOS 应用程序? 顺便说一句:我只有一个 free Apple 开发者帐户,所以我无法从 https://developer.apple.com
下载证书使用免费 Apple 开发者帐户签名的版本不会 运行 在未连接到您的开发者帐户的计算机上。您需要一个付费开发者帐户才能使用开发者 ID(在应用商店之外)或为 App Store 签署软件。
也就是说,对于 macOS(但不是 iOS/tvOS/etc),使用 CI 构建的二进制文件可能会被某人 运行 下载到禁用 Gatekeeper 的机器(在仅限 10.15,不 推荐),或使用 文件 > 打开 命令或上下文菜单的 打开命令启动应用程序(带有警告)。
在 CI 环境中,在没有签名的情况下构建然后在稍后添加签名是相当普遍的(例如,这可以防止意外运送未经最终测试的二进制文件,或允许公司限制谁可以构建官方二进制文件以及在什么情况下)。
需要说明的是,没有签名证书和密钥,您无法签署应用程序。