我们的自动化构建在 Jenkins 上运行。构建本身在从属设备上运行,从属设备通过 SSH 执行。
我收到错误:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
我已经尝试了迄今为止在其他帖子中看到的所有建议:
- 在签名之前立即使用 security unlock-keychain 来解锁钥匙串(keychain)。
- 将签名 key 移至其自己的钥匙串(keychain)中。
- 将签名 key 移至登录钥匙串(keychain)中。
- 将签名 key 移至系统钥匙串(keychain)中。
- 手动将 list-keychains 设置为仅包含该 key 的钥匙串(keychain)。
在所有情况下,我都会遇到相同的错误。
为了诊断问题,我尝试在本地终端上运行“安全解锁钥匙串(keychain)”命令,发现它实际上并没有解锁钥匙串(keychain) - 如果我在“钥匙串(keychain)访问”中查看,锁定符号仍然是那里。无论我在命令行上传递密码还是让它提示我输入密码,都是这种情况。使用 GUI 解锁同一个钥匙串(keychain)将提示我输入密码,然后解锁。此外,如果我运行“security lock-keychain”,我确实在运行命令后立即看到 key 锁。这让我觉得解锁钥匙串(keychain)实际上不起作用。我在 Lion(我们用于构建奴隶)和 Mavericks(我正在开发)上经历了相同的行为。
接下来,我尝试将 -v 添加到所有安全命令中:
list-keychains "-d" "system" "-s" "/Users/tester/.secret/App.keychain"
Listing keychains to see if it was added: ((
"/Library/Keychains/System.keychain"
))
unlock-keychain "-p" "**PASSWORD**" "/Users/tester/.secret/App.keychain"
build/App.app: User interaction is not allowed.
由此看来,列表钥匙串(keychain)似乎不起作用。也许两者都不起作用。 :/
有一个similar question here 。解决方案很有趣 - 在 launchctl 中将“SessionCreate”设置为 true。但我不是在主服务器上构建 - 我的构建过程是从从构建机器上的 SSH 启动的。也许有一种命令行方式可以执行 launchctl 在运行“SessionCreate”时所做的事情?
最佳答案
我也一直在为此奋斗。直到我尝试了 http://devnet.jetbrains.com/thread/311971 上的建议,一切都没有帮助。 。谢谢阿希什·阿格拉瓦尔!
通过 GUI 登录您的构建用户并打开钥匙串(keychain)访问。选择您的签名私钥,右键单击,选择“获取信息”,切换到“访问控制”选项卡,然后选择“允许所有应用程序访问此项目”。
关于macos - "User interaction is not allowed"尝试使用 codesign 对 OSX 应用程序进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20205162/