Intégration Continue avec Jenkins

Configuration de Jenkins sur Linux et Windows

Cette démonstration présente la mise en place de l'environnement sur les plates-formes Linux et Windows. Pour macOS, cela sera traité ultérieurement.

Comme Jenkins est basé sur Java, son exécution dépend de l'environnement Java JRE (Java Runtime Enviroment). Par conséquent, pour utiliser Jenkins, nous devons avoir :

  • Exigences matérielles
    • 256 Mo de mémoire, recommandé plus de 512 Mo
    • 10 Go d'espace disque (pour Jenkins et les images Docker)
  • Logiciels requis
    • Java 8 ou version ultérieure
    • Docker

Installation du JDK Java

Pour installer le JDK Java sur différentes plateformes, veuillez vous référer à ce guide : Guide d'installation du JDK Java

Téléchargement de Jenkins

Site officiel : https://jenkins.io/zh/

Lien de téléchargement officiel : https://jenkins.io/zh/download/

Liens de téléchargement des logiciels associés

Liens : https://pan.baidu.com/s/1KVGiuH5-diz8OK11C--CFA Code d'extraction : 0ek2

Pour Windows

Téléchargement

  • Téléchargez le fichier msi sur votre machine locale et cliquez dessus.
  • Sélectionnez le répertoire d'installation et continuez en clqiuant sur "Suivant".
  • Cliquez sur "Installer".
  • L'installation une fois terminée, ouvrira automatiquement votre navigateur pour la page de déverrouillage de Jenkins.

Mise en route

Lorsque l'installation est terminée, votre navigateur s'ouvrira automatiquement sur la page de déverrouillage de Jenkins. Suivez les instructions pour trouver le mot de passe local, puis collez-le dans le champ de saisie et cliquez sur "Continuer".

Sélectionnez le téléchargement des plugins recommandés.

Pendant l'attente parfois longue, divers incidents peuvent se produire. Gardez à l'esprit que : si un incident se produit, rafraîchissez périodiquement votre navigateur, cela résoudra probablement le problème... Si cela ne fonctionne toujours pas, prenez une pause café, réfléchissez à la vie et revenez continuer à rafraîchir... Dans mon cas, deux installations de plugins ont échoué, et j'ai résolu le problème en rafraîchissant.

Si certains plugins échouent à s'installer, cliquez sur "Réessayer".

Création d'un utilisateur administrateur

Configuration de l'instance

Configurez l'adresse IP selon vos besoins. Si vous utilisez un serveur distant, configurez une adresse IP publique ou liez un domaine ; pour une utilisation locale, utilisez simplement localhost.

Accédez à la page d'accueil :

À ce stade, Jenkins est considéré comme installé avec succès.

Pour Linux

Ici, nous choisissons d'installer la version Docker de Jenkins.

Veuillez effectuer les opérations suivantes avec des privilèges d'administrateur

L'environnement est CentOS 7 sur Alibaba Cloud

Installation de Docker

Opération facultative : Vérification de la version du noyau

Actuellement, seule la version du noyau des versions d'émission de CentOS prend en charge Docker.

Docker s'exécute sur CentOS 7, exigeant un système 64 bits et une version de noyau 3.10 ou supérieure.

Docker s'exécute sur CentOS-6.5 ou versions ultérieures, exigeant un système 64 bits et une version de noyau 2.6.32-431 ou supérieure.

uname -a 

# Exemple
[root@localhost ~]# uname -a
Linux localhost 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Mise à jour des dépôts Yum

[root@localhost ~]# yum update -y

Opération facultative : Désinstallation de l'ancienne version de Docker

yum remove docker  docker-common docker-selinux docker-engine

Installation des dépendances

yum-util fournit la fonction yum-config-manager, et les deux autres sont les dépendances du pilote devicemapper.

yum install -y yum-utils device-mapper-persistent-data lvm2

# Exemple
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

