web-dev-qa-db-fra.com

Le trousseau ne sera pas déverrouillé à partir du script Jenkins à moins que l'utilisateur ne soit connecté

J'utilise un serveur Jenkins CI sur une machine OS X. Le serveur s'exécute en tant qu'utilisateur standard 'john' et est lancé en exécutant launchctl. Une des tâches de ce serveur est de construire des projets XCode en utilisant des clés et des certificats stockés dans un trousseau 'xcode.keychain': 

Jenkins (qui s'exécute sous l'utilisateur 'john' en fonction du moniteur d'activité) appelle ces commandes à partir d'un script lorsque l'utilisateur appuie sur un bouton de l'interface Web.

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

S'il arrive que je sois connecté au serveur en tant que "john" via l'interface utilisateur, le trousseau est déverrouillé correctement lorsque Jenkins appelle ces commandes. Mais, si je ne suis pas connecté, xcode.keychain n'est pas déverrouillé et la construction échoue. Des idées?

31
user756365

Lancer Jenkins sans launchd fonctionne. J'ai utilisé la commande suivante: 

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

J'ai dû:

  1. Cliquez avec le bouton droit de la souris sur la clé privée de mon trousseau que mon processus de construction tentait d'utiliser.
  2. Cliquez sur "Obtenir des informations"
  3. Ensuite, l'onglet "Contrôle d'accès". 
  4. Vous pouvez ajouter des applications spécifiques (telles que "codesign") à la liste des applications qui Sont autorisées à accéder à cette clé, ou simplement autoriser l'accès à partir de toutes les applications.

Cela m'a éclairé.

Plus d'infos dans ces commentaires: https://stackoverflow.com/a/12235462/544130https://stackoverflow.com/a/14761060/544130

9
Taytay

Je suis tombé sur le même problème récemment. 

security list-keychains -s /Users/john/Library/Keychains/xcode.keychain va probablement résoudre votre problème. Laissez-moi savoir si cela fonctionne.

J'ai récemment trouvé une solution à ce problème: Il manque des certificats et des clés dans le trousseau lors de l'utilisation de Jenkins/Hudson comme intégration continue pour le développement iOS et Mac

5
Jens Kohl

Vous pouvez essayer Jenkins.app , une méthode alternative pour exécuter Jenkins. Il exécute Jenkins dans une session utilisateur. Le trousseau ne devrait donc pas poser de problème.

0
sti