来自Jenkins / SSH的Xcode,Codesign Error – “用户交互不被允许”

我想在Jenkins上运行一个自动化的xcodebuild,但是我遇到了错误

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

我已经引用了“用户交互不被允许”尝试使用codesign和其他类似的线程来签署OSX应用程序 ,但是没有一个解决scheme似乎正确地解决了错误。


这是我已经尝试过的:

  • 我已经允许所有项目访问钥匙串,并且我已经特别添加了对“始终允许”列表的编码(正如https://stackoverflow.com/a/22637896所做的那样)

  • 我已经设置钥匙串不会自动locking超时,无论是通过钥匙串访问的设置,并通过命令

    security set-keychain-settings -t 3600 -l <KEYCHAIN> 
  • 我曾试过打电话

     codesign --sign <CODE SIGN IDENTITY> --force ... 

    在项目编译之前(更具体地说,这个解决schemehttps://stackoverflow.com/a/20208104 ),虽然这成功地build立了项目,我不认为编译之前的编码是正确的或可靠的。 (编辑:这从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 

需要注意的是,在机器上构build项目可以使用上面的命令,但是试图通过ssh(和jenkins)运行完全相同的命令会导致错误。


在此先感谢您的帮助!

由于Apple不支持SSH,因此无法运行自动构build,所以通过SSH运行可能会成为问题:

运行GUI应用程序不支持LaunchDaemons提供的上下文。 SSH服务和Jenkins的默认设置都是以LaunchDaemons的forms实现的。 在Xcode 5的早期版本中,xcodebuild可以在这个上下文中的iOS模拟器上运行testing,但是这从来不是受支持的configuration,正如你已经注意到的,它不再是Xcode 6的工作。

与LaunchDaemons不同,LaunchAgents提供了一个可以运行GUI应用程序的上下文 – 如果用户在当时login,则使用窗口服务器/ Aqua会话。 将Jenkinsconfiguration从LaunchDaemon转换为LaunchAgent将避免报告的问题。 您还可以使用launchd从SSH会话在iOS模拟器上运行testing,可以通过制作LaunchAgent并手动加载/启动,或使用“launchctl submit”。

你有没有尝试使用networking代理?

以防万一有人错过了。 相关问题的答案可以解决这个问题。 基本上你需要运行security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" 。 我在构build和代码签名成功之前运行这个。

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

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

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

确保你设置了$ HOME环境variables。 从经验来看,只需像开发人员那样使用机器login就好了。

我已经通过Jenkins Xcode插件来解决这个问题。

我只是检查解锁钥匙扣?

Xcode – 代码签名和OS X钥匙串选项

使我的构build运行。

在这里输入图像说明

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

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

我们尝试了不同的解决scheme,但都没有成功。

最终,我把它固定下来:

  1. 打开钥匙串,转到首选项
  2. 点击“重置我的默认钥匙串”
  3. 消息“不允许操作”或类似的消息显示出来
    • 由于用户是pipe理员,错误没有任何意义
    • login钥匙串被删除,但不能重新创build。
  4. 注销并重新login
    • 出现新的login钥匙串
    • 产品信号再次工作(通过自动构build)

请注意我们的“开发者ID安装者:ACME,Inc(12345ABCDE)”证书在系统密钥链中。