来自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,但都没有成功。
最终,我把它固定下来:
- 打开钥匙串,转到首选项
- 点击“重置我的默认钥匙串”
- 消息“不允许操作”或类似的消息显示出来
- 由于用户是pipe理员,错误没有任何意义
- login钥匙串被删除,但不能重新创build。
- 注销并重新login
- 出现新的login钥匙串
- 产品信号再次工作(通过自动构build)
请注意我们的“开发者ID安装者:ACME,Inc(12345ABCDE)”证书在系统密钥链中。