我继承了一个使用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]/环境变量