Ich verwende einen Jenkins CI-Server auf einem OS X-Computer. Der Server läuft als Standardbenutzer "john" und wird durch Ausführen von launchctl gestartet. Dieser Server erstellt unter anderem XCode-Projekte mit Schlüsseln und Zertifikaten, die in einem Schlüsselbund 'xcode.keychain' gespeichert sind:
Jenkins (der laut Aktivitätsmonitor unter dem Benutzer 'john' ausgeführt wird) ruft diese Befehle aus einem Skript auf, wenn der Benutzer eine Schaltfläche in der Webschnittstelle drückt.
security default-keychain -s /Users/john/Library/Keychains/xcode.keychain
security unlock-keychain -p password /Users/john/Library/Keychains/xcode.keychain
xcodebuild ...
Wenn ich über die Benutzeroberfläche als "john" am Server angemeldet bin, wird der Schlüsselbund ordnungsgemäß entsperrt, wenn Jenkins diese Befehle aufruft. Wenn ich nicht angemeldet bin, wird xcode.keychain nicht freigeschaltet und der Build schlägt fehl. Irgendwelche Ideen?
Jenkins ohne launchd laufen lassen. Ich habe den folgenden Befehl verwendet:
Sudo su jenkins -c "JENKINS_HOME=/Users/Shared/Jenkins/Home /Library/Application\ Support/Jenkins/jenkins-runner.sh"
Ich musste:
Das hat es für mich geklärt.
Weitere Informationen in diesen Kommentaren: https://stackoverflow.com/a/12235462/544130https://stackoverflow.com/a/14761060/544130
Ich bin vor kurzem auf genau das gleiche Problem gestoßen.
security list-keychains -s /Users/john/Library/Keychains/xcode.keychain
wird wahrscheinlich Ihr Problem beheben. Lass mich wissen ob es funktioniert.
Kürzlich habe ich dort eine Lösung gefunden: Fehlende Zertifikate und Schlüssel im Schlüsselbund bei Verwendung von Jenkins/Hudson als Continuous Integration für iOS- und Mac-Entwicklung
Sie könnten Jenkins.app ausprobieren, eine alternative Methode zum Ausführen von Jenkins. Es führt Jenkins in einer Benutzersitzung aus, daher sollte Keychain kein Problem sein.