Skip to main content

install-jenkins

Installation et configuration de Jenkins sur Linux

À mesure que les pratiques de développement de logiciels évoluent, le besoin d’une intégration continue/déploiement continu (CI/CD) robuste devient impératif.

[Jenkins-Def]

Jenkins, un serveur d'automatisation open source, facilite les aspects techniques de l'intégration continue et, ce faisant, réduit considérablement le risque de problèmes d'intégration, ce qui contribue à son tour à livrer des logiciels plus rapidement.

Installation Jenkins

Conditions:

  • Un serveur qui exécute Debian 12
  • Un utilisateur privilèges (root)
  • Java Developpement kit (JDK) installé

Premières étape: Installation de java

Jenkins est une application basée sur Java, la première étape consiste donc à installer Java. Vous pouvez installer le paquet OpenJDK disponible dans les dépôts par défaut de Debian :

sudo apt update
sudo apt install openjdk-11-jdk

Ou encore

sudo apt update
sudo apt install fontconfig openjdk-17-jre
java -version
openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment (build 17.0.13+11-Debian-2)
OpenJDK 64-Bit Server VM (build 17.0.13+11-Debian-2, mixed mode, sharing)

Vérifiez l'installation en vérifiant la version Java :

java -version

Deuxième étapes: Ajout du référentiel Jenkins

Avant d'installer Jenkins, vous devez ajouter la clé du référentiel à votre système, puis ajouter le référentiel aux sources de votre système :

[Debian]

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
# Installing the Jenkins Server. 
sudo apt update
sudo apt install default-jdk -y
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins -y

# Installation of Git
sudo apt install git

Troisième étape: Installation de Jenkins:

Avec le référentiel ajouté, vous pouvez maintenant installer Jenkins :

sudo apt update
sudo apt install jenkins

Pour démarrer jenkins via un autre port ex: 8081

systemctl edit jenkins

Modifier le service

[Service]
Environment="JENKINS_PORT=8081"

Démarrer Jenkins

Une fois l'installation terminée, Jenkins démarre automatiquement. Vous pouvez vérifier son état avec :

Vous pouvez activer le service Jenkins pour qu'il démarre au démarrage avec la commande :

sudo systemctl enable jenkins

Vous pouvez démarrer le service Jenkins avec la commande :

sudo systemctl enable jenkins

Vous pouvez vérifier l'état du service Jenkins à l'aide de la commande :

sudo systemctl status jenkins

Si tout a été configuré correctement, vous devriez voir un résultat comme celui-ci :

Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-11-13 16:19:01 +03; 4min 57s ago

Configurer Jenkins avec HTTPS

Voici un guide rapide sur la façon de configurer Jenkins avec HTTPS. Il existe déjà de nombreux guides. J'en ai lu quelques-uns. Mais deux choses m'ont paru étranges.

  • Premièrement, certains guides veulent que vous changiez le fichier central systemd pour Jenkins (au lieu d'un fichier override).
  • Deuxièmement, ils veulent que vous créiez un fichier JKS (instead of PKCS #12)

[avertissements]

Donc, mes mots d'avertissement : n'écrasez jamais les fichiers dans /etc/systemd/system Ces fichiers sont gérés par votre système et votre gestionnaire de paquets.

[Notes] Si vous souhaitez ajouter ou modifier des paramètres pour Jenkins, utilisez /etc/systemd/system/jenkins.service.d/override.conf. JKS est un format propriétaire. (PCKS #12) d'autre part, c'est une norme industrielle et également le format de magasin de clés par défaut depuis Java 9 !

Générer un certificat SSL

Tout d'abord, vous aurez besoin d'un certificat. Vous pouvez en créer un avec openssl :

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out jenkinns.pem

Convertir key certificat

Bien entendu, si vous possédez déjà un certificat, vous n'avez pas besoin d'en créer un nouveau. Mais vous devrez le convertir en fichier PKCS #12.

openssl pkcs12 -inkey key.pem -in jenkins.pem -export -out jenkins.p12

Enfin, placez le fichier jenkins.p12 dans un endroit accessible à Jenkins. Je l'ai mis dans /var/lib/jenkins.

sudo mv ./jenkins.p12 /var/lib/jenkins
# I assume you run Jenkins with default settings. If you run it with a different user, you'll have to adapt the 'chown', of course!
sudo chown jenkins:jenkins /var/lib/jenkins/jenkins.p12

Activer HTTPS dans le service Jenkins

Une fois le nouveau keystore en place, indiquez à Jenkins comment l'utiliser. Dans le /lib/systemd/system/jenkins.service placez-y le contenu suivant.

[Service]
Environment="JENKINS_HTTPS_PORT=8443"
Environment="JENKINS_HTTPS_KEYSTORE=/var/lib/jenkins/jenkins.p12"
Environment="JENKINS_HTTPS_KEYSTORE_PASSWORD=password"

Maintenant, redémarrez le service Jenkins.

sudo systemctl daemon-reload
sudo systemctl restart jenkins.service

L'accès à https://localhost:8443 devrait maintenant vous donner la page de connexion Jenkins, mais avec une connexion https valide et sécurisée.

Pare-feu

Si vous avez installé un pare-feu, vous devez ajouter Jenkins comme exception. Vous devez remplacer YOURPORT dans le script ci-dessous par le port que vous souhaitez utiliser. Le port 8080 est le plus courant.

YOURPORT=8080
PERM="--permanent"
SERV="$PERM --service=jenkins"

firewall-cmd $PERM --new-service=jenkins
firewall-cmd $SERV --set-short="Jenkins ports"
firewall-cmd $SERV --set-description="Jenkins port exceptions"
firewall-cmd $SERV --add-port=$YOURPORT/tcp
firewall-cmd $PERM --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

Quatrième étape: Configuration de Jenkins

Pour commencer à configurer Jenkins, vous devrez récupérer le mot de passe administrateur initial :

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Copiez le mot de passe et accédez à http://your_server_ip_or_domain:8080 dans votre navigateur Web. Lorsque vous y êtes invité, saisissez le mot de passe administrateur initial pour démarrer l'assistant de configuration.

Suivez les instructions à l'écran pour installer les plugins suggérés et créer un utilisateur administrateur. Une fois la configuration terminée, vous disposerez d'un serveur Jenkins entièrement opérationnel et prêt à l'emploi.

Conclusion:

Jenkins étant maintenant installé et configuré sur votre serveur Debian 12, vous êtes prêt à créer vos pipelines et à automatiser les différentes étapes de votre processus de développement.

Doc officiel: Jenkins-doc