Configuration des dépôts Yum

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Exemple
[root@bogon ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Requête et installation de Docker

yum list docker-ce --showduplicates | sort -r

# Exemple
[root@bogon ~]# yum list docker-ce --showduplicates | sort -r

Dans la liste des versions, choisissez la version appropriée pour télécharger.

yum install docker-ce-17.12.1.ce -y

# Exemple
[root@bogon ~]# yum install docker-ce-17.12.1.ce -y

Vérification de l'installation réussie

docker version

# Exemple
[root@bogon ~]# docker version
Client:
 Version:   17.12.1-ce
 API version:   1.35
 Go version:    go1.9.4
 Git commit:    7390fc6
 Built: Tue Feb 27 22:15:20 2018
 OS/Arch:   linux/amd64
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Démarrage de Docker et ajout au démarrage automatique

systemctl start docker    # Démarrage
systemctl enable docker   # Ajout au démarrage automatique
ps -ef | grep docker      # Vérification si Docker est démarré

Installation de Jenkins

Une fois l'environnement Docker configuré, nous pouvons configurer la version Docker de Jenkins.

Choix de la version Docker de Jenkins

Ouvrez la page de téléchargement du site officiel, choisissez la version à long terme (LTS).

Sur la nouvelle page, sélectionnez la commande d'installation de la version LTS.

Copiez et exécutez la commande docker pull jenkins/jenkins:lts dans CentOS.

docker pull jenkins/jenkins:lts

# Exemple
[root@bogon ~]# docker pull jenkins/jenkins:lts

PS : Le téléchargement est un peu lent...

Une fois le téléchargement terminé, utilisons la commande suivante pour vérifier si le téléchargement a réussi.

[root@bogon ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins/jenkins     lts                 22b8b9a84dbe        6 days ago          568MB
[root@bogon ~]# 

Démarrage de Jenkins

docker run -d -p 80:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins:lts 

# Exemple
[root@bogon ~]# docker run -d -p 80:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins:lts
9f1d7ae974968f7465f98a7fbc25fc8f59cdebae561db33db7916fc68ee0f408
[root@bogon ~]# 

Signification des paramètres :

  • -d : Exécute l'image en arrière-plan.
  • -p 80:8080 : Mappe le port 8080 de l'image au port 80 du serveur.
  • -p 50000:50000 : Mappe le port 50000 de l'image au port 50000 du serveur.
  • -v jenkins:/var/jenkins_home : /var/jenkins_home est le répertoire de travail de Jenkins, nous montons un répertoire du disque dur à cet emplacement pour faciliter la mise à jour ultérieure de l'image tout en utilisant le répertoire de travail d'origine.
  • -v /etc/localtime:/etc/localtime : Permet au conteneur d'utiliser le même paramètre de temps que le serveur.
  • --name jenkins : Attribut un alias au conteneur.
  • docker.io/jenkins/jenkins:lts : Indique que Docker tire la version LTS de Jenkins.

Utilisons maintenant le navigateur local pour accéder à l'IP de CentOS de la machine virtuelle.

Comme nous avons installé la version Docker de Jenkins, nous ne pouvons pas trouver le mot de passe directement à l'emplacement indiqué (la version Windows peut trouver le mot de passe selon les indications). Ce chemin n'est pas le chemin du serveur, mais celui du conteneur Docker, nous devons donc utiliser la commande Docker pour obtenir le mot de passe.

docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword

# Exemple
[root@bogon ~]# docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword
683a4afce37d44a780c287a131e9388b

La chaîne de caractères 683a4afce37d44a780c287a131e9388b ci-dessus est le mot de passe, à entrer dans le champ de saisine de la page précédente.

Note : après avoir saisi le mot de passe, vous entrerez dans la phase de démarrage pour débutants, téléchargement de plugins, etc. Si ce processus échoue, vous devrez peut-être resaisir ce mot de passe, alors mémorisez-le.

Après toutes ces opérations, nous entrons enfin dans la phase de démarrage pour débutants, la première chose qui s'affiche est l'installation des plugins Jenkins. Sans besoins spécifiques, choisissez simplement installer les plugins recommandés.

Attente longue...

Pendant l'attente parfois longue, divers incidents peuvent se produire. Gardez à l'esprit que : si un incident se produit, rafraîchissez périodiquement votre navigateur, cela résoudra probablement le problème... Si cela ne fonctionne toujours pas, prenez une pause café, réfléchissez à la vie et revenez continuer à rafraîchir... Dans mon cas, deux installations de plugins ont échoué, et j'ai résolu le problème en rafraîchissant.

Si certains plugins échouent à s'installer, cliquez sur "Réessayer".

Création d'un utilisateur administrateur

Une fois les plugins ci-dessus installés, vous arriverez sur l'interface de création d'utilisateur administrateur.

Remplissez tous les champs, puis sélectionnez Enregistrer et terminer.

Configuration de l'instance

Configurez l'adresse IP selon vos besoins. Si vous utilisez un serveur distant, configurez une adresse IP publique ou liez un domaine ; pour une utilisation locale, utilisez simplement localhost.

À ce stade, Jenkins est considéré comme installé avec succès.

Accédez à votre espace de travail.

Plus d'informations

Que faire si le téléchargement de Docker est très lent

VMware avec CentOS 7

  • Modifiez le fichier de configuration Docker
[root@bogon ~]# vi /lib/systemd/system/docker.service 

  • Modifiez la valeur ExecStart pour utiliser Alibaba Cloud.
# ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --registry-mirror=https://u1qbyfsc.mirror.aliyuncs.com

Ainsi, Docker ira beaucoup plus vite pour récupérer les images.

Ouvrir les ports du pare-feu

VMware avec CentOS 7

Si vous utilisez une machine virtuelle ou un serveur distant, il est possible que le pare-feu n'ait pas ouvert les ports, provoquant l'échec de la connexion distante à Jenkins. Voici la solution.

firewall-cmd --list-ports   # Vérifiez les ports actuellement ouverts

# Si cette commande affiche
[root@bogon ~]# firewall-cmd --list-ports
FirewallD is not running

# Démarrez-le
[root@bogon ~]# systemctl start firewalld   # Démarrage
[root@bogon ~]# firewall-cmd --list-ports   # Réexécutez ensuite

Démarrage de Jenkins en ligne de commande

Sous Windows, Jenkins ne crée pas de raccourci. Il faut démarrer via la ligne de commande.

Note : le terminal doit avoir des privilèges d'administrateur

net start jenkins   # Démarrage du service
net stop jenkins    # Arrêt du service

Ensuite, accédez via le navigateur :

http://localhost:8080

Modification du port

Environnement : Windows

Le port 8080 est souvent utilisé, nous allons donc modifier le port dans le fichier jenkins.xml situé dans le répertoire d'installation de Jenkins.

Erreur lors de l'installation des plugins : Impossible de se connecter à Jenkins

Environnement : CentOS 7 sur Alibaba Cloud

Ce problème est étrange ! Mon environnement est un serveur Alibaba Cloud, j'ai vérifié si Jenkins était démarré, si le réseau était accessible, etc., tout semblait correct.

La solution finale était de rafraîchir le navigateur ! Si cela ne fonctionne pas, essayez plusieurs fois !! Je ne sais pas pourquoi ça a soudainement fonctionné...

Erreur lors de l'installation des plugins : No such plugin: cloudbees-folder

Environnement : Windows

Ce problème est également étrange ! Mon environnement était Windows 10 Enterprise Edition, j'ai vérifié si Jenkins était démarré, si le réseau était accessible, etc., tout semblait correct.

La solution finale était de rafraîchir le navigateur ! Si cela ne fonctionne pas, essayez plusieurs fois !! Je ne sais pas pourquoi ça a soudainement fonctionné... J'ai également changé le port (puis redémarré Jenkins), mais cela n'a probablement pas d'impact.

Commandes pour vérifier le processus Jenkins

ps aux |grep jenkins

Téléchargement de l'image Jenkins

docker pull jenkinsci/blueocean:latest

Informations sur l'image Jenkins

docker images |grep jenkins

Démarrage de Jenkins

docker run \  
 -u root \  
--name s267 \  
--restart=always \  
 -d \  
 -p 6010:8080 \  
 -p 50000:50000 \  
--env JAVA_OPTS="-Xmx512m" \  
 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \  
 -v /etc/localtime:/etc/localtime \  
 -v /tmp/jenkins_home:/var/jenkins_home \  
 -v /var/run/docker.sock:/var/run/docker.sock \  
 jenkinsci/blueocean:latest

Consultation des 40 dernières informations de journal

docker logs -t -f --tail 40 s267

Accès via le navigateur

http://192.168.1.103:6010/login?from=%2F

Consultation du mot de passe, utilisation unique

[root@r ~]# docker logs -t -f --tail 40 s267

Consultation du mot de passe, méthode recommandée

[root@r ~]# docker exec -it -u root s267 bash
bash-4.4# cat /var/jenkins_home/secrets/initialAdminPassword   
a02074d95cd94b2891d241d350a00293

Création d'un élément de tâche

Enregistrez

Cliquez sur la page d'accueil

Cliquez sur Gérer Jenkins

Cliquez sur Gérer les plugins

Mise à jour des plugins, plugins opsionnels, plugins installés, avancé

Téléchargement du plugin Allure

Redémarrage de Jenkins en avant-plan

http://47.52.72.214:6010/restart

Redémarrage de Jenkins via Docker

docker restart s267

Désinstallation de plugins

Téléchargez manuellement le plugin et téléchargez-le manuellement

https://updates.jenkins.io/download/plugins/allure-jenkins-plugin/

Cliquez sur Télécharger

Après installation, redémarrez

Résolution du téléchargement lent des plugins

Gestion des utilisateurs

Configuration de la sécurité globale - autorisation de l'enregistrement des utilisateurs

Gestion des utilisateurs - Création d'un utilisateur

Déploiement d'un projet de style libre

Étapes du flux de travail de style libre

  1. Général : informations descriptives du projet et paramètres de base
  2. Gestion du code source : comment gérer votre code, d'où le tirer, comment configurer les informations d'identification.
  3. Déclencheurs de construction : comment votre projet s'exécute ?
    1. Exécution unique
    2. Exécution par rotation
    3. Chaque semaine, chaque jour, chaque mois
  4. Environnement de construction : choisissez l'environnement de construction de votre projet, par exemple Ant
  5. Construction : comment exécuter votre projet, comment exécuter votre code
    1. Exécution du shell
    2. Terminal Windows
    3. .....
  6. Opérations post-construction : que faire une fois la construction terminée
    1. Génération de rapports
    2. Envoi d'e-mails

Configuration des informations d'identification

Configuration globale des informations d'identification

Modification des informations d'identification

Configuration de la clé privée

Déclencheurs de construction par rotation

Exécution une fois par jour à 8h30

Construction initiale

Construire immédiatement

Sortie de la console

On peut voir que le code a été récupéré

Consultation de toutes les images

docker images

Informations de base de l'image de base

cat /etc/issue

Informations de base de la nouvelle image créée

Accès à l'espace interne du nouveau conteneur

docker exec -it tmp bash

Liste de tous les packages

apk info

Informations sur les packages

apk info musl

Installation de vim : apk add vim

Recherche de vim dans les dépôts

apk search vim

Suppression de vim : apk del vim

Mise à jour des dépôts

apk update -y

Installation de Python avec version spécifiée

apk add python3=3.6.9-r2

Vérification de la version Python

python3 -V

Informations sur les versions de Java et Git

Configuration globale des outils - ajout de JDK

Variables d'environnement

echo $PATH

Recherche floue de git

ls /usr/bin/git*

Allure Commandline

Configuration de la commande d'exécution

pip3 install -i https://pypi.doubanio.com/simple -r /var/jenkins_home/workspace/at1/requirements.txt

python3 /var/jenkins_home/workspace/at1/start.py

Résolution des dépendances

apk add gcc

apk add build-base

Mise à jour de pip

pip3 install --upgrade pip

Construction immédiate

Sortie de la console

Configuration de la commande de génération du rapport Allure

Paramétrage du processus de construction - paramètre de texte

Opérations post-construction

Exécution paramétrée

Configuration du courriel - configuration du système

Opération post-construction - envoi d'e-mail

Opérations avancées de messagerie

Configuration du projet en paramètres avancés

Début de la construction

Empaquetage de l'image

docker commit --author zhangda --message "Une image Jenkins basée sur jenkinsci/blueocean:latest avec environnement Python et plugin Allure configurés" s267 s267_jenkins:1.0

Enregistrez à nouveau

docker save -o s267_jenkins:1.0 s267_jenkins:1.0

Téléchargement de l'image et démarrage de Jenkins

docker pull wangzhangkai/jenkins:1.0

docker run \  
 -u root \  
--name myjenkins \  
--restart=always \  
 -d \  
 -p 6010:8080 \  
 -p 50000:50000 \  
--env JAVA_OPTS="-Xmx1024m" \  
 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \  
 -v /etc/localtime:/etc/localtime \  
 -v /tmp/jenkins_home:/var/jenkins_home \  
 -v /var/run/docker.sock:/var/run/docker.sock \  
 wangzhangkai/jenkins:1.0

Consultation de toutes les images

docker images

docker container ls -a  # Consultation de toutes les images exécutées

docker container ls  # Consultation des images actuellement en cours d'exécution

Importation de l'image empaquetée dans le répertoire racine de CentOS 7

Renommage du fichier

Utilisation de load pour importer dans Docker

Informations sur l'image

docker images | grep temp

Démarrage de l'image

docker run \  
 -u root \  
--name myjenkins \  
--restart=always \  
 -d \  
 -p 6004:8080 \  
 -p 50000:50000 \  
--env JAVA_OPTS="-Xmx1024m" \  
 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \  
 -v /etc/localtime:/etc/localtime \  
 -v /docker_data/jenkins_home:/var/jenkins_home \  
 -v /var/run/docker.sock:/var/run/docker.sock \  
s267_jenkins:1.0

Solution pour l'accès depuis l'hôte à Jenkins sur CentOS 7

J'ai créé un serveur CentOS 7 sur VM localement, après installation de Jenkins, je peux accéder à la page de gestion Jenkins via IP + port sur le serveur

Lors de l'accès depuis l'hôte, j'ai rencontré des obstacles

Voyons d'abord si l'hôte et VM communiquent

Modifiez le mode réseau de VM en mode NAT

Désactivez le pare-feu sur la machine virtuelle

Commandes associées

Arrêt du pare-feu

systemctl stop firewalld.service

Interdiction du démarrage automatique

systemctl disable firewalld.service

Étiquettes: Jenkins Intégration Continue Docker Linux Windows

Publié le 5 juin à 18h12