我正在尝试进行持续集成设置,特别是针对iOS的circleci
。有人在写这个细节方面做得很好:http://mazyod.com/blog/2015/03/26/marry-circleci-to-hockey/
然而,我的xcodebuild总是卡住了,看起来它正在等待代码签名:
/usr/bin/codesign --force --sign...
日志显示它已运行超过一个小时。我的猜测是...这个命令是等待输入还是什么?
如果是这样,我如何强制它使用我使用分发证书/私钥创建的钥匙串?
这是脚本(add-keys.sh)的样子:
#!/bin/sh
security -v create-keychain -p $KEY_PASSWORD ios-build.keychain
security -v import ./utils/build_tools/custom_builds/apple.cer -k ~/Library/Keychains/ios-build.keychain -T /usr/bin/codesign
security -v import ./utils/build_tools/custom_builds/distribution.cer -k ~/Library/Keychains/ios-build.keychain -T /usr/bin/codesign
security -v import ./utils/build_tools/custom_builds/distribution_cert_private_key.p12 -k ~/Library/Keychains/ios-build.keychain -P $KEY_PASSWORD -T /usr/bin/codesign
security -v list-keychain -s ~/Library/Keychains/ios-build.keychain
security -v unlock-keychain -p $KEY_PASSWORD ~/Library/Keychains/ios-build.keychain
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp ./utils/build_tools/custom_builds/profile/* ~/Library/MobileDevice/Provisioning\ Profiles/
ls ~/Library/MobileDevice/Provisioning\ Profiles/
我将$KEY_PASSWORD
存储在圈子ci的环境变量中,并且正在被识别。
是否会导致弹出提示允许用户使用钥匙串或其他东西?如果是这样,我到底应该去sudo吗?或者我该如何摆脱这个?
我没有导入正确的证书或什么?他们错误地命名了什么?我使用了我用来正常构建的那些。
答案 0 :(得分:2)
我对Circle CI 2.0和xcode> = 9.0有同样的问题。
看起来像MacOS Sierra中的问题(以及带有凭据提示的弹出窗口)。
您只需使用以下命令作为构建步骤即可修复它:
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD circle.keychain
我在Circle CI中发现了解决问题的讨论:
https://discuss.circleci.com/t/xcode-8-3-build-timing-out/11721/5
祝你好运!答案 1 :(得分:2)
如果您的构建过程需要很长时间,可能会在执行security unlock-keychain
后重新锁定。
默认超时为300秒。 (您可以使用security show-keychain-info <your keychain path>
进行检查。)
您可以像这样扩展它:
# Extend the timeout to 600s
security set-keychain-settings -lut 600
仅供参考,它在man security
中描述如下:
set-keychain-settings [-hlu] [-t timeout] [keychain]
Set settings for keychain, or the default keychain if none is specified.
-l Lock keychain when the system sleeps.
-u Lock keychain after timeout interval.
-t timeout Specify timeout interval in seconds (omitting this option specifies "no timeout").
答案 2 :(得分:0)
你混淆了P12_PASSWORD和KEYCHAIN_PASSWORD! 请参阅原始版本:https://github.com/thorikawa/CircleCI-iOS-TestFlight-Sample/blob/master/scripts/add-key.sh
从那里,您可以看到create-keychain和unlock-keychain使用KEYCHAIN_PASSWORD,导入使用P12_PASSWORD!
所以你需要存储两个密码并正确使用它们!