Jenkins
 est un outil d', open source en Java. Il peut servir par exemple à lancer des pipelines automatiquement ou manuellement, déployer du code sur des serveurs ou exécuter des tâches planifiées.
= Installation =
IHM.
L'application Web Jenkins permet de créer des jobs et des vues regroupant plusieurs jobs.
Mise à jour.
L'IHM affiche les mises à jour disponibles dans "Administrer Jenkins" (/manage). En cliquant dessus, on télécharge un .war qu'il suffit de déposer à la place de l'ancien :
mv /usr/lib/jenkins/jenkins.old.war
mv /downloads/jenkins.war /usr/lib/jenkins/
systemctl stop jenkins
systemctl start jenkins
systemctl status jenkins
Plugins.
Le menu "Plugin Manager" (/pluginManager) répertorie les versions des plugins installées et disponibles.
= Jobs =
On distingue plusieurs types de jobs : ceux qui se lancent périodiquement et ceux qui sont déclenchés par un évènement extérieur. Parmi ces dernier, on trouve des lancements manuels ou des hooks de forge logicielle (ex : création de pull request, merge, etc.).
Tableau de bord.
L'interface web liste les jobs configurés avec le nom du job, l'état de sa dernière exécution, le temps depuis celle-ci selon son état (temps depuis dernier succès et temps depuis dernier échec), la durée de la dernière exécution, et la tendance de réussite.
La tendance d'exécution indique l'état (succès ou échec) des dernières exécution avec une image météorologique :
Cela indique si le job est stable, ou si l'exécution est instable, pouvant aboutir à un succès ou un échec de manière incertaine.
La dernière colonne contient également un bouton par job permettant de le lancer manuellement.
Durant l'exécution d'un job, sa progression est indiquée graphiquement, basée sur la durée de la précédente exécution.
Hello World.
Cliquer sur "Nouveau Item" et tout en bas dans le paragraphe "Build", rubrique "Exécuter un script shell", taper "echo Hello World!". Sauvegarder et lancer le build.
Déploiement simple.
Dans un nouvel item, renseigner les identifiants de sa forge logicielle dans "Gestion de code source".
On peut ensuite renseigner la branche que le système de gestion de versions va cloner. Par exemple si c'est Git, Jenkins lancera automatiquement un codice_1 à chaque lancement du job. On peut sélectionner la branche à cloner à chaque lancement, en cochant "Ce build a des paramètres", "Parameter Type" = "branch".
Vers Linux.
Sur Linux cela peut être fait en SSH ou SCP. Ajouter les commandes à jouer Dans le paragraphe "Build" du job, "Exécuter un script shell".
Vers Windows.
Sur Windows il faut préalablement lancer un service slave Jenkins (appelé "agent") sur la machine cible, qui acceptera le déploiement en passant par un nœud.
Déploiement multi-dépôt.
https://stackoverflow.com/questions/56676885/configuring-2-repos-with-jenkins-git-parameter-plugin
Déploiement de test à chaque PR.
Dans le paragraphe "Ce qui déclenche le build", cocher votre forge logicielle (ex : GitHub ou Stash).
Le job se lancera ensuite selon les actions déterminées dans le paragraphe, par exemple une création de PR et une commande dans la PR "deploy".
Pour qu'il se lance lors d'un merge, ...
Pipeline.
Un pipeline est un enchainement de tâches parallélisables réalisé par Jenkins.
Backup.
 /root/jobs/jobs/Mon_groupe/jobs/Mon_flux/config.xml
Vues.
Pour superviser un groupe de jobs (et éviter de trop utiliser le moteur de recherche), ils peuvent être listés dans des vues. Pour ce faire, une fois la vue créée, lui ajouter chaque job (en cochant de les rechercher dans les sous-répertoires).
Cela peut aussi être réalisé par une expression régulière.
= Problèmes connus =
Timeout systématique lors d'un build.
Augmenter la durée du timeout :
vim /etc/default/jenkins
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --sessionTimeout=1440 --sessionEviction=43200"
Un job qui doit se lancer à chaque PR ne se lance pas.
Vérifier que le compte utilisé par Jenkins dans le job ait bien les droits de lecture dans le dépôt sur la forge.
Un job se lance régulièrement avec "Started by SCM change".
On peut définir des branches Git par défaut inexistantes, pour éviter que ce bug écrase des déploiements manuels.
Mais il est dû dans le menu /configure, au champ "Nombre de tentatives de checkout SCM" > 0.
Messages d'erreur.
502 Bad Gateway.
 service jenkins restart
ERROR: Couldn't find any revision to build.
Parfois Jenkins ne communique pas bien avec la forge Git. Il suffit alors de relancer le build.
Si ça ne marche toujours pas, le compte de Jenkins est peut-être verrouillé dans la forge, ou il y a eu un codice_2 qui est mal passé.
HTTP ERROR 403 No valid crumb was included in the request.
Inutile de cliquer sur "se déconnecter", il faut supprimer dans son navigateur, les cookies et le localStorage.
IOError: [Errno 11] Resource temporarily unavailable.
Quand Jenkins lance un script Python, son buffer d'affichage en console sature à un millier de lignes environ (pour chaque commande). Il faut donc exécuter les commandes concernées en mode moins verbeux.
Failing to obtain https://mon_jenkins.example.com/computer/mon_server/slave-agent.jnlp?encrypt=true java.net.ConnectException: Connection timed out: connect.
L'agent Jenkins slave sur Windows (JNLP) ne parvient pas à se connecter à Jenkins. Cela peut être dû à un port bloqué dans le pare-feu Windows, dans le réseau, ou s'il y a un load balancer ou un ha-proxy il faut lancer Jenkins en "ha mode" ou les éviter en passant par un tunnel.
pending - Jenkins job is waiting for next available executor.
En français "En attente du prochain exécuteur disponible".
Aller dans "Administrer Jenkins", "Configurer le système", et augmenter le nombre d'exécuteurs.
Sinon, mettre à jour les plugins et patienter (jusqu'à une heure).
possible memory leak due to Git plugin usage.
Si la branche Git sélectionnée n'est pas celle déployée, c'est une fuite de mémoire.
Il faut mettre à jour Jenkins.
reference is not a tree.
Si un job qui marchait ne marche plus soudainement et renvoie cette erreur, c'est que le plugin Git qui communique avec la forge logicielle se perd dans la sélection du commit à checkouter et tente d'en prendre un autre.
Dans "Avancé", renseigner la case "Refspec" avec :
 +refs/heads/*:refs/remotes/mon_projet/*
There’s no agent/cloud that matches this assignment.
Lors de la création d'un build, le champ "Restreindre où le projet peut être exécuter" ne correspond pas à un serveur connu dans la page /computer/.

Néerlandais/Les couleurs (avancés)
Néerlandais/Pour traducteurs/Au restaurant

=Les établissements=
=Les métiers=
=Le restaurant=
=La cuisine=

Néerlandais/Pour traducteurs/La ville (utilisateurs avancés)

=Les généralités=
=Les zones=
=La ville=

Livre de cuisine/Gardiane
La Gardiane ou la Gardiane de taureau est une préparation de viande originaire du sud de la France en Camargue.
Ingrédients.
Pour 4 personnes :

Néerlandais/Pour traducteurs/La route
=Les généralités=
=La rue=
=La route=

Néerlandais/Avancé/Au restaurant
Dessert.
Proposer un dessert (niveau de langue soutenue)
Niveau de langue familière

Goélette Cardabela/Références/Table des matières