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)运行完全相同的命令会导致错误。


预先感谢您的帮助!

+0

jenkins是否可以访问'/ usr/bin/codesign'? – Opal 2014-10-21 05:23:10

+0

是的,它有访问权限 – reyes20 2014-10-21 16:27:58

+0

没有其他的想法:/前一段时间是开发iOS项目的CI工具和codesigning是一个噩梦。 – Opal 2014-10-21 16:30:56

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会话测试。

您是否尝试过使用网络代理呢?

+0

花了近一个半小时,试图让我的构建脚本通过ssh'ing工作到我的构建服务器。检查我的代码,并通过Web UI运行脚本并成功构建...救了我,上帝知道还有多少次痛苦的尝试。谢谢。 – Taz 2015-11-11 10:52:33

万一有人错过了它。在链接的问题的回答解决这个问题。基本上你需要运行security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN",我构建之前运行这和协同设计成功。

+0

为我工作,这只需要,如果你作为我的服务运行 – Alon 2017-06-27 12:49:42

+0

它适用于我。 – keyOfVv 2017-09-07 03:10:24

安装的XCode插件这里:https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin

选择解锁钥匙串并提供钥匙链路径的选项。例如$ {HOME} /Library/Keychains/login.keychain

确保您设置了$ HOME环境变量。从经验来看,让机器像开发人员一样以用户身份登录就更容易。

将您的密钥放入系统钥匙串,而不是登录/ iCloud/Local Items。

+0

这实际上是一个非常好的建议,因为它不需要将密码输出到变量,也不需要找到正确的钥匙串所在的位置。 – igraczech 2016-03-11 13:45:23

+0

这应该被选为正确的答案 – 2016-05-28 11:49:47

我已经通过Jenkins Xcode插件解决了这个问题。我想查询 解锁钥匙扣?

的Xcode - 代码签名& OS X钥匙串选项

,使我的构建运行。

enter image description here

自动构建(詹金斯W /远程SSH),其使用productsign,效果很好,直到我们从优胜美地升级,构建框塞拉利昂。

productsign [4065:51711]配置RSA签名时出错:不允许用户交互。 (-25308)

我们尝试过在SO上找到的不同解决方案,但都没有工作。

最后,我固定它做以下几点:

  1. 打开钥匙串,去首
  2. 点击“重置我的默认钥匙串”
  3. 消息“操作不允许”或类似的节目了
    • 错误没有任何意义,因为用户是管理员
    • 登录钥匙串被删除,但不能重新创建。
  4. 注销并重新登录
    • 新的登录钥匙串出现
    • productsign再次工作(通过自动生成)

请注意我们的“开发者ID安装:ACME,公司(12345ABCDE)'证书位于系统密钥链中。