♥ Avant-propos
Le mode maître-esclave de Jenkins doit être familier à tout le monde. Au cours du processus d'apprentissage, tout le monde a construit un environnement Jenkins localement pour faciliter l'apprentissage, puis l'a réalisé via JavaWeb. Tout le monde semble être très intéressé par la mise en œuvre du mode maître-esclave sous docker. Aujourd'hui, je vais vous expliquer comment jouer à travers cet article, j'espère qu'il vous sera utile.
1. Préparation de l'environnement
-
Préparez un serveur Linux (serveur cloud, serveur Linux auto-construit peut être)
-
Installer Docker sur le serveur Linux
-
Tirez une image jenkins vers le bas, puis démarrez un conteneur jenkins
-
Déroulez cette image jenkins/ssh-slave dans docker (l'image fournie par jenkins est spécialement utilisée comme image maître-esclave)
-
OK, les préparatifs sont terminés
Si vous souhaitez apprendre les tests automatisés, je vous recommande ici une série de vidéos. Cette vidéo peut être considérée comme le premier didacticiel de test d'automatisation d'interface sur l'ensemble du réseau à la station B. Dans le même temps, le nombre d'utilisateurs en ligne a atteint 1 000, et il y a des notes à collecter et divers échanges techniques de Lu Dashen : 798478386
2. Prêt à commencer le travail
La première étape : docker permet l'accès à distance, vous devez ouvrir le port 2375, ce port doit être ouvert avec précaution (j'utilise centos)
-
Ouvrez le fichier docker.service
VIM /usr/lib/systemd/system/docker.service -
Ajoutez le contenu suivant sous [Service] dans le fichier docker.service
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker. chaussette -
Redémarrez le service Docker et laissez Docker relire le fichier de configuration
systemctl daemon-reload
systemctl restart docker -
Vérifiez, vérifiez le processus Docker, si le processus démon Docker écoute déjà le port TCP de 2375, même si le port 2375 est ouvert avec succès
-
Vérification plus approfondie, accédez à l'hôte docker via d'autres machines
sudo docker -H tcp://139.129.130.123:2375 images
La commande ci-dessus équivaut à exécuter directement la commande docker images sur l'hôte docker, et elle peut revenir correctement, indiquant qu'il y a ce n'est pas un problème
Étape 2 : Téléchargez l’image du site officiel (d’ailleurs, ne l’oubliez pas)
-
docker pull jenkins/ssh-esclave
Étape 3 : Créez une nouvelle image avec l'environnement python3 basé sur jenkins/ssh-slave
-
Créer un répertoire dockerfile
-
Placez le fichier du package python dont dépend l'exécution du projet dans le répertoire dockerfile (comment générer le fichier dépendant ne sera pas écrit, par défaut vous êtes un maître)
requests==2.24.0
openpyxl
ddt
pytest
selenium
pymysql
pyyaml==5.3.1
faker
jsonpath
BeautifulReport
unittestreport
rsa
pytest-html
Appium-Python-Client
-
Créez un fichier nommé sources.list (le nom ne peut pas être modifié et doit être ce nom), ajoutez le contenu suivant
dans le répertoire jenkins/ssh-slave Mirror /etc/apt/
deb http://mirrors.163.com/debian / buster principal deb de contrib non libre http://mirrors.163.com/debian/ buster-updates principal deb de
contrib non libre http://mirrors.163.com/debian/ buster-backports principal deb de contrib non libre -src http://mirrors.163.com/debian/ buster principale contrib non libre deb-src http://mirrors.163.com/debian/ buster-updates principale contrib non libre deb-src http:// miroirs.163.com/debian/ buster-backports principale contrib non libre deb http://mirrors.163.com/debian-security/ buster/updates principale contrib non libre deb-src http://mirrors.163. com/ debian-security/buster/updates contribution principale non libre
Sources.list Description : Le jenkins/ssh-slave officiel n'a pas de python et vous devez installer python pour mettre à jour son package d'installation. Pour le moment, si vous utilisez sa source miroir par défaut, ce sera très lent, nous changeons donc vers un fichier plus rapide. Source, écrasez simplement son fichier original, ici vous devez le modifier en fonction de votre propre numéro de version, la mienne est la version buster, bien sûr, elle devrait être la même que la mienne après l'avoir téléchargée. -
écrire un fichier Docker
FROM jenkins/ssh-slave:latest
USER root
WORKDIR /app
ADD requirements.txt /app
ADD sources.list /etc/apt/
RUN echo export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" >> /etc/profile
RUN apt-get -y update && apt-get -y install python3 && apt-get -y install python3-pip && pip3 install -r requirements.txt -i https://pypi.douban.com/simple
-
Exécutez la commande de génération d'image
docker build -t jenkins/ssh-slave:v2.0 .
Étape 4 : Configurer le nœud esclave jenkins
-
Accédez à la page de configuration des nœuds
gérer jenkins ---> Slave Node (gestion des nœuds) ---> ConfigureClouds
Vous verrez la page suivante
-
Cliquez sur Ajouter un nouveau cloud et sélectionnez Docker dans la liste déroulante. Après avoir cliqué, vous arriverez à la page suivante
-
Cliquez sur les détails de Docker Cloud pour configurer, la page est la suivante
-
Cliquez sur les modèles Docker Agent, vous verrez la page suivante
-
Cliquez sur les options avancées ci-dessous
-
La configuration spécifique des options avancées est comme indiqué dans la figure ci-dessous
-
N'oubliez pas de sauvegarder une fois la configuration terminée, il est préférable de sauvegarder lors de la configuration pour développer une bonne habitude.
Étape 5 : Liez l'esclave Docker à votre tâche Jenkins
-
Créez une nouvelle tâche, sélectionnez Freestyle Project
-
Restreindre le projet pour exécuter le nœud, sélectionner le nœud nouvellement créé (Étiquettes)
-
Configurer Git
-
Configurer les commandes shell
-
Rapport de test de configuration
Sixième étape : construisez votre projet
-
Après avoir démarré la construction, vous verrez la figure suivante dans votre file d'attente de construction
2. Une fois la construction terminée, cliquez sur votre projet et il y aura un enregistrement de construction lorsque vous viendrez ici. Cliquez dessus pour voir le journal de construction.
3. Afficher le rapport de test
4. Le rapport de test est le suivant