Дженкинс терпит неудачу при запуске "стартовых дженкингов службы",

Я установил jenkins на Cnetos 7, используя следующее:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

как описано в официальной документации

Однако когда я запускаю:

service start jenkins

Появляется следующее сообщение об ошибке:

Starting jenkins (via systemctl):  Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
                                                           [FAILED]

Запуск systemctl status jenkins.service дает мне следующее:

● jenkins.service - LSB: Jenkins Continuous Integration Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins)
   Active: failed (Result: exit-code) since Wed 2016-09-21 16:45:28 BST; 3min 59s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2818 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.JavaVMArguments.of(JavaVMArguments...04)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.JavaVMArguments.current(JavaVMArgu...92)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.Daemon.daemonize(Daemon.java:106)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.Daemon.all(Daemon.java:88)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: ... 6 more
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service: control process exited, code=exited s...s=1
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Failed to start LSB: Jenkins Continuous Integration Server.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Unit jenkins.service entered failed state.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service failed.
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: [FAILED]
Hint: Some lines were ellipsized, use -l to show in full.

и запуск journalctl -xe дает мне следующее:

Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.JavaVMArguments.of(JavaVMArguments.java:
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.JavaVMArguments.current(JavaVMArguments.
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.Daemon.daemonize(Daemon.java:106)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: at com.sun.akuma.Daemon.all(Daemon.java:88)
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: ... 6 more
Sep 21 16:45:28 webstack.local.caplib runuser[2819]: pam_unix(runuser:session): session closed for user jenkin
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service: control process exited, code=exited status=
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Failed to start LSB: Jenkins Continuous Integration Server.
-- Subject: Unit jenkins.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit jenkins.service has failed.
--
-- The result is failed.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: Unit jenkins.service entered failed state.
Sep 21 16:45:28 webstack.local.caplib systemd[1]: jenkins.service failed.
Sep 21 16:45:28 webstack.local.caplib jenkins[2818]: [FAILED]
Sep 21 16:45:28 webstack.local.caplib polkitd[1392]: Unregistered Authentication Agent for unix-process:2813:8
Sep 21 16:45:28 webstack.local.caplib dhclient[1390]: DHCPREQUEST on eno16777984 to 192.168.15.254 port 67 (xi
Sep 21 16:45:28 webstack.local.caplib dhclient[1390]: DHCPACK from 192.168.15.254 (xid=0x2ab6e6bc)
Sep 21 16:45:30 webstack.local.caplib dhclient[1390]: bound to 192.168.15.120 -- renewal in 865 seconds.
Sep 21 16:45:36 webstack.local.caplib systemd[1]: Starting Cleanup of Temporary Directories...
-- Subject: Unit systemd-tmpfiles-clean.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-tmpfiles-clean.service has begun starting up.
Sep 21 16:45:36 webstack.local.caplib systemd[1]: Started Cleanup of Temporary Directories.
-- Subject: Unit systemd-tmpfiles-clean.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit systemd-tmpfiles-clean.service has finished starting up.
--
-- The start-up result is done.

Оба из них действительно бесполезны. Как исправить эту проблему?

Ответ 1

Аналогичная проблема на Ubuntu 16.04.

Setting up jenkins (2.72) ...
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
invoke-rc.d: initscript jenkins, action "start" failed.
● jenkins.service - LSB: Start Jenkins at boot time
Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2017-08-01 05:39:06 UTC; 7ms ago
Docs: man:systemd-sysv-generator(8)
Process: 3700 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE)

Aug 01 05:39:06 ip-0 systemd[1]: Starting LSB: Start Jenkins ....
Aug 01 05:39:06 ip-0 jenkins[3700]: ERROR: No Java executable ...
Aug 01 05:39:06 ip-0 jenkins[3700]: If you actually have java ...
Aug 01 05:39:06 ip-0 systemd[1]: jenkins.service: Control pro...1
Aug 01 05:39:06 ip-0 systemd[1]: Failed to start LSB: Start J....
Aug 01 05:39:06 ip-0 systemd[1]: jenkins.service: Unit entere....
Aug 01 05:39:06 ip-0 systemd[1]: jenkins.service: Failed with....

Чтобы исправить проблему вручную, установите Java Runtime Environment:

JDK версия 9:

sudo apt install openjdk-9-jre

JDK версия 8:

sudo apt install openjdk-8-jre

Откройте конфигурационный файл Jenkins:

sudo vi /etc/init.d/jenkins

Наконец, добавьте путь к новому исполняемому файлу java (строка 16):

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib/jvm/java-8-openjdk-amd64/bin/

Ответ 2

ОШИБКА: Linux/Centos:

Работа для jenkins.service завершилась неудачно, потому что процесс управления завершился с кодом ошибки. Подробнее см. "Systemctl status jenkins.service" и "journalctl -xe".

Решение:

  • Отредактируйте исходный файл Jenkins, выполнив

    sudo vi /etc/init.d/jenkins
    
  • Добавьте свой собственный путь Java, например:

    /opt/oracle/product/java/jdk1.8.0_45/bin/java
    
  • Перезапустите службу:

    sudo service jenkins start
    sudo service jenkins status
    sudo service jenkins stop
    

Ответ 3

У меня была аналогичная проблема на Ubuntu 16.04. Благодаря @Guna я понял, что мне пришлось вручную установить Java (sudo apt install openjdk-8-jre).

Ответ 4

У меня была похожая проблема с CentOS 7, когда была установлена правильная версия Java, и java -version дал хороший результат.

Собрав несколько ответов из разных тем SO, я сделал следующее:

Убедитесь, что Java установлена (и версия совместима с Jenkins) Есть некоторые хитрости, если сказать о CentOS, это упоминается в официальном учебнике Дженкинса здесь

Если Java установлена и доступна, при запуске java -v вывод должен выглядеть следующим образом:

    ~>$java -version
    openjdk version "1.8.0_161"
    OpenJDK Runtime Environment (build 1.8.0_161-b14)
    OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

Добавьте путь к Java в свой /etc/rc.d/init.d/jenkins

   ~>$ sudo vim /etc/rc.d/init.d/jenkins
    candidates="
    /etc/alternatives/java
    /usr/lib/jvm/java-1.8.0/bin/java
    /usr/lib/jvm/jre-1.8.0/bin/java
    /usr/lib/jvm/java-1.7.0/bin/java
    /usr/lib/jvm/jre-1.7.0/bin/java
    /usr/bin/java
    /usr/java/jdk1.8.0_162/bin/java ##add your java path here
    "

Как получить "реальный" путь к дистрибутиву Java, который вызывается, когда вы печатаете что-то вроде java -v Следуйте этой ТАКОЙ теме

Если описанные выше шаги не помогли, попробуйте убедиться, что все проблемы с разрешениями решены:

  1. Если Jenkins не удается запустить Java, возможно, у пользователя jenkins нет прав на его запуск, затем измените jenkins на root в конфигурации (описано здесь)
  2. Попробуйте поиграть с chmod установкой разрешений 755 для папки установки java

И, наконец, что помогло мне в результате Когда я запустил journalctl -xe, как было предложено при попытке sudo service jenkins start, я получил похожую трассировку стека Java:

Starting CloudBees Jenkins Enterprise Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at Main._main(Main.java:140)
at Main.main(Main.java:98)
Caused by: java.lang.UnsatisfiedLinkError: /tmp/jna--1712433994/jna7387046629130767794.tmp: /tmp/jna--1712433994/jna7387046629130767794.tmp: failed to map segment from shared object: Operation not permitted
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1822)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:761)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:736)
at com.sun.jna.Native.<clinit>(Native.java:131)
at com.sun.akuma.CLibrary.<clinit>(CLibrary.java:89)
at com.sun.akuma.JavaVMArguments.resolvePID(JavaVMArguments.java:128)
at com.sun.akuma.JavaVMArguments.ofLinux(JavaVMArguments.java:116)
at com.sun.akuma.JavaVMArguments.of(JavaVMArguments.java:104)
at com.sun.akuma.JavaVMArguments.current(JavaVMArguments.java:92)
at com.sun.akuma.Daemon.daemonize(Daemon.java:106)
at com.sun.akuma.Daemon.all(Daemon.java:88)
... 6 more

