web-dev-qa-db-fra.com

Jenkins échoue lors de l'exécution de "service start jenkins"

J'ai installé Jenkins sur Cnetos 7 en utilisant les éléments suivants:

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

comme décrit sur la documentation officielle

Cependant quand je cours:

service start jenkins

Je reçois le message d'erreur suivant:

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]

Lancer systemctl status jenkins.service me donne ceci:

● 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.

et courir journalctl -xe me donne ceci:

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.

Ce qui est vraiment inutile. Comment résoudre ce problème?

19
Yahya Uddin

Problème similaire sur 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....

Pour résoudre le problème manuellement, installez Java Runtime Environment:

JDK version 9:

Sudo apt install openjdk-9-jre

JDK version 8:

Sudo apt install openjdk-8-jre

Ouvrez le fichier de configuration Jenkins: 

Sudo vi /etc/init.d/jenkins

Enfin, ajoutez le chemin au nouvel exécutable Java (ligne 16):

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib/jvm/Java-8-openjdk-AMD64/bin/
15
Andrew Strycharz

ERREUR: Linux/Centos:

Le travail pour jenkins.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur. Voir "systemctl status jenkins.service" et "journalctl -xe" pour plus de détails.

Solution:

  • Editez le fichier init Jenkins en faisant

    Sudo vi /etc/init.d/jenkins
    
  • Ajoutez votre propre chemin Java, par exemple:

    /opt/Oracle/product/Java/jdk1.8.0_45/bin/Java
    
  • Redémarrez le service:

    Sudo service jenkins start
    Sudo service jenkins status
    Sudo service jenkins stop
    
10
Guna Sekaran

J'ai eu un problème similaire sur Ubuntu 16.04. Grâce à @Guna, j'ai compris que je devais installer manuellement Java (Sudo apt install openjdk-8-jre).

8
luator

J'ai eu un problème similaire sur CentOS 7 alors qu'une version correcte de Java était installée et Java -version donnait un résultat satisfaisant.

En collectant plusieurs réponses à partir de différents SO fils, j'ai procédé comme suit:

Assurez-vous que Java est installé (et que la version est compatible avec Jenkins) Voici quelques astuces si vous dites à propos de CentOS, cela est mentionné dans le tutoriel officiel Jenkins ici 

Si Java est installé et disponible, lors de l'exécution de Java -v, le résultat devrait ressembler à ceci:

    ~>$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)

Ajouter un chemin vers Java dans votre /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
    "

Comment obtenir votre "vrai" chemin vers la distribution Java qui est appelée lorsque vous tapez smth comme Java -v Suivez this SO

Si les étapes ci-dessus n'ont pas aidé, essayez de vous assurer que tous les problèmes d'autorisation sont résolus:

  1. Si Jenkins ne parvient pas à exécuter Java, il se pourrait que jenkins soit dépourvu des autorisations nécessaires, puis remplacez jenkins par root dans config (décrit ici)
  2. Essayez de jouer avec les autorisations chmod en définissant les autorisations 755 dans le dossier d'installation Java.

Et finalement, ce qui m'a aidé dans le résultat Quand j'ai exécuté journalctl -xe comme suggéré lorsque j'ai essayé de Sudo service jenkins start, j'ai obtenu un stacktrace Java similaire:

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

Le problème est que Jenkins essaie de lancer la bibliothèque JNA à partir de /tmp dir qui est marqué par défaut noexec, nous pouvons donc le réparer en créant un répertoire temporaire dans un chemin /jenkins afin de pouvoir l’exécuter ..__ ceci est décrit ici par le support CloudBees (merci beaucoup pour eux)

J'espère que quelque chose de cette liste aidera (en plus, je le laisse surtout pour l'avenir lorsque je devrai installer Jenkins pour CentOs à nouveau :)

3
rodikno

J'avais le même problème et lorsque j'ai vérifié si Java est installé, j'ai réalisé que ce n'était pas le cas, donc installer Java a résolu le problème pour moi.

Vérifier pour Java:

Java -version

Si Java est installé sur le système, la commande renverra la version Java, sinon un message comme celui-ci s'affichera.

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

Pour installer Java, utilisez la commande suivante.

Sudo apt-get install default-jre
3
mok

Toujours en train de lutter contre la même erreur sur les deux ubuntu, dérivés et opensuse. C'est un excellent moyen de contourner et d'aller de l'avant jusqu'à ce que vous puissiez résoudre le problème. 

