来自Jenkins / SSH的Xcode,Codeign错误 - "不允许用户交互"

时间:2014-10-20 21:39:56

标签: ios ssh jenkins xcodebuild codesign

我正在尝试在Jenkins上运行自动xcodebuild,但我遇到了错误

不允许用户互动。 命令/ usr / bin / codesign失败,退出代码为

我已经引用了"User interaction is not allowed" trying to sign an OSX app using codesign和其他类似的线程,但是没有一个解决方案能够正确地解决错误。


以下是我已尝试过的内容:

  • 我已允许所有项目访问钥匙串,并且我已将codeign特别添加到“始终允许”列表中(如https://stackoverflow.com/a/22637896所述)

  • 我已经将钥匙串设置为不会通过Keychain Access的设置和命令

    自动锁定超时
    security set-keychain-settings -t 3600 -l <KEYCHAIN>
    
  • 我试过调用

    codesign --sign <CODE SIGN IDENTITY> --force ...
    
    在项目编译之前

    (更具体地说,这个解决方案https://stackoverflow.com/a/20208104), 虽然这成功地构建了项目,但我认为编译前的协同设置是正确或可靠的。 (编辑:从jenkins运行时也失败了)


以下是我正在执行的命令:

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


提前感谢您的帮助!

6 个答案:

答案 0 :(得分:13)

Apple不支持SSH来运行自动构建,因为它们是headless,因此通过SSH运行可能是问题所在:

  

运行GUI不支持LaunchDaemons提供的上下文   应用。 SSH服务和Jenkins的默认设置是   两者都实现为LaunchDaemons。在早期版本的Xcode 5中   xcodebuild可以在这个上下文中运行iOS模拟器上的测试,但是   这从来都不是受支持的配置,正如您已经注意到的那样   已不再使用Xcode 6。

     

与LaunchDaemons不同,LaunchAgents提供了可以运行的上下文   GUI应用程序 - 如果用户当时使用窗口登录   服务器/ Aqua会话。从中转换Jenkins配置   成为LaunchAgent的LaunchDaemon将避免报道   问题。您还可以使用launchd在iOS模拟器上运行测试   来自SSH会话,可以通过手工制作LaunchAgent   加载/启动,或使用“launchctl submit”。

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

答案 1 :(得分:10)

万一有人错过了。链接问题的答案解决了这个问题。基本上你需要运行security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"。我在构建之前运行它并且代码签名成功。

答案 2 :(得分:6)

将您的密钥放在系统密钥链中,而不是登录/ iCloud /本地项目。

答案 3 :(得分:3)

在此处安装XCode插件:https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin

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

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

答案 4 :(得分:1)

我使用Jenkins Xcode插件解决了这个问题。

我只是检查一下 解锁钥匙扣?

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

让我的构建运行。

enter image description here

答案 5 :(得分:0)

使用productsign的自动构建(Jenkins w / remote SSH)运行良好,直到我们将构建盒从Yosemite升级到Sierra。

  

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

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

最后,我修复了以下内容:

  1. 打开钥匙串,转到偏好设置
  2. 点击重置我的默认钥匙串&#39;
  3. 消息&#39;操作不被允许&#39;或类似的出现
    • 错误没有任何意义,因为用户是管理员
    • 登录钥匙串被删除,但不会重新创建。
  4. 退出并重新登录
    • 出现新的登录钥匙串
    • productsign再次工作(通过自动构建)
  5. 请注意我们的开发者ID安装程序:ACME,Inc(12345ABCDE)&#39;证书在系统密钥链中。