Jenkins

Jenkins est un outil qui permet d’automatiser des tâches, tels que les builds d’une application, les tests, déploiements, etc. Il est libre (MIT) et gratuit.

Vocabulaire


Installer

Il y a deux manières d’installer Jenkins: soit récupérer le package, soit lancer un container Docker

Package

Docker

Utiliser un container Docker est un excellent moyen de tester et expérimenter Jenkins sans grand engagement — par exemple pour tester un technique ou un plugin que vous voudriez ajouter à votre installation Jenkins principale.

Finaliser l’installation

Une fois loggé en tant qu’admin sur l’interface web:


Exemples

Créer un job “Hello World”

Compiler Apache Ivy


Monitorer un job


Fichiers

Workspace

Chaque job a un répertoire dédié sur le serveur Jenkins, le workspace du job. C’est là que sont stockés tous les fichiers générés pendant le build, appelés artefacts.

Archivage

Dans les actions post-build du job (sur la page de configuration), on peut ajouter un étape “archive the artifats” pour spécifier les fichiers les fichiers que vous voulez archiver lorsque le build est terminé avec succès.

Par exemple, pour afficher le fichier ivy.jar quelque soit son emplacement dans le workspace:

**/ivy.jar

Après le build, un lien apparaît sur la page du projet, qui renvoie directement au fichier ivy.jar


Paramètres

Jenkins permet de créer des jobs qui acceptent des paramètres — chaînes de caractères, booléens, choix multiples, etc. Ces valeurs sont ensuite injectées dans le job sous forme de variables d’environnement.

Pour ajouter des paramètres,

Parce que ce job a des paramètres, le bouton affiché dans le menu est désormais “build with parameters”.
Lorsqu’on clique dessus, on atterrit sur une page qui vous permet de choisir les paramètres que vous voulez utiliser.


Configurations

General

Source code management

Permet de récupérer du code dans le workspace du job à partir d’un repo git ou subversion. Si le repo est mis à jour, Jenkins récupèrera la mise à jour au prochain build.

Build Triggers

Par défaut, les jobs ne sont lancés que manuellement. Mais il est possible de les configurer pour se déclencher automatiquement.

Build Environment

Build

Cliquer sur “Add build step” permet d’ajouter une nouvelle étape de build. Différents types sont disponibles.

On peut en ajouter d’étapes qu’on veut, chaque étape sera déclenchée une fois que celle qui la précède est finie. Pour réorganiser les étapes, cliquer sur le carré gris à côté du nom de l’étape et faire glisser l’étape vers la position désirée.

Post-build Actions

Permet de définir des étapes supplémentaires à effectuer avant que le build ne se termine — ce peut être archiver des fichiers, déclencher une tâche, ou encore envoyer un email à quelqu’un pour le notifier du build.

De la même manière que pour les étapes du build, il peut y avoir plusieurs étapes post-build, que vous pouvez réorganiser dans l’ordre désiré.


Vues

Les vues permettent de filter les jobs affichés dans la liste.
La vue par défaut, “All” affiche tous les jobs.

Pour créer une vue, cliquer sur le “+” à droite de la liste de vues, ou “New View” dans le menu gauche.
Cela ouvrira la page de configuration de la vue.

Dossier

Les dossiers permettent de créer des hiérarchies. Chaque dossier fournit un espace de nom contenant des jobs, vues et dossiers de manière indépendante des autres dossiers.

Par défaut, un seul dossier existe: la racine (nommée Jenkins).
On peut naviguer d’un dossier à un dossier parent à partir du fil d’ariane affiché en haut, et d’un dossier à un dossier enfant en cliquant sur un dossier dans la vue “All.

Créer un dossier est très similaire à la création d’un job (et les dossiers s’affichent dans la même liste que les jobs). Cliquer sur “New Item”, donner un nom au dossier et choisir le type “Folder”.

Pour placer un job dans un dossier, survoler la ligne du job, cliquer sur la flèche qui s’affiche et choisir “Move”.
Il n’est possible de déplacer qu’un seul job à la fois.

Note: les vues n’ont accès aux jobs du dossier en cours et non aux sous-dossiers.
Lorsqu’on supprime un dossier, on supprime tout son contenu: tous les jobs, vues et dossiers à l’intérieur sont supprimés.


Pipelines

Une pipeline permet de définir une suite de tâches sous forme de code. Chacune des étapes d’une pipeline accomplit une tâche spécifique qui doit être accomplie avec succès pour que l’étape suivante puisse s’exécuter.

L’avantage de cette approche, c’est qu’il est possible de les stocker à l’intérieur d’un repo et d’indiquer à Jenkins d’utiliser ce code. Cela fait des pipelines une solution très puissante pour mettre en place une intégration et déploiement continus.

Pour utiliser la pipeline d’un repo