36 Stimmen

Schlüsselbund wird von Jenkins-Skript nicht entsperrt, wenn der Benutzer nicht angemeldet ist

Ich betreibe einen Jenkins CI Server auf einem OS X Rechner. Der Server läuft als Standardbenutzer "john" und wird durch Ausführen von launchctl gestartet. Eine der Aufgaben dieses Servers ist das Erstellen von XCode-Projekten mit Schlüsseln und Zertifikaten, die in einem Schlüsselbund "xcode.keychain" gespeichert sind:

Jenkins (das laut Aktivitätsmonitor unter dem Benutzer 'john' läuft) ruft diese Befehle von einem Skript aus auf, wenn der Benutzer eine Schaltfläche auf der Weboberfläche 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" beim Server angemeldet bin, wird der Schlüsselbund ordnungsgemäß entsperrt, wenn Jenkins diese Befehle aufruft. Wenn ich jedoch nicht angemeldet bin, wird xcode.keychain nicht entsperrt und der Build schlägt fehl. Hat jemand eine Idee?

13voto

Taytay Punkte 10693

Ich musste es tun:

  1. Klicken Sie mit der rechten Maustaste auf den privaten Schlüssel in meinem Schlüsselbund, den mein Build-Prozess zu verwenden versucht hat
  2. Klicken Sie auf "Informationen abrufen".
  3. Dann die Registerkarte "Zugriffskontrolle".
  4. Sie können bestimmte Anwendungen (wie "Codesign") in die Liste der Anwendungen aufnehmen, die die auf diesen Schlüssel zugreifen dürfen, oder Sie können den Zugriff für alle Anwendungen erlauben.

Damit ist die Sache für mich geklärt.

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

6voto

Raj Punkte 76

Die Ausführung von Jenkins ohne launchd funktioniert. Ich habe den folgenden Befehl verwendet:

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

5voto

Jens Kohl Punkte 5811

Ich bin vor kurzem über genau dasselbe Problem gestolpert.

security list-keychains -s /Users/john/Library/Keychains/xcode.keychain wird Ihr Problem wahrscheinlich lösen. Lassen Sie mich wissen, ob es funktioniert.

Vor kurzem habe ich dort eine Lösung für dieses Problem gefunden: Fehlende Zertifikate und Schlüssel im Schlüsselbund bei der Verwendung von Jenkins/Hudson als Continuous Integration für die iOS- und Mac-Entwicklung

0voto

sti Punkte 10993

Sie könnten versuchen Jenkins.app eine alternative Möglichkeit zur Ausführung von Jenkins. Es führt Jenkins in einer Benutzersitzung aus, sodass der Schlüsselbund kein Problem darstellen sollte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X