Les tâches répétitives sont généralement fastidieuses et finissent par prendre beaucoup de temps et d'énergie. Au fil du temps, plusieurs outils d'automatisation ont été développés pour aider à réduire les tracas liés à l'exécution de tâches répétitives. L'un de ces outils d'automatisation est Jenkins. Jenkins est un serveur d'automatisation open source conçu pour aider les développeurs de logiciels à créer, tester et déployer des applications et ainsi rationaliser le processus d'intégration et de livraison continues.
Nous avons déjà écrit un article sur la façon d'installer Jenkins sur CentOS 8/RHEL 8. Dans cet article, nous allons faire les choses un peu différemment et exécuter le conteneur Jenkins en tant que service systemd avec docker.
Prérequis
Quelques éléments sont requis avant de continuer.
- Docker installé sur votre système Linux.
- Un utilisateur régulier avec des privilèges sudo.
Étape 1) Installer le moteur Docker
Pour commencer, vous devez avoir installé le moteur Docker sur votre système. Nous avons un article détaillé sur l'installation de Docker sur CentOS 8 / RHEL 8. Exécutez la commande docker ci-dessous pour afficher la version de docker
$ sudo docker version
À partir de l'extrait ci-dessus, nous avons confirmé que docker est installé et que nous exécutons la version 19.03.13 de docker.
Étape 2) Créer un utilisateur Jenkins
Ensuite, nous allons créer un utilisateur système "Jenkins" qui gérera le service Jenkins. Mais d'abord, créez un groupe système pour Jenkins :
$ sudo groupadd --system jenkins
Créez ensuite un utilisateur système Jenkins
$ sudo useradd -s /sbin/nologin --system -g jenkins jenkins
Et enfin, ajoutez l'utilisateur Jenkins au groupe docker comme indiqué :
$ sudo usermod -aG docker jenkins
Pour confirmer que l'utilisateur Jenkins est ajouté au groupe docker, exécutez la commande id comme indiqué
$ id jenkins
La sortie sera,
[[email protected] ~]$ id jenkins uid=991(jenkins) gid=986(jenkins) groups=986(jenkins),989(docker) [[email protected] ~]$
Fantastique! Continuons et extrayons une image Jenkins.
Étape 3) Extraire l'image Jenkins du hub Docker
Appelez la commande suivante pour extraire la dernière image Jenkins du hub Docker.
$ sudo docker pull jenkins/jenkins:lts
Cela prend généralement quelques secondes sur une connexion Internet assez stable. Une fois téléchargé, vérifiez que l'image Jenkins est présente en invoquant la commande suivante :
$ sudo docker images | grep jenkins
La sortie de la commande ci-dessus serait :
[[email protected] ~]$ sudo docker images | grep jenkins jenkins/jenkins lts f669140ba6ec 6 days ago 711MB [[email protected] ~]$
Jenkins nécessite un stockage persistant pour stocker les données et les réutiliser même en cas de crash du conteneur. Par conséquent, nous allons créer un répertoire de stockage comme indiqué.
$ sudo mkdir /var/jenkins $ sudo chown -R 1000:1000 /var/jenkins
Étape 4) Créer un service systemd pour Jenkins
À l'aide de votre éditeur de texte préféré, créez un fichier systemd Jenkins comme indiqué :
$ sudo vi /etc/systemd/system/jenkins-docker.service
Collez le contenu suivant et enregistrez le fichier.
[Unit] Description=Jenkins Server Documentation=https://jenkins.io/doc/ After=docker.service Requires=docker.service [Service] Type=simple User=jenkins Group=jenkins TimeoutStartSec=0 Restart=on-failure RestartSec=30s ExecStartPre=-/usr/bin/docker kill jenkins-server ExecStartPre=-/usr/bin/docker rm jenkins-server ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts ExecStart=/usr/bin/docker run --name jenkins-server --publish 8080:8080 --publish 50000:50000 --volume /var/jenkins:/var/jenkins_home jenkins/jenkins:lts SyslogIdentifier=jenkins ExecStop=/usr/bin/docker stop jenkins-server [Install] WantedBy=multi-user.target
Pour démarrer le service Jenkins, rechargez d'abord systemd, puis démarrez Jenkins.
$ sudo systemctl daemon-reload $ sudo systemctl start jenkins-docker
Vérifions maintenant si Jenkins est en cours d'exécution. Pour ce faire, nous allons exécuter :
$ sudo systemctl status jenkins-docker
Génial ! Jenkins est opérationnel en tant que service systemd. Étant donné que Jenkins s'exécutera sur le port 8080, ouvrez le port sur le pare-feu comme indiqué :
$ sudo firewall-cmd --permanent --add-port=8080/tcp $ sudo firewall-cmd --reload
Pour configurer Jenkins, parcourez simplement l'URL du serveur comme indiqué
http://ip-serveur:8080
Vous obtiendrez la page "Déverrouiller Jenkins" comme indiqué. Pour continuer, vous devez fournir le mot de passe qui se trouve dans le fichier affiché
[[email protected] ~]$ cat /var/jenkins/secrets/initialAdminPassword 9c61bd823a404056bf0a408f4622aafc [[email protected] ~]$
Une fois terminé, cliquez sur ‘Continuer’
Ensuite, sélectionnez l'option "Installer les plugins suggérés" comme indiqué.
Ensuite, créez un utilisateur administratif pour le compte Jenkins et cliquez sur "Enregistrer et continuer"
L'installateur vous guidera à travers les étapes restantes jusqu'à la toute fin. Après une installation réussie, nous obtiendrons le tableau de bord Jenkins suivant
Et c'est un enveloppement. Dans ce guide, vous avez appris à exécuter Jenkins dans un conteneur Docker en tant que service systemd.
Lire aussi : Comment installer et configurer Jenkins sur Ubuntu 20.04