Pré-requis
- Vous devez avoir deux machines (Physique ou VM)
- Vous devez avoir un Jenkins 2 master fonctionnel (Dans ce how-to, il roule en container dans un Rancher)
Introduction
L'objectif est de build des Dockerfiles automatiquement et de lancer une suite de test.
Le code est entreposé sur un serveur gitlab avec les Dockerfiles et docker-compose.
La suite de test est créé pour tester le code du backend (NodeJS), on utilise mocha et chai pour effectuer cette tâche.
De plus, l'environnement est composé de plusieurs autres conteneurs.
- nodeJS 8 pour le backend
- Nginx pour le frontend et proxy
- Redis master et slave
- MongoDB primary, secondary et arbiter
- Elastic Search, Kibana et Logstash
Donc pour tester l'infrastructure, on veut démarrer tous les conteneurs et lancer les tests pour les routes du backend.
Étape 1 - Installation

Ici, nous allons couvrir seulement la partie de Jenkins slave et de ce qu'il contient.
L'idée est de build des images docker donc il nous faut docker et docker-compose d'installer, puis les tests demande des outils que node et npm possèdent.
L'installation de l'OS est omise, mais nous avons un ubuntu 16.04 avec un service SSH d'installé.
Installation de Jenkins 2
Source: https://www.howtoforge.com/tutorial/ubuntu-jenkins-master-slave/
Il faut lancer sur la machine Jenkins slave ces commandes:
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
sudo apt install openjdk-8-jdk -y
Création du user Jenkins
sudo useradd -m -s /bin/bash jenkins
sudo passwd jenkins
Installation de docker
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce -y
systemctl enable docker
systemctl start docker
Installation de docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Installation de NodeJS 8 & npm
sudo apt install build-essential -y
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
npm i -g grunt grunt-cli
Étape 2 - Configuration
Certificats SSL
Il faut ajouter les certificats SSL (optionnel, ça dépend de votre environnement)
nano rootCA.crt
sudo mkdir /usr/share/ca-certificates/studiowebux
sudo mv rootCA.crt /usr/share/ca-certificates/studiowebux/
sudo dpkg-reconfigure ca-certificates
Jenkins Master
Installation du plugin slave SSH

Ajout du nouveau noeud
Aller à la page de management des noeuds

Sélectionner New node

Donner lui un nom significatif et cocher Permanent agent, puis cliquer Ok.

Remplissez le formulaire avec les informations du nouveau noeud.
- # of executors : Le nombre de job qui peuvent rouler en même temps.
- remote root directory: le path dans lequel Jenkins va rouler.
- Labels: permet de séparer les pools de machine.
- Launch method: Choisir SSH puis remplir les champs selon vos informations.
Cliquer Save

Si vous voyez cette page, il se peut que les credentials soient invalides ou que le SSH ne fonctionne pas. Regarder les Logs pour plus d'informations.
Vous devriez voir quelque chose comme suit:

Maintenant vous devriez être en mesure de lancer des jobs sur le nouveau noeud.