xcodebuild卡在codesign上?如何禁用提示?

7
我正在尝试设置持续集成,特别是针对iOS的circleci。有人已经在这方面做得非常好,详细说明如下:http://mazyod.com/blog/2015/03/26/marry-circleci-to-hockey/。然而,我的xcodebuild总是卡住,看起来它正在等待codesign: /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存储在CircleCI的环境变量中并得到了识别。

这是否会导致弹出提示框,要求用户使用密钥链或其他东西?如果是这样,我应该无处不sudo吗?还是说,我应该如何摆脱这个问题?

我是否没有正确导入证书,或者它们的名称不正确?我使用的是与正常构建相同的确切证书。

3个回答

8
也许执行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").

1
哈。这对我帮助很大。在旧的Mac mini上签署我的xcarchive需要超过5分钟,所以KC可能一直在锁定。现在运行得非常好! - Jason Leach

5

我在使用 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

祝你好运!


谢谢!这个修复了Azure DevOps管道在第一次调用codesign时卡住的问题(我猜测是提示阻塞了调用)。真是太棒了,干杯! - roslyn

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接