Valider des pipelines Gitlab CI/CD
Je pense que comme moi vous vous agacez du nombre d’erreurs, parfois bête, que
vous rencontrez lorsqu’on soumet son fichier .gitlab-ci.yml
.
Après quelques recherches voici quelques solutions pour le valider avant de le pousser dans le repository. Pour ceux qui ne connaissent pas aux fonctionnalités CI-CD de gitlab, je vous renvoie à ce billet.
Comment valider son pipeline avant de le soumettre ?
L’outil Lint présent dans l’interface de Gitlab
Gitlab possède un outil permettant de valider la syntaxe de son fichier
.gitlab-ci.yml
. Il se trouve dans le menu CI/CD > Pipelines et réponds au nom
de CI Lint
.
Il suffit de copier/coller son fichier .gitlab-ci.yml
et de cliquer sur le
bouton [Validate].
Dans la partie basse de l’interface, on retrouve le rapport qui indique soit :
Syntaxe is incorrect
Avec la ou les erreurs rencontrée(s), exjobs deploy web config should implement a script: or a trigger: keyword
Syntax is correct
.
Il est possible de demander une simulation du CI avec la case à cocher
[Simulate]. Les simulations s’exécutent comme un git push
sur la branche par
défaut. Vous devez donc avoir les autorisations pour créer des pipelines sur
cette branche pour lancer une validation avec simulation.
L’outil editor présent dans le menu CI/CD
Cet outil est en fait un éditeur en ligne de fichier .gitlab-ci.yml
. Il
utilise l’outil précédent pour valider à chaque frappe que le fichier est
correct et propose bien sûr de l’autocomplétion en partie.
Une des options sympathiques est de pouvoir visualiser le pipeline. Bien utile
lorsqu’on ajoute des dépendances utilisant les Directed Acyclic
Graphs: l’option needs
.
Via l’API gitlab
Gitlab propose une API permettant de réaliser pas mal
d’action, dont la validation du fichier .gitlab-ci.yml
.
Avant de le soumettre il faut créer un PAT
avec les droits api
+
read_user
. Pour cela il faut de se rendre dans vos users settings
> Access Tokens
et de créer votre token comme ci-dessous.
Ensuite via une commande curl :
Ça fonctionne, mais ce n’est pas des plus conviviales. Plus d’infos ici ↗
L’extension Officielle Gitlab Workflow de vscode
Pour ceux qui comme moi utilise VsCode comme éditeur, il est possible de valider
son CI directement. Cette extension utilise en fait l’API de
Gitlab pour soumettre le fichier .gitlab-ci.yml
.
Il faut ci-dessus créer un PAT
avec les droits api + read_user. Pour
cela il faut de se rendre dans vos users settings
> Access Tokens et de créer
votre token comme ci-dessous.
Ensuite dans vscode tapez [CTRL] + [Shift] + [P] et rechercher gitlab: Set ...
. Entrez l’url de votre serveur gitlab si vous hébergez votre propre serveur
Gitlab et en ensuite le token généré précédemment. En cas d’erreur il faut utiliser [CTRL] + [Shift] + [P] et rechercher gitlab: Remove ...
Désormais vous pouvez valider votre CI en tapant [CTRL] + [Shift] + [P] et
rechercher gitlab: Validate Gitlab...
. Vous pouvez configurer votre propre
combinaison de touche pour accélérer le traitement.
On peut également en cliquant sur l’icône gitlab (image ci-dessus) voir les Issues, MR et les pipelines du projet. En cliquant sur les différents items visualcode renvoie sur la page concernée dans votre navigateur.
Lancer des jobs de CI localement
Allons plus loin en lançant les jobs et cela localement. Pour éviter les erreurs, faites cela sur une copie de votre projet. Il existe deux possibilités pour arriver à ce résultat.
En installant un gitlab runner
Téléchargez le binaire de gitlab runner
correspondant à votre machine de dev
depuis cette
url ↗ et
installez le.
Ensuite ajouter le user gitlab-runner au groupe docker. Enregister un runner sur
votre projet ou groupe dans l’option Settings
> CI/CD
> Runners
À partir de maintenant il est possible de lancer localement des jobs de votre CI.
Si vous avez besoin d’injecter des variables il faut ajouter l’option —env:
C’est bien utile, mais on ne peut enchaîner des jobs directement. Voyons un autre outil.
En utilisant l’outil python gitlabci-local
En cherchant un peu je suis tombé sur ce projet ↗ et j’ai été rapidement séduit.
Pour l’installer rien de plus simple avec pip
ou
pipx car je vous conseille de l’installer dans
un environnement virtuel.
Voici les principales commandes :
- gitlabci-local: Lance le menu interactif permettant de choisir un ou plusieurs jobs à lancer.
- gitlabci-local -p: Lance le pipeline automatiquement
- gitlabci-local ‘Dev’: Lance des jobs dont le nom contient une chaîne donnée
- gitlabci-local ‘Job 1’: —debug: Le container de travail est conservé et pour
se connecter il suffit de taper la commande
docker exec ...
affiché en fin de traitement. - gitlabci-local ‘Job 1’ —bash: Idem à ci-dessus, mais lance simplement un shell
- gcil: Alias de raccourci vers gitlabci-local
Pour lancer localement les CI sans utiliser les images indiquées dans les
steps, il faut simplement ajouter l’option -H
ou --host
. Cela permet de
lancer le pipeline en utilisant les outils installées sur votre machine. Une
sorte de Make ou Taskfile.
Vraiment sympa tous ces outils ! Faites en bon usage.