Ios Xcode,来自Jenkins/SSH的代码设计错误-“;“不允许用户交互”;
我试图在Jenkins上运行一个自动xcodebuild,但遇到了错误 不允许用户交互。 命令/usr/bin/codesign失败,退出代码为1 我已经引用了和其他类似的线程,但似乎没有一个解决方案能够正确地纠正错误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
以下是我已经尝试过的:
- 我已经允许所有项目访问密钥链,并且我已经专门将codesign添加到“始终允许”列表中(如下所示)
- 我已经通过keychain Access的设置和命令将keychain设置为不自动锁定超时
security set-keychain-settings -t 3600 -l <KEYCHAIN>
安全设置钥匙链设置-t 3600-l
- 我试过打电话
codesign --sign <CODE SIGN IDENTITY> --force ...
在项目编译之前(更具体地说,此解决方案), 虽然这成功地构建了这个项目,但我认为编译前的代码签名是不正确或不可靠的。(编辑:从jenkins运行时也失败)codesign--sign
--强制。。。
以下是我正在执行的命令:
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