Il suffit d'utiliser l'image du menu fixe pour les jenkins de dockerhub.

_ {docker tire jenkins/jenkins}

docker run -itd -p 8080: 8080 --name jenkins_container jenkins}

Utilisez le navigateur pour accéder à:

localhost: 8080 ou my_pc: 8080

Pour accéder au jeton dans le chemin indiqué sur l’écran de connexion:

docker exec -it jenkins_container/bin/bash

Ensuite, accédez au fichier de jeton et copiez/collez le code dans l'écran de connexion. Vous pouvez utiliser les menus edit/copier/coller des terminaux kde/gnome/lxde/xfce pour copier le texte du terminal, puis le coller avec ctrl-v 

Fichier de guerre

Ou utilisez le fichier jenkins.war. Pour des raisons de développement, vous pouvez exécuter jenkins en tant qu'utilisateur (ou en tant que jenkins) à partir de la ligne de commande ou créer un court script dans/usr/local ou/opt pour le démarrer.

Téléchargez le fichier jenkins.war à partir de la page de téléchargement de jenkins:

https://jenkins.io/download/

Ensuite, placez-le dans un endroit sûr, ~/Jenkins serait un bon endroit.

mkdir ~/jenkins; cp ~/Téléchargements/jenkins.war ~/jenkins

Puis lancez:

Nohup Java -jar ~/jenkins/jenkins.war> ~/jenkins/jenkins.log 2> & 1

Pour obtenir le jeton de mot de passe administrateur initial, copiez la sortie texte de:

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

et collez-le dans la case avec ctrl-v comme mot de passe administrateur initial.

J'espère que cela est suffisamment détaillé pour vous mettre sur la bonne voie ...

2
Fraser Doswell

J'essayais de l'installer dans kubuntu 18.04, et j'étais déjà sûr d'avoir Java installé, .__, j'ai confirmé en essayant

Version Java

J'ai la sortie comme ça

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)

Comme je sais déjà que mes variables Java PATH sont définies dans le fichier/etc/environment, j'ai ajouté ce fichier au sommet du fichier /etc/init.d/jenkins.

source /etc/environment

vous pouvez même supprimer le PATH du fichier /etc/init.d/jenkins, puisqu'il est déjà défini dans/etc/environment

après cela, j’ai redémarré mon serveur jenkins, et il a semblé que tout commençait à bien fonctionner à partir de localhost: 8080

1
mbkfa93

Ajoutant à ce qui a déjà été répondu par Guna Sekaran. Jenkins a besoin de l’utilisateur jenkins pour pouvoir exécuter les jenkins en tant que service.

Pour ajouter l'utilisateur, lancez 'useradd jenkins' en tant que racine Et lancez 'passwd jenkins' en tant que root avant de lancer Jenkins en tant que service.

0
Gogol

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


candidats = "

/ 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 ## ajouter votre chemin Java

"


0
Aaric Thailad

Vous devez simplement installer Java . Cela a fonctionné après l’installation de Java version 8, En utilisant cette commande: Sudo apt install openjdk-8-jre-headless

0
Mazen El-Gammal

Avant d’installer Jenkins, vous devez installer JDK:

apt install openjdk-8-jre

Après cette installation Jenkins:

apt-get install jenkins

Et vérifiez le statut de Jenkins (devrait être 'actif'):

systemctl status jenkins.service
0
Kamil Siwek

J'ai rencontré le même problème lors de la configuration de Jenkins, le problème est que Java n'est pas installé et n'est donc pas disponible dans path.

Le moyen le plus simple est d'utiliser scp ici pour copier les fichiers binaires JDK dans aws ec2 box, le script ne fonctionnera pas si vous en créez un, car ils continuent de mettre à jour les URL de téléchargement (Orale, je veux dire): 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

Ici, je télécharge le fichier tar.gz dans des fenêtres locales et le transfère sur scp vers AWS ec2-user, répertoire par défaut. J'espère que ça aide.

0
Hitendra Kumar

Pour Ubuntu 16.04, il y a un problème de pare-feu. Vous devez ouvrir le port 8080 à l'aide de la commande suivante:

Sudo ufw allow 8080

Les étapes détaillées sont indiquées ici: https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-ubuntu-16-04

0
Ishwar

Ressemble à des conflits de version Java. 

Veuillez consulter https://medium.com/lucian-daniliuc/upgrading-jenkins-on-ubuntu-14-04-lts-df3e1209f98c

0
Neeraj Kumar