来自Jenkins/SSH的Xcode,Codeign错误 - "不允许用户交互"

rey*_*s20 19 ssh xcodebuild codesign ios jenkins

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

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

我已经引用了"不允许用户交互"尝试使用codesign和其他类似线程签署OSX应用程序,但没有一个解决方案似乎能够正确地修复错误.


这是我已经尝试过的:

  • 我已经允许所有项目访问钥匙串,并且我已经特别添加了代码签名到"始终允许"列表(在此处完成/sf/answers/1584652751/)

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

    security set-keychain-settings -t 3600 -l <KEYCHAIN>
    
    Run Code Online (Sandbox Code Playgroud)
  • 我试过打电话

    codesign --sign <CODE SIGN IDENTITY> --force ...
    
    Run Code Online (Sandbox Code Playgroud)

    在项目编译之前(更具体地说,这个解决方案/sf/answers/1414567311/),虽然这成功地构建了项目,但我认为编译前的协同设置是正确或可靠的.(编辑:从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
Run Code Online (Sandbox Code Playgroud)

有趣的是要在机器上构建项目使用上面的命令,但尝试通过ssh(和jenkins)运行完全相同的命令会导致错误.


在此先感谢您的帮助!

Mic*_*Loo 13

Apple不支持SSH以自动运行自动构建headless,因此通过SSH运行可能是这里的问题:

运行GUI应用程序不支持LaunchDaemons提供的上下文.SSH服务和Jenkins的默认设置都实现为LaunchDaemons.在Xcode 5的早期版本中,xcodebuild可以在此上下文中在iOS模拟器上运行测试,但这从来都不是受支持的配置,并且正如您已经注意到Xcode 6不再有效.

与LaunchDaemons不同,LaunchAgents提供了一个上下文,您可以在其中运行GUI应用程序 - 如果用户当时使用窗口服务器/ Aqua会话登录.将Jenkins配置从LaunchDaemon转换为LaunchAgent将避免报告的问题.您还可以使用launchd从SSH会话在iOS模拟器上运行测试,方法是制作LaunchAgent并手动加载/启动它,或者使用"launchctl submit".

您是否尝试过使用Web代理?


mom*_*omo 12

万一有人错过了它.链接问题的答案解决了这个问题.基本上你需要跑步security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN".我在构建之前运行它,并且代码签名成功.


Ali*_*tra 7

将您的密钥放入系统密钥链而不是Login/iCloud/Local Items.