Xcode中,从詹金斯/ SSH协同设计错误 - “用户交互不允许”
我试图运行詹金斯自动化xcodebuild联编,但我遇到了错误不允许Xcode中,从詹金斯/ SSH协同设计错误 - “用户交互不允许”
用户交互。退出码1
我已经提到"User interaction is not allowed" trying to sign an OSX app using codesign和其他类似的线程 命令/ usr/bin中/协同设计失败了,但没有解决方案似乎正确地纠正错误。
以下是我已经尝试过:
我已经允许所有项目访问钥匙串,我还特意加入协同设计的“总是允许”列表(如在这里完成https://*.com/a/22637896)
-
我已设置钥匙串不会自动锁定超时,无论是通过Keychain Access的设置还是通过命令
security set-keychain-settings -t 3600 -l <KEYCHAIN>
-
我已经打过电话
codesign --sign <CODE SIGN IDENTITY> --force ...
项目编译之前(更具体地说,该解决方案https://*.com/a/20208104), 虽然这成功地构建了项目,我不认为在编译之前代码签名是正确的或可靠。 (编辑:从詹金斯运行时,这也失败了)
这里是命令我执行:
security unlock-keychain -p <PASSWORD> <KEYCHAIN>
xcodebuild -scheme <SCHEME> -workspace <WORKSPACE> -derivedDataPath <BUILD DIRECTORY> -configuration <CONFIGURATION> "CONFIGURATION_BUILD_DIR=<BUILD DIRECTORY>" "CODE_SIGN_IDENTITY=<CODE SIGN ID>" "PROVISIONING_PROFILE=<PROVISIONING PROFILE>" clean build
一些有趣的注意的是,建设项目在机器上使用上面的命令,但试图通过ssh(和jenkins)运行完全相同的命令会导致错误。
预先感谢您的帮助!
SSH不被苹果公司的支持,因为他们headless
运行自动化构建,通过SSH所以运行可能是这里的问题:
由LaunchDaemons提供的上下文不支持运行GUI 应用。 SSH服务和Jenkins的默认设置均为 ,均以LaunchDaemons实现。在Xcode 5 的早期版本中,xcodebuild可以在此上下文中的iOS模拟器上运行测试,但 从来不是受支持的配置,并且您已经注意到 已不再适用于Xcode 6。
不像LaunchDaemons,LaunchAgents提供一个框架,你可以运行 GUI应用程序 - 如果用户在时间登录,与窗口 服务器/水族会话。将Jenkins配置从 作为LaunchDaemon转换为LaunchAgent将避免报告的 问题。您也可以,或者通过制作一个LaunchAgent和手动 装载/启动是,或通过使用“launchctl提交”使用的launchd运行在iOS模拟器 从SSH会话测试。
您是否尝试过使用网络代理呢?
花了近一个半小时,试图让我的构建脚本通过ssh'ing工作到我的构建服务器。检查我的代码,并通过Web UI运行脚本并成功构建...救了我,上帝知道还有多少次痛苦的尝试。谢谢。 – Taz 2015-11-11 10:52:33
安装的XCode插件这里:https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin
选择解锁钥匙串并提供钥匙链路径的选项。例如$ {HOME} /Library/Keychains/login.keychain
确保您设置了$ HOME环境变量。从经验来看,让机器像开发人员一样以用户身份登录就更容易。
将您的密钥放入系统钥匙串,而不是登录/ iCloud/Local Items。
这实际上是一个非常好的建议,因为它不需要将密码输出到变量,也不需要找到正确的钥匙串所在的位置。 – igraczech 2016-03-11 13:45:23
这应该被选为正确的答案 – 2016-05-28 11:49:47
自动构建(詹金斯W /远程SSH),其使用productsign,效果很好,直到我们从优胜美地升级,构建框塞拉利昂。
productsign [4065:51711]配置RSA签名时出错:不允许用户交互。 (-25308)
我们尝试过在SO上找到的不同解决方案,但都没有工作。
最后,我固定它做以下几点:
- 打开钥匙串,去首
- 点击“重置我的默认钥匙串”
- 消息“操作不允许”或类似的节目了
- 错误没有任何意义,因为用户是管理员
- 登录钥匙串被删除,但不能重新创建。
- 注销并重新登录
- 新的登录钥匙串出现
- productsign再次工作(通过自动生成)
请注意我们的“开发者ID安装:ACME,公司(12345ABCDE)'证书位于系统密钥链中。
jenkins是否可以访问'/ usr/bin/codesign'? – Opal 2014-10-21 05:23:10
是的,它有访问权限 – reyes20 2014-10-21 16:27:58
没有其他的想法:/前一段时间是开发iOS项目的CI工具和codesigning是一个噩梦。 – Opal 2014-10-21 16:30:56