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はロック解除されず、ビルドは失敗します。何か案は?
Launchdを使用せずにJenkinsを実行すると動作します。次のコマンドを使用しました。
Sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"
そうしなければならなかった:
これは私のためにそれをクリアしました。
これらのコメントの詳細: https://stackoverflow.com/a/12235462/5441https://stackoverflow.com/a/14761060/5441
最近、まったく同じ問題に出くわしました。
security list-keychains -s /Users/john/Library/Keychains/xcode.keychain
はおそらく問題を解決するでしょう。動作するかどうか教えてください。
最近、これに対する解決策を見つけました: Jenkins/HudsonをiOSおよびMac開発の継続的インテグレーションとして使用しているときにキーチェーンに証明書とキーがありません
Jenkins.app を試すことができます。これは、Jenkinsを実行する別の方法です。ユーザーセッションでJenkinsを実行するため、キーチェーンは問題になりません。