webentwicklung-frage-antwort-db.com.de

Der Schlüsselbund kann nicht über das Jenkins-Skript freigegeben werden, wenn der Benutzer nicht angemeldet ist

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?

31
user756365

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"
5
Raj

Ich musste:

  1. Klicken Sie mit der rechten Maustaste auf den privaten Schlüssel in meinem Schlüsselbund, den mein Build-Prozess Verwenden wollte
  2. Klicken Sie auf "Informationen anfordern".
  3. Dann die Registerkarte "Zugriffskontrolle". 
  4. Sie können der Liste der Apps, für die Zugriff auf diesen Schlüssel gewährt wird, bestimmte Apps hinzufügen (z. B. "Codesign") oder den Zugriff von allen Anwendungen zulassen.

Das hat es für mich geklärt.

Weitere Informationen in diesen Kommentaren: https://stackoverflow.com/a/12235462/544130https://stackoverflow.com/a/14761060/544130

9
Taytay

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

5
Jens Kohl

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.

0
sti