【问题标题】:How to code-sign a macOS App on Continuous Integration如何在持续集成中对 macOS 应用程序进行代码签名
【发布时间】:2020-08-03 19:42:46
【问题描述】:

我做的步骤:

  1. 为我的 MacOS 应用程序创建了一个新的空白 Xcode 项目
  2. 为 CI 设置创建 .travis.yml 文件
  3. 未编辑 Xcode 项目推送到我的 GitHub 存储库
  4. Travis 开始构建我的项目,但它抛出了一个错误:

    找不到签名证书“​​Mac Development”:找不到匹配 ID“XXXXX”和私钥的“Mac Development”签名证书

我的 .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

我尝试了完全禁用代码签名的技巧 (https://stackoverflow.com/a/54296008),但这更像是一种 hack。但我想要一个干净的解决方案。

但是 Xcode 签署了我的代码,但 Travis 没有。 如何让我的 MacOS 应用也可以在 Travis CI 上签名? 顺便说一句:我只有一个免费 Apple Developer Account,所以我无法从https://developer.apple.com 下载证书

【问题讨论】:

    标签: xcode macos continuous-integration travis-ci code-signing


    【解决方案1】:

    使用免费 Apple 开发者帐户签名的构建将无法在未连接到您的开发者帐户的计算机上运行。您需要付费开发者帐户才能使用开发者 ID(在应用商店之外)或为 App Store 签署软件。

    也就是说,对于 macOS(但不是 iOS/tvOS/etc),使用 CI 构建的二进制文件可以由将其下载到禁用 Gatekeeper 的机器上的人运行(仅限 10.15 之前,不是 推荐),或使用 File > Open 命令或上下文菜单的 Open 命令启动应用程序(带有警告)。

    在 CI 环境中,在没有签名的情况下构建然后添加签名是相当常见的(例如,这可以防止意外发送尚未通过最终测试的二进制文件,或者允许公司限制谁可以构建官方二进制文件以及在什么情况下)。

    需要明确的是,没有签名证书和密钥,您无法签署应用程序。

    【讨论】:

    • 嗨,感谢您的回答 :) 由于我只在空闲时间开发 swift,因此我对 MacOS/iOS 应用程序的 CI 并不了解。这个答案帮助我知道代码签名在开发环境中并不重要,但在生产中。所以我通过在我的构建命令中添加 'CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO' 来解决这个问题。
    • @Jonathan,你是怎么做到的?
    猜你喜欢
    • 2021-11-20
    • 2018-06-26
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    相关资源
    最近更新 更多