我们的自动化构建正在詹金斯(Jenkins)上运行。构建本身在从奴隶上运行,奴隶通过SSH执行。

我有一个错误:

00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.

我已经尝试了到目前为止在此处其他帖子中看到的所有建议:

  • 在签名之前,请立即使用Security Unlock-Keychain解锁钥匙扣。
  • 将签名钥匙移到自己的钥匙扣中。
  • 将签名键移至登录键链中。
  • 将签名键移至系统键链中。
  • 手动将List-Keychains设置为仅包含密钥的键链。

在所有情况下,我都会遇到相同的错误。

为了诊断问题,我试着运行"安全unlock-keychain"命令在我的本地终端,发现它实际上并不解锁钥匙链的钥匙链——如果我访问锁象征仍然存在。运行命令后立即查看键锁。这使我认为解锁键链实际上无效。我在狮子(我们用于建筑物奴隶)和小牛(我正在发展的狮子)上经历了相同的行为。

接下来,我尝试将-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.

从中,列表键链似乎是不起作用的。也许没有工作。://

有一个在这里类似的问题。该解决方案很有趣 - 将" SessionCreate"设置为true在launchctl中。但是我不是在主人上构建的 - 我的构建过程是从从属机器上的SSH开始的。也许有一种命令行的方法可以在运行" SessionCreate"时执行启动CTCTL正在做什么?

答案

好吧,我想我今天可以回答我自己的问题,因为经过两天半的努力,我尝试过的其中一件事似乎奏效了。

本质上,看起来归结为-d system实际上没有工作。因此,在此处的其他问题的许多答案可能应该更新以反映这一点。

security -v list-keychains -s "$KEYCHAIN" "$HOME/Library/Keychains/login.keychain"
security list-keychains # so we can verify that it was added if it fails again
security -v unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
codesign --sign "$SIGNER_IDENTITY" --force --signature-size 9600 \
         --resource-rules src/AppResourceRules.plist --timestamp --verbose \
         "$APP"

来自: stackoverflow.com