Ios trong>EDIT(2013年12月5日):这是因为Jenkins服务无法访问钥匙链。例如,在Jenkins作业中,在运行构建脚本之前解锁钥匙链,对其进行排序。(可能不是最优雅的解决方案,但至少它证明了不在脚本中的问题:)
因此,我终于让一切正常工作了……:D Jenkins抱怨“codesign…”运行失败的问题是MacOS(配置)问题 关键是让詹金斯夫妇能够访问系统的钥匙链Jenkins用户登录shell的允许访问权限与在Jenkins用户帐户(!)下运行的Jenkins服务器进程不同。 现在,我通过在运行构建脚本之前在Jenkins作业中运行login.keychain的解锁来实现这一点 比如:“执行shell”的詹金斯工作 这可能不是100%最好的解决方案,但目前它是有效的:pIos trong>EDIT(2013年12月5日):这是因为Jenkins服务无法访问钥匙链。例如,在Jenkins作业中,在运行构建脚本之前解锁钥匙链,对其进行排序。(可能不是最优雅的解决方案,但至少它证明了不在脚本中的问题:),ios,xcode,cordova,xcodebuild,xcrun,Ios,Xcode,Cordova,Xcodebuild,Xcrun,因此,我终于让一切正常工作了……:D Jenkins抱怨“codesign…”运行失败的问题是MacOS(配置)问题 关键是让詹金斯夫妇能够访问系统的钥匙链Jenkins用户登录shell的允许访问权限与在Jenkins用户帐户(!)下运行的Jenkins服务器进程不同。 现在,我通过在运行构建脚本之前在Jenkins作业中运行login.keychain的解锁来实现这一点 比如:“执行shell”的詹金斯工作 这可能不是100%最好的解决方案,但目前它是有效的:p 另请参见:[1]:另一个观察
另请参见:[1]:另一个观察结果(可能还有解释(?)如果我用复制命令等替换“sleep”,我会从该副本中得到一个错误,即“cordova build…”正在创建的应用程序文件夹将不存在!?!事实上——后来——它确实存在。这就是为什么在等待一段时间(“睡眠”)后,它成功了。所以对我来说,‘cordova’似乎不是同步命令(!)意味着:如果它退出(像‘0’),它仍然没有完成!!!听起来合乎逻辑???顺便说一句:我只是在一台速度更快的机器上运行,它有一个功能更强大的CPU和一个SSD,而不是普通的HD。在这样一台速度更快的机器上,所遇到的问题根本不会显示出来。但在我看来,这仍然是cordova中的一个bug……甚至更奇怪:创建了一个出现故障的机器映像,并用该磁盘映像引导功能更强大的机器,问题也在这里出现了!?所以这一定是特定机器/磁盘的MacOS设置的问题(如果出现故障)?奇怪!由于我不是MacOS专家,而且时间紧迫,我在这里放弃:|还有一点需要提及:进一步分析(通过'dtrace'显示,cordova正在调用一个脚本,它本身将启动2个'xcrun…'进程(一个用于设备包/构建,一个用于模拟器包/构建)。但是我们看到,该脚本在某个时间点会被“杀死”信号,这就是为什么第一个xcrun返回到PPID 1(init:),第二个xcrun永远不会执行…并且cordova退出,而第一个xcrun仍然没有完成。添加
code\u SIGN\u IDENTITY=“”CODE\u SIGNING\u REQUIRED=NO
到ios平台目录中的build.xcconfig
文件似乎可以解决这个问题。呃,这样就不会有其他人花费数小时来解决这个问题了……如果您是从SSH构建的,同样的事情也适用!如果没有特殊措施,安全密钥链解锁无法正常工作!#!/bin/bash cordova build ios --release sleep 5 sh -c "xcrun ..."
#!/bin/bash [...] cordova build ios --release signaturefile="platforms/ios/build/device/$appname/_CodeSignature/CodeResources" echo DEBUG:signatur file is $signaturefile while [ ! -f $signaturefile ] do echo waiting sleep 1 done xcrun ...
security unlock-keychain -p password /Users/Shared/Jenkins/Library/Keychains/login.keychain echo ##### building now ###################### ./buildit.sh ios --release -v