由于 xcodebuild 命令中的 CODE_SIGN_IDENTITY,CircleCI 构建失败

CircleCI build fails because of CODE_SIGN_IDENTITY in xcodebuild command

我继承了一个使用 Fastlane 和 CircleCI 生成构建的项目。它已经坏了一段时间,但我设法让它的大部分重新工作。然而实际构建在构建服务器上一直失败,本地我所有的通道都已经成功完成。

我一直在比较本地发生的事情和 CI 服务器上发生的事情,不同之处似乎在于 Circle 归档项目的方式。我已经更改了它,所以它会在本地 运行 并且错误保持不变:

xcodebuild -workspace ./App.xcworkspace -scheme App -configuration AdHoc -destination generic/platform=iOS -archivePath "/Users/me/Library/Developer/Xcode/Archives/2020-08-14/App 2020-08-14 13.08.37.xcarchive" archive "CODE_SIGN_IDENTITY=iPhone Distribution: ACME"

结果:

error: No certificate for team '123ABC4DEF' matching 'iPhone Distribution: ACME' found: Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning. (in target '***********-SomeLibrary' from project '***********')

看起来它不仅要使用 CODE_SIGN_IDENTITY 对主应用程序进行签名,还希望 'iPhone Distribution: ACME' 显式存在并且在不存在时失败。

只要我删除最后的 CODE_SIGN_IDENTITY 部分,它就会在本地开始工作:

xcodebuild -workspace ./App.xcworkspace -scheme App -configuration AdHoc -destination generic/platform=iOS -archivePath "/Users/me/Library/Developer/Xcode/Archives/2020-08-14/App 2020-08-14 13.08.37.xcarchive" archive"

我一直在梳理所有可能被硬编码指定的设置,但我找不到任何东西。例如,GYM_CODE_SIGN_IDENTITY 尚未添加。那么它怎么可能不使用 Fastlane 在本地添加 CODE_SIGN_IDENTITY 标志,而是在服务器上远程添加?

我发现它是在 CircleCI 的配置中设置的一个变量:

https://app.circleci.com/settings/project/github/[your_org]/[your_app]/environment-variables