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?
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"
J'ai dû:
Cela m'a éclairé.
Plus d'infos dans ces commentaires: https://stackoverflow.com/a/12235462/544130https://stackoverflow.com/a/14761060/544130
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
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.