从派生终端运行xcodebuild

59

我正在尝试为iPhone应用程序设置自动化构建服务器。我希望能够每晚创建adhoc测试版构建,以便测试人员可以跟进开发。

我已成功设置了xcode以执行adhoc构建,并且也可以通过命令行启动构建:

xcodebuild -configuration AdHoc -sdk iphoneos2.2 clean build

我的问题是,以下行不适用于forked终端(使用nohup或screen),并出现以下错误:

CodeSign error: Code Signing Identity 'iPhone Distribution: XXXXX' does not match any code-signing certificate in your keychain. Once added to the keychain, touch a file or clean the project to continue.

我已经检查了我的shell和nohup或screen中的环境变量,但没有找到线索。我猜想我的问题是forked终端无法访问钥匙串,但我不知道如何允许它访问。

感谢您的帮助。


你能否粘贴你用来启动终端的命令? - Nik Reiman
第一个终端被启动,打开Terminal.app。 第二个使用screen。 - Yann Biancheri
这个问题可以使用sudo解决吗? - adam
我刚刚尝试了使用各种sudo组合运行命令,但始终出现相同的CodeSign错误。 - Yann Biancheri
此问题可能仍会出现,无论是否解锁登录钥匙串。 唯一适用于我的方法是使用钥匙串访问应用程序,并将分发/ adhoc 证书+密钥复制到系统钥匙串中。 - brack
13个回答

2

我无法解锁登录钥匙串。使用Keychain Access创建单独的钥匙串(名为iOS),然后将以下命令添加到构建中可以解决此问题(如果将Jenkins作为我的用户运行):

security -v list-keychains -d system -s ~/Library/Keychains/iOS.keychain; security -v unlock-keychain -p password ~/Library/Keychains/iOS.keychain;

这种方法看起来更有前途:https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin#XcodePlugin-Userinteractionisnotallowed


1

如果您正在以root身份执行xcodebuild(当您使用sudo时),则需要以root身份登录并将您的签名证书放入root的钥匙串中。然后像上面那样使用security解锁钥匙串。


0

我做了以下操作:

  • 从列表中删除login.keychain

  • $HOME/Library/Keychains/中创建自己的钥匙串

  • 将其添加到钥匙串列表中(我没有指定任何特定的域)

  • 将其设置为默认

  • 调用security unlock-keychain来解锁它

  • 将全局签名证书(WWDRCA)添加到其中

  • 将私钥和开发和分发证书导入其中

如果存在login.keychain,我仍然会收到“不允许用户交互”的错误。 因此,最终使用security delete-keychain删除login.keychain有所帮助!


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