我正在尝试在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)运行完全相同的命令会导致错误。
提前感谢您的帮助!
答案 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)
答案 5 :(得分:0)
使用productsign的自动构建(Jenkins w / remote SSH)运行良好,直到我们将构建盒从Yosemite升级到Sierra。
productsign [4065:51711]配置RSA签名时出错:不允许用户交互。 (-25308)
我们尝试了在SO上找到的不同解决方案,但都没有。
最后,我修复了以下内容:
请注意我们的开发者ID安装程序:ACME,Inc(12345ABCDE)&#39;证书在系统密钥链中。