Ajouter un slave dans un Jenkins 2 master

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

Jenkins 2 infrastructure

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

Jenkins 2 Plugin pour SSH

Ajout du nouveau noeud

Aller à la page de management des noeuds

Page pour administrer les noeuds

Sélectionner New node

Création du nouveau noeud

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

Configuration du noeud

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

Erreur possible

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:

Noeud ajouté

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

Laisser un commentaire