kev*_*boh 20 continuous-integration hudson objective-c codesign ios
我的公司使用一台构建机器(Mac Mini)作为CI节点来构建我们的iOS应用程序.我们目前在mini上构建了一个Ad-Hoc和一个App Store配置.我们最近注册了企业计划,并希望开始构建企业配置.但是,我们的构建过程现在失败了,因为我们现在有两个名为"iPhone Distribution:Widget Corporation"的证书.一个是AdHoc/AppStore的分发证书,一个是Enterprise(Apple称之为In-House).
我已经尝试修改mini的钥匙链,使得一个证书在登录钥匙串中,一个在一个名为"enterprise"的新钥匙串中,但这只是从构建开始转移了错误:
CodeSign error: Certificate identity 'iPhone Distribution: Widget Corporation' appears more than once in the keychain.
Run Code Online (Sandbox Code Playgroud)
到构建结束时:
iPhone Distribution: Widget Corporation: ambiguous (matches "iPhone Distribution: Widget Corporation" in /Users/hudson.admin/Library/Keychains/login.keychain and "iPhone Distribution: Widget Corporation" in /Users/hudson.admin/Library/Keychains/enterprise.keychain)
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有办法正确沙箱两个证书,以便我可以在同一台机器上构建应用程序的Ad-Hoc,App Store和内部版本.我还没有尝试的唯一可能的解决方案是将证书与源捆绑在一起,并根据security需要添加和删除证书; 显然,解决方案不是很漂亮,并带来安全风险.
有任何想法吗?
kev*_*boh 17
在与Apple Developer Technical Support讨论后,他们建议创建单独的钥匙串来存放不同的证书,然后将--keychain filename参数传递codesign给指向相应文件的步骤.您可以使用该OTHER_CODE_SIGN_FLAGS选项将此参数传递给Xcode或xcodebuild .例如:
xcodebuild -target "<targetname>" -configuration "<configname>" \
PROVISIONING_PROFILE=A3A47A82-E91F-4E95-8559-601C6C857053 \
OTHER_CODE_SIGN_FLAGS="--keychain=/Users/username/Library/Keychains/enterprise.keychain" \
build
Run Code Online (Sandbox Code Playgroud)
此外,在创建新的钥匙串后,它似乎默认在5分钟后重新锁定 - 如果你的构建需要一段时间,你可能想要更改它.
另一种帮助我的方法是将签名身份作为SHA1哈希给codeign.脚步:
security find-identity -v -p codesigningcodesign -s "SHA1_FROM_STEP2" ...| 归档时间: |
|
| 查看次数: |
4906 次 |
| 最近记录: |