Jenkinsで自動ビルドが実行されています。ビルド自体はスレーブで実行されており、スレーブはSSH経由で実行されます。
エラーが発生します:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
私はここの他の投稿でこれまでに見たすべての提案を試しました:
- 署名の直前にセキュリティロック解除キーチェーンを使用して、キーチェーンのロックを解除します。
- 署名キーを独自のキーチェーンに移動します。
- 署名キーをログインキーチェーンに移動します。
- 署名キーをシステムキーチェーンに移動します。
- キーを含むキーチェーンのみにリストキーチェーンを手動で設定します。
すべての場合で、同じエラーが発生します。
この問題を診断するために、ローカル端末で「security unlock-keychain」コマンドを実行してみたところ、実際にはキーチェーンのロックが解除されないことがわかりました。キーチェーンアクセスを調べても、ロック記号は残っています。これは、コマンドラインでパスワードを渡す場合でも、パスワードを要求する場合でも同じです。GUIを使用して同じキーチェーンのロックを解除すると、パスワードの入力を求められ、ロックが解除されます。さらに、「セキュリティロックキーチェーン」を実行すると、コマンドの実行直後にキーロックが表示されます。これにより、ロック解除キーチェーンは実際には機能しないと思います。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.
このことから、リストキーチェーンは機能していないようです。多分どちらも動作しません。:/
ここに同様の質問があります。ソリューションは興味深いです-launchctlで "SessionCreate"をtrueに設定します。しかし、私はマスターでビルドしていません-ビルドプロセスは、スレーブビルドマシンのSSHから開始されます。たぶん、 "SessionCreate"を実行したときにlaunchctlが実行していることを実行するコマンドラインの方法があるのでしょうか。