Проблема в том, что Jenkins пытается запустить библиотеку JNA из каталога /tmp, который по умолчанию помечен как noexec, поэтому мы можем это исправить, создав временный каталог по пути /jenkins, чтобы он мог быть казненным. Полный способ сделать это описан здесь службой поддержки CloudBees (большое им спасибо)

Я надеюсь, что что-то из этого списка поможет (также я в основном оставлю это для меня в будущем, когда мне придется снова установить Jenkins for CentOs :)

Ответ 5

У меня была такая же проблема, и когда я проверил, установлена ли Java, я понял, что нет, поэтому установка Java решила проблему для меня.

Проверьте наличие java:

java -version

Если Java установлена в системе, команда вернет java-версию, иначе она покажет такое сообщение.

The program 'java' can be found in the following packages:
 * default-jre
 * gcj-5-jre-headless
 * openjdk-8-jre-headless
 * gcj-4.8-jre-headless
 * gcj-4.9-jre-headless
 * openjdk-9-jre-headless

Для установки java используйте следующую команду.

sudo apt-get install default-jre

Ответ 6

Перед установкой Jenkins вы должны установить JDK:

apt install openjdk-8-jre

После этого установите Jenkins:

apt-get install jenkins

И проверьте статус Jenkins (должен быть "активным"):

systemctl status jenkins.service

Ответ 7

Продолжается борьба с той же ошибкой как для ubuntu, так и для ubuntu производных и opensuse. Это отличный способ обойти и двигаться вперед, пока вы не сможете исправить реальную проблему.

Просто используйте изображение докеров для дженкинсов из докер-хаба.

докеры тянут дженкинсов/дженкинсов

docker run -itd -p 8080: 8080 - имя jenkins_container jenkins

Используйте браузер для перехода к:

