自動ビルドは Jenkins 上で実行されています。ビルド自体はスレーブ上で実行されており、スレーブは SSH 経由で実行されます。
エラーが発生します:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
これまで他の投稿で見たすべての提案を試しました:
- 署名する直前にセキュリティ ロック解除キーチェーンを使用してキーチェーンのロックを解除します。
- 署名キーを独自のキーチェーンに移動します。
- 署名キーをログインキーチェーンに移動します。
- 署名キーをシステム キーチェーンに移動します。
- キーを含むキーチェーンのみに list-keychains を手動で設定します。
いずれの場合も、同じエラーが発生します。
問題を診断するために、ローカル端末で「security unlock-keychain」コマンドを実行してみましたが、実際にはキーチェーンのロックが解除されませんでした。キーチェーンアクセスで確認すると、ロック記号はまだそこにあります。これは、コマンドラインでパスワードを渡すか、プロンプトを表示するかに関係なく当てはまります。同じキーチェーンをGUIでロック解除すると、パスワードの入力が求められ、その後ロックが解除されます。さらに、「security lock-keychain」を実行すると、するコマンドを実行した直後にキーがロックされているのがわかります。これは、unlock-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.
このことから、list-keychains が機能していないようです。おそらくどちらも機能していないのでしょう。:/
そこには同様の質問はこちら解決策は興味深いです - launchctl で「SessionCreate」を true に設定します。しかし、私はマスターでビルドしているのではなく、ビルド プロセスはスレーブ ビルド マシンの SSH から開始されます。おそらく、「SessionCreate」を実行するときに launchctl が行っていることと同じことをコマンド ラインで実行する方法があるのではないでしょうか。
ベストアンサー1
私もこれと戦ってきました。提案を試すまで何も助けにはなりませんでしたhttp://devnet.jetbrains.com/thread/311971。アシシュ・アグラワルさん、ありがとう!
GUI 経由でビルド ユーザーにログインし、キーチェーン アクセスを開きます。署名秘密キーを選択し、右クリックして [情報を見る] を選択し、[アクセス制御] タブに変更して [すべてのアプリケーションがこの項目にアクセスできるようにする] を選択します。