Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode,来自Jenkins/SSH的代码设计错误-“;“不允许用户交互”;_Ios_Ssh_Jenkins_Xcodebuild_Codesign - Fatal编程技术网

Ios Xcode,来自Jenkins/SSH的代码设计错误-“;“不允许用户交互”;

Ios Xcode,来自Jenkins/SSH的代码设计错误-“;“不允许用户交互”;,ios,ssh,jenkins,xcodebuild,codesign,Ios,Ssh,Jenkins,Xcodebuild,Codesign,我试图在Jenkins上运行一个自动xcodebuild,但遇到了错误 不允许用户交互。 命令/usr/bin/codesign失败,退出代码为1 我已经引用了和其他类似的线程,但似乎没有一个解决方案能够正确地纠正错误 以下是我已经尝试过的: 我已经允许所有项目访问密钥链,并且我已经专门将codesign添加到“始终允许”列表中(如下所示) 我已经通过keychain Access的设置和命令将keychain设置为不自动锁定超时 security set-keychain-settings

我试图在Jenkins上运行一个自动xcodebuild,但遇到了错误

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

我已经引用了和其他类似的线程,但似乎没有一个解决方案能够正确地纠正错误


以下是我已经尝试过的:

  • 我已经允许所有项目访问密钥链,并且我已经专门将codesign添加到“始终允许”列表中(如下所示)

  • 我已经通过keychain Access的设置和命令将keychain设置为不自动锁定超时

    security set-keychain-settings -t 3600 -l <KEYCHAIN>
    
    安全设置钥匙链设置-t 3600-l
    
  • 我试过打电话

    codesign --sign <CODE SIGN IDENTITY> --force ...
    
    codesign--sign--强制。。。
    
    在项目编译之前(更具体地说,此解决方案), 虽然这成功地构建了这个项目,但我认为编译前的代码签名是不正确或不可靠的。(编辑:从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
安全解锁钥匙链-p
xcodebuild-scheme-workspace-derivedDataPath-configuration“configuration\u BUILD\u DIR=”“CODE\u SIGN\u IDENTITY=”PROVISIONING\u PROFILE=“clean BUILD”
值得注意的是,在机器上构建项目可以使用上面的命令,但是试图通过ssh(和jenkins)运行完全相同的命令会导致错误



提前感谢您的帮助

苹果不支持SSH运行自动构建,因为它们是无头的,因此通过SSH运行可能是这里的问题:

运行GUI时不支持启动守护进程提供的上下文 应用。SSH服务和Jenkins的默认设置是 两者都实现为启动守护进程。在早期版本的Xcode 5中 xcodebuild可以在此上下文中在iOS模拟器上运行测试,但是 这从来都不是一个受支持的配置,正如您所注意到的 从Xcode 6开始不再工作

与LaunchDaemon不同,LaunchAgent提供了一个可以运行的上下文 GUI应用程序-如果用户当时已登录,则显示一个窗口 服务器/水会话。将Jenkins配置从 从LaunchDaemon到LaunchAgent可以避免报告的错误 问题您还可以使用launchd在iOS模拟器上运行测试 从SSH会话,通过手工创建LaunchAgent和手动 加载/启动,或使用“启动CTL提交”


您尝试过使用web代理吗?

以防有人错过它。链接问题中的答案解决了问题。基本上,您需要运行
security-v unlock keychain-p“$keychain\u PASSWORD”“$keychain”
。我在构建和代码设计成功之前运行此操作。

在此处安装Xcode插件:

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


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

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

我已经用Jenkins Xcode插件解决了这个问题

我只是检查一下 解锁钥匙链

Xcode-代码签名和OS X密钥链选项

使我的构建运行

自动构建(Jenkins w/remote SSH)使用productsign,在我们将构建箱从Yosemite升级到Sierra之前运行良好

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

我们尝试了不同的解决方案,但都没有奏效

最终,我通过以下操作修复了它:

  • 打开钥匙链,转到首选项
  • 单击“重置我的默认钥匙链”
  • 显示消息“不允许操作”或类似消息
    • 由于用户是管理员,所以错误没有任何意义
    • 登录密钥链将被删除,但不会重新创建
  • 注销并再次登录
    • 出现新的登录密钥链
    • productsign再次工作(通过自动构建)

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

    jenkins是否有权访问
    /usr/bin/codesign
    ?是的,它确实有权访问没有其他想法:/前一段时间,他正在为iOS项目开发CI工具,而代码签名是一场噩梦。你可以在这里找到解决方案:我刚刚解决了一个类似的问题。在尝试了一切(解锁、设置超时等)之后我将sudo su导入到那个ssh用户中,并尝试模拟完全相同的流,最终在选择“始终允许”后出现一个密钥链弹出窗口(允许、始终允许、拒绝),现在终于可以工作了。我的设置涉及一个哑从OSX机,它控制jenkins(linux)使用through ssh构建IOS应用程序。我花了将近一个半小时的时间试图通过ssh将构建脚本运行到我的构建服务器中。签入我的代码并通过web UI运行脚本,成功构建……省去了我多少痛苦的尝试。谢谢。这实际上是一个非常好的建议,因为它不需要导出变量的密码,也找不到正确的密钥链所在的位置。我遇到了相同的错误,但我已经在使用系统密钥链。结果表明,提示是缺少证书密码短语。打开交互式会话只是为了查看提示要求的内容很有帮助,即使这不是您的最终解决方案。对我有用,仅当您作为meUse的服务运行时才需要此项使用
    安全列表钥匙链
    ,以确定要解锁的钥匙链。通常应为
    “~/Librar