localhost: 8080 или my_pc: 8080

Чтобы получить маркер на пути, указанном на экране входа в систему:

docker exec -it jenkins_container/bin/ bash

Затем перейдите к файлу маркера и скопируйте/вставьте код в экран входа. Вы можете использовать меню редактирования/копирования/вставки на терминалах kde/gnome/lxde/xfce для копирования текста терминала, а затем вставить его с помощью ctrl-v

Файл войны

Или используйте файл jenkins.war. В целях развития вы можете запустить jenkins в качестве пользователя (или как jenkins) из командной строки или создать короткий script в /usr/local или/opt, чтобы запустить его.

Загрузите jenkins.war с страницы загрузки jenkins:

https://jenkins.io/download/

Тогда положите его в безопасное место, ~/jenkins будет хорошим местом.

mkdir ~/jenkins; cp ~/Загрузки/jenkins.war ~/jenkins

Затем запустите:

nohup java -jar ~/jenkins/jenkins.war > ~/jenkins/jenkins.log 2 > & 1

Чтобы получить исходный токен паролей администратора, скопируйте текстовый вывод:

cat/home/my_home_dir/.jenkins/secrets/initialAdminPassword

и вставьте это в поле ctrl-v в качестве начального пароля администратора.

Надеюсь, что это достаточно подробно, чтобы помочь вам...

Ответ 8

Я пытался установить его в kubuntu 18.04, и я уже был уверен, что у меня установлена Java, я подтвердил,

java -version

Я получил такой результат

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

Поскольку я уже знаю, что мои переменные PATH Java определены в файле /etc/environment, я добавил этот файл в начало файла /etc/init.d/jenkins

source /etc/environment

вы даже можете удалить PATH из файла /etc/init.d/jenkins, так как он уже определен в /etc/environment

после этого я перезапустил мой сервер jenkins и, похоже, начал нормально работать с localhost: 8080

Ответ 9

[100%] Решено. У меня была такая же проблема сегодня. Я проверил свое серверное пространство

df-h

Я обнаружил, что на сервере недостаточно места, поэтому я проверяю, какой каталог имеет больший размер,

sudo du -ch / | sort -h

Я увидел 12.2G/var/lib/jenkins, поэтому я вошел в эту папку и очистил все журналы с помощью

cd /var/libs/jenkins
rm *

и перезапустите Дженкинс, он будет работать нормально

sudo systemctl restart jenkins.service

Ответ 10

Добавляя к тому, на что уже ответил Гуна Секаран. Дженкинсу нужно, чтобы пользовательские дженкинсы присутствовали, чтобы запустить дженкинсов в качестве службы.

Чтобы добавить пользователя fire 'useradd jenkins' как root и огонь "passwd jenkins" как корень, прежде чем начать Дженкинса в качестве службы.

Ответ 11

~> $ sudo vim/etc/rc.d/init.d/jenkins


кандидаты ="

/И т.д./альтернатив /Java

/usr/lib/jvm/java-1.8.0/bin/java

/usr/lib/jvm/jre-1.8.0/bin/java

/usr/lib/jvm/java-1.7.0/bin/java

/usr/lib/jvm/jre-1.7.0/bin/java

/USR/бен /Java

/usr/java/jdk1.8.0_162/bin/java ## добавить свой java-путь

"


Ответ 13

Вам просто нужно установить Java. Он работал после установки Java версии 8, используя эту команду: sudo apt install openjdk-8-jre-headless

Ответ 15

Я столкнулся с той же проблемой при настройке jenkins, проблема в том, что java не установлен и, следовательно, недоступен в пути.

Самый простой способ - использовать scp здесь, чтобы скопировать двоичные файлы jdk в окно aws ec2, скрипт не будет работать, если вы его создадите, поскольку они продолжают обновлять URL-адреса загрузки (я имею в виду Orale): scp -i C: /Users/key -pair.pem jdk-8u191-linux-x64.tar.gz ec2- [email protected]: ~/

$cd /opt

$sudo cp /home/ec2-user/jdk* .

$sudo chmod +x jdk*

$sudo tar xzf jdk-8u191-linux-x64.tar.gz

$sudo tar xzf jdk-8u191-linux-x64.tar.gz

$cd jdk1.8.0_191/

$sudo alternatives --install /usr/bin/java java /opt/jdk1.8.0_191/bin/java 2

$sudo alternatives --config java

Здесь я загружаю файл tar.gz в окнах loal и передаю по scp пользователю AWS ec2-, каталог по умолчанию. Надеюсь, поможет.

Ответ 16

В моем случае порт 8080 был занят другим сервисом (Apache Airflow).

Поэтому я редактирую порт HTTP в этом файле:

sudo vi /etc/default/jenkins

А потом запустил сервис и он заработал:

sudo service jenkins start

Я был на Ubuntu 18.04 и установил openjdk-8

Ответ 17

vi /etc/init.d/jenkins

добавить:

/usr/lib/jvm/java/jre/bin/java

Ответ 18

rm -rf/var/log/jenkins слишком большое бревно