xcodebuild 卡在代码设计上?如何禁用提示?
Posted
技术标签:
【中文标题】xcodebuild 卡在代码设计上?如何禁用提示?【英文标题】:xcodebuild stuck on codesign? how to disable prompt? 【发布时间】:2015-08-17 03:44:46 【问题描述】:我正在尝试设置持续集成,特别是针对circleci
与 ios。有人写得很详细: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/
我在circle ci 的环境变量中存储$KEY_PASSWORD
并正在被识别。
这是否导致弹出提示允许用户使用钥匙串或其他东西?如果是这样,我只是应该到处sudo吗?或者我该如何摆脱它?
我没有导入正确的证书吗?他们是错误地命名还是什么?我使用了我正常构建时使用的那些。
【问题讨论】:
【参考方案1】:如果您的构建过程花费了很长时间,它可能在执行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").
【讨论】:
哈。这对我帮助很大。在旧的 Mac mini 上签署我的 xcarchive 只需 5 分钟多一点,所以 KC 一定是锁定的。现在效果很好!【参考方案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
祝你好运!
【讨论】:
【参考方案3】:您混淆了 P12_PASSWORD 和 KEYCHAIN_PASSWORD! 原文请看:https://github.com/thorikawa/CircleCI-iOS-TestFlight-Sample/blob/master/scripts/add-key.sh
从那里,您可以看到 create-keychain 和 unlock-keychain 使用 KEYCHAIN_PASSWORD,import 使用 P12_PASSWORD!
所以你需要存储两个密码并正确使用它们!
【讨论】:
以上是关于xcodebuild 卡在代码设计上?如何禁用提示?的主要内容,如果未能解决你的问题,请参考以下文章