Launchd не запускает сервер Jenkins на OS X Yosemite
В OS X 10.9 Jenkins CI запускался автоматически с помощью запуска. После обновления до 10.10 он больше не запускается.
Дженкинс был установлен с помощью установщика OS X с сайта jenkins-ci.org. Я бежал v1.584. После появления этой проблемы я переустановил с помощью v1.585 безрезультатно.
В файле журнала не указан вывод, указанный в org.jenkins-ci.plist. В Syslog есть несколько сообщений, указывающих, что служба org.jenkins-ci не может инициализировать: 14A389: xpcproxy + 14045 [1344] [1016C726-9ACF-3A24-9C51-A279F5C6B167]: 0xd ".
Что изменилось в Йосемите, которое сломало дженкинсов?
Является ли "0xd" в конце сообщения журнала кодом ошибки?
Я попробовал ручную загрузку и запуск через launchctl. Ошибок не было выведено на консоль, но jenkins все еще не работает.
Проблема не уникальна для Дженкинса. У меня есть еще один элемент запуска, который также выходит из строя с момента обновления до 10.10: антивирус TrendMicro.
Ответы
Ответ 1
Вот окончательный ответ.
-
Убедитесь, что у вас установлена Java. Установщик 10.10, по крайней мере в моем случае, удалил Apple Java 6. Установленная Java должна удовлетворять ссылкам /usr/bin/java*
. Они указывают на /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands
. При установке Oracle Java вам нужен JDK, а не JRE, чтобы соответствовать этому требованию.
-
chown jenkins /var/log/jenkins/jenkins.log
-
Убедитесь, что /var/log/jenkins
принадлежит дженкинсам и доступен для поиска кем угодно (режим 755). Вероятно, он уже будет в этом состоянии.
-
Отредактируйте файл /etc/newsyslog.d/jenkins.conf
, изменив
/var/log/jenkins/jenkins.log 644 3 * $D0 J
к
/var/log/jenkins/jenkins.log jenkins:jenkins 644 3 * $D0 J
Это гарантирует, что новые файлы журналов, созданные во время ночного вращения журнала, принадлежат дженкинсам. Если вы этого не сделаете, вам нужно будет повторять шаг 2 каждый день.
Шаг 4 ответа @kjones, вероятно, не нужен, поскольку launchd
пытается запустить jenkins каждые 10 секунд.
"0xd" в конце сообщения журнала, которое я разместил, действительно является кодом ошибки: Permission Denied.
Что изменилось в launchd
? /var/log/jenkins/jenkins.log
указывается как Standard{Error,Out}Path
в org.jenkins-ci.plist
. Моя теория заключается в том, что до того, как Yosemite launchd открыл файл и установил STDOUT и STDERR перед тем, как изменить владельца процесса на "jenkins" и запустить jenkins-runner.sh. В Yosemite кажется, что startd не открывает файл до тех пор, пока он не изменит право собственности на процесс, следовательно, "разрешение отклонено", когда файл принадлежит root.
Ответ 2
Вот шаги, которые я должен был предпринять:
-
Установить Apple OS X Java
-
Добавить права выполнения для org.jenkins-ci.plist
sudo chmod + x/Library/LaunchDaemons/org.jenkins-ci.plist
-
Установите jenkins в качестве владельца /var/log/jenkins
sudo chown jenkins/var/log/jenkins
-
Начать Jenkins
launchctl start/Library/LaunchDaemons/org.jenkins-ci.plist
Ответ 3
Это устранило проблему в конце:
1) Получено последнее обновление java для java 8 из 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
Ответ 4
Больше не требуется. Я загрузил jenkins-1.588 из http://jenkins-ci.org, выбрал родной пакет Mac OS X, запустил программу установки, см. Раздел Приложения/Дженкинс, и он пробеги. Я запускаю 10.10 (14A389).