web-dev-qa-db-fra.com

Launchd ne démarre pas le serveur Jenkins sur OS X Yosemite

Sous OS X 10.9, Jenkins CI était automatiquement démarré par launchd. Après la mise à jour vers 10.10, il n'est plus démarré.

Jenkins a été installé à l'aide du programme d'installation OS X de jenkins-ci.org. J'utilisais la v1.584. Après que ce problème soit apparu, j'ai réinstallé en utilisant v1.585 en vain.

Il n'y a aucune sortie dans le fichier journal spécifié dans org.jenkins-ci.plist. Syslog a plusieurs messages indiquant que le service org.jenkins-ci "n'a pas pu initialiser: 14A389: xpcproxy + 14045 [1344] [1016C726-9ACF-3A24-9C51-A279F5C6B167]: 0xd".

Qu'est-ce qui a changé à Yosemite qui a brisé les jenkins?

Le "0xd" à la fin du message du journal est-il un code d'erreur?

J'ai essayé de charger et de démarrer manuellement via launchctl. Aucune erreur n'a été générée sur la console, mais jenkins n'est toujours pas en cours d'exécution.

Le problème n'est pas propre à Jenkins. J'ai un autre élément launchd qui échoue également depuis la mise à jour vers 10.10: l'antivirus TrendMicro.

28
msc

Voici la réponse définitive.

  1. Assurez-vous d'avoir installé Java. Le programme d'installation 10.10, du moins dans mon cas, a supprimé Apple Java 6. L'installé Java = doit satisfaire le /usr/bin/Java* liens. Ceux-ci indiquent /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands. Lors de l'installation d'Oracle Java vous avez besoin du JDK et non du JRE pour répondre à cette exigence.

  2. chown jenkins /var/log/jenkins/jenkins.log

  3. Assure-toi /var/log/jenkins appartient à jenkins et peut être recherché par n'importe qui (mode 755). Il sera probablement déjà dans cet état.

  4. Modifiez le fichier /etc/newsyslog.d/jenkins.conf, en changeant

    /var/log/jenkins/jenkins.log 644 3 * $D0 J

    à

    /var/log/jenkins/jenkins.log jenkins:jenkins 644 3 * $D0 J

    Cela garantit que les nouveaux fichiers journaux créés pendant la rotation journalière des journaux appartiennent à jenkins. Si vous ne le faites pas, vous devrez répéter l'étape 2 tous les jours.

L'étape 4 de la réponse @kjones est probablement inutile car launchd tente de démarrer jenkins toutes les 10 secondes.

Le "0xd" à la fin du message de journal que j'ai publié est en effet le code d'erreur: Autorisation refusée.

Qu'est-ce qui a changé dans launchd? /var/log/jenkins/jenkins.log est spécifié comme Standard{Error,Out}Path dans org.jenkins-ci.plist. Ma théorie est qu'avant le lancement de Yosemite, le fichier a été ouvert et configuré STDOUT & STDERR avant de changer le propriétaire du processus en "jenkins" et d'exécuter jenkins-runner.sh. Dans Yosemite, il semble que launchd n'ouvre le fichier qu'après avoir changé la propriété du processus, d'où la "permission refusée" lorsque le fichier appartient à root.

49
msc

Voici les étapes que j'ai dû prendre:

  1. Installez OS X Java d'Apple

  2. Ajouter des autorisations d'exécution à org.jenkins-ci.plist

    Sudo chmod + x /Library/LaunchDaemons/org.jenkins-ci.plist

  3. Définissez jenkins comme propriétaire de/var/log/jenkins

    Sudo chown jenkins/var/log/jenkins

  4. Démarrer Jenkins

    launchctl start /Library/LaunchDaemons/org.jenkins-ci.plist

17
kjones

Cela a résolu le problème de mon côté:

1) Obtention de la dernière mise à jour Java pour Java 8 de https://www.Java.com/en/download/help/mac_10_10 .xml

2) Sudo chown jenkins /var/log/jenkins/jenkins.log

3) Sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

2
Mayur Nagekar