相关疑难解决方法(0)

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

我试图在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)运行完全相同的命令会导致错误.


在此先感谢您的帮助!

ssh xcodebuild codesign ios jenkins

19
推荐指数
3
解决办法
2万
查看次数

将codeign添加到没有Keychain的私钥ACL

我正在尝试为稳定的iPhone应用程序设置持续构建/集成.

我有:

  • 专用的Mac Mini.
  • 名为"build"的用户帐户
  • 通过在/ Users/build/Library/LaunchAgent中删除一个plist,Hudson设置为LaunchAgent用于构建
    • 尝试作为hudson运行的系统范围的LaunchDaemon,但后来无法访问构建用户的登录密钥链.漫长的故事,充满了心痛.
  • 系统设置为在启动时自动登录"build",以便Hudson开始运行.

最大的问题是代码签名和钥匙串.

我们代表客户的开发者身份创建代码,因此我们有几个开发人员身份,我们将添加更多.

我想将Mini放在一个黑暗的房间里,从不看它,但是第一次使用开发者身份构建时,会弹出一个GUI对话框,询问您是否要始终允许codesign访问开发者身份.

假设您这样做,该对话框修改了钥匙串访问控制列表(ACL),以便允许使用代码签名.

您可以通过打开Keychain Access,扩展证书,选择私钥,右键单击,选择"获取信息",然后切换到"访问控制"选项卡来查看此信息."处女"密钥只在其"始终允许"应用程序列表中具有Keychain Access.您在对话框中使用和确认的一个也将具有编码.

这个框提供了一种添加应用程序的方法,除了你得到标准的Finder文件选择器,它隐藏了Unix文件夹.没有办法导航到/ usr/bin/codesign.所以手动添加是不可能的!

有没有人知道这方面的方法?

我知道有一种方法使用"安全导入"的-T开关,但是当你首先导入密钥时必须指定ACL,因此在Keychain GUI中添加的任何键都必须被抛出并重新导入.不是很好.

iphone continuous-integration keychain codesign ios

14
推荐指数
2
解决办法
5253
查看次数