14

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

我有:

  • 专用的 Mac Mini。
  • 一个名为“build”的用户帐户
  • Hudson通过在 /Users/build/Library/LaunchAgents 中放置一个 plist 设置为构建的 LaunchAgent
    • 尝试作为以 hudson 身份运行的系统范围的 LaunchDaemon,但随后无法访问构建用户的登录钥匙串。长篇大论,满满的心酸。
  • 系统设置为在启动时自动登录“build”,以便 Hudson 开始运行。

最大的问题是代码设计和钥匙串。

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

我想把 Mini 放在一个很黑的房间里,从不看它,但是当你第一次使用开发人员身份构建时,会弹出一个 GUI 对话框,询问你是否要始终允许 codesign 访问开发人员身份。

假设您这样做,该对话框会修改钥匙串访问控制列表 (ACL),以便允许进行协同设计。

您可以通过打开钥匙串访问、展开证书、选择私钥、右键单击、选择获取信息,然后切换到访问控制选项卡来查看此信息。“原始”密钥将仅在其“始终允许”应用程序列表中具有钥匙串访问权限。您在对话框中使用并确认的一个也将具有共同设计。

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

有谁知道解决这个问题的方法?

我知道使用“安全导入”的 -T 开关的一种方法,但是首先在导入密钥时必须指定 ACL,因此必须丢弃并重新导入 Keychain GUI 中添加的任何密钥。不是很好。

4

4 回答 4

20

通常,Keychain 的 Get Info 对话框呈现给您的文件系统的“已清理”版本不允许您访问隐藏的 /usr/bin 目录,但我找到了解决此问题的方法。

  1. 获取正常的 Finder 窗口以显示所有文件。如果您不知道如何执行此操作,请查看这篇文章
  2. 在普通的 Finder 窗口中,导航到 /usr/bin
  3. 将 bin 拖到边栏中的 Places 区域。现在 bin 是您可以从任何地方访问的快捷方式。
  4. 在 Keychain 的 Get Info -> Access Control 窗格中,单击“+”按钮打开查找应用程序对话框。
  5. 单击现在位于此侧边栏上的地方下的垃圾箱。
  6. 导航到并选择协同设计。
  7. 单击保存更改按钮。
于 2011-03-22T16:58:10.563 回答
6

刚刚注册非常感谢你,大卫·博伊克。很好的解决方法,对我帮助很大。但是有一个更好的方法可以做到这一点。

Open File Dialog press 'Cmd' + 'Shift' + '.'

该组合应该切换文件系统上隐藏项目的可见性。如果组合无效,请尝试将演示模式更改为“列表”或“网格”,然后再试一次。

谢谢,祝你好运!

于 2014-04-25T11:40:58.363 回答
4

我通过执行一个applescript找到了一个解决方案,该脚本在没有安全性或certtool添加ACL权限后“单击”“始终允许”按钮。

#!/usr/bin/osascript
tell application "System Events"
  tell window 1 of process "SecurityAgent"
    click button "Always Allow" of group 1
  end tell
end tell
于 2011-03-16T18:02:17.470 回答
3

好的,这花了我将近半天的时间才弄清楚,但我现在可以正常工作了。我在关注这篇文章

该文章显示使用 -A 选项添加这样的证书,但这对我不起作用。

security import "ADistribution.p12" -k appledev -f pkcs12 -A -P ""

这个问题提到了对我有用的 -T 选项。

security import "Distribution.p12" -k appledev -f pkcs12 -P "" -T /usr/bin/codesign
于 2013-04-26T04:06:03.770 回答