web-dev-qa-db-ja.com

ユーザーがログインしない限り、キーチェーンはJenkinsスクリプトからロック解除されません

OS XマシンでJenkins CIサーバーを実行しています。サーバーは標準ユーザー「john」として実行されており、launchctlを実行することにより開始されます。このサーバーが行うことの1つは、キーチェーン「xcode.keychain」に保存されているキーと証明書を使用してXCodeプロジェクトを構築することです。

Jenkins(アクティビティモニターによると、ユーザー 'john'の下で実行されています)は、ユーザーがWebインターフェイスのボタンを押すと、スクリプトからこれらのコマンドを呼び出します。

security default-keychain -s /Users/john/Library/Keychains/xcode.keychain
security unlock-keychain -p password /Users/john/Library/Keychains/xcode.keychain
xcodebuild ...

UIを介して「john」としてサーバーにログインした場合、Jenkinsがこれらのコマンドを呼び出すと、キーチェーンが適切にロック解除されます。ただし、ログインしていない場合、xcode.keychainはロック解除されず、ビルドは失敗します。何か案は?

31
user756365

Launchdを使用せずにJenkinsを実行すると動作します。次のコマンドを使用しました。

Sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"
5
Raj

そうしなければならなかった:

  1. ビルドプロセスで使用しようとしていたキーチェーンの秘密キーを右クリックします
  2. [情報を見る]をクリックします
  3. 次に、「アクセス制御」タブ。
  4. 特定のアプリ(「codesign」など)をそのキーへのアクセスが許可されているアプリのリストに追加することも、すべてのアプリケーションからのアクセスを許可することもできます。

これは私のためにそれをクリアしました。

これらのコメントの詳細: https://stackoverflow.com/a/12235462/5441https://stackoverflow.com/a/14761060/5441

10
Taytay

最近、まったく同じ問題に出くわしました。

security list-keychains -s /Users/john/Library/Keychains/xcode.keychainはおそらく問題を解決するでしょう。動作するかどうか教えてください。

最近、これに対する解決策を見つけました: Jenkins/HudsonをiOSおよびMac開発の継続的インテグレーションとして使用しているときにキーチェーンに証明書とキーがありません

5
Jens Kohl

Jenkins.app を試すことができます。これは、Jenkinsを実行する別の方法です。ユーザーセッションでJenkinsを実行するため、キーチェーンは問題になりません。

0
sti