Contribuer

Vérification des images Docker de Dokos

Contrôles exécutés par le pipeline GitLab de Dokos après la construction d'une image Docker, et notification en cas d'échec.

Vérification des images Docker de Dokos

Le pipeline GitLab du dépôt Dokos construit une image Docker qui contient Dodock, Dokos et les applications principales. Avant de publier l'image, le pipeline vérifie qu'elle est complète. Si la construction ou la vérification échoue, un message peut partir vers un webhook.

Quand l'image est construite

Le job docker s'exécute :

  • sur un tag (une version publiée) ;
  • quand la variable DO_BUILD_DOCKER vaut true, par exemple pour un pipeline lancé à la main.

L'image est construite avec le fichier images/custom/Containerfile du projet frappe_docker. Elle contient les applications frappe, payments, hrms, webshop, etransactions et erpnext. Les variables PAYMENTS_BRANCH, HRMS_BRANCH, WEBSHOP_BRANCH, ETRANSACTIONS_BRANCH, DODOCK_BRANCH et DOKOS_BRANCH choisissent une autre branche pour une application.

Contrôles de l'image

Après la construction, le pipeline lance l'image et vérifie, pour chaque application :

  1. le dossier apps/<application> du bench existe ;
  2. le paquet Python de l'application est installé ;
  3. le dossier des fichiers statiques assets/<application> existe.

Le pipeline vérifie aussi le fichier assets/assets.json.

Si un contrôle échoue, le job affiche l'élément manquant (par exemple Missing app: hrms) et s'arrête. L'image n'est pas publiée.

Si les contrôles réussissent, le pipeline publie l'image dans le registre GitLab. Sur un tag vX.Y.Z, il publie aussi l'étiquette de la version majeure (vX). Sur la dernière version publiée, il publie aussi l'étiquette latest.

Notification en cas d'échec

Le job docker:fail-notification s'exécute seulement si :

  • le job docker a échoué ;
  • la variable CI/CD ON_BUILD_FAILURE_WEBHOOK est définie.

Le job envoie un message au format Discord à l'adresse de ce webhook. Le message contient le projet, la branche, le commit et le lien vers les journaux du job.

Pour recevoir ces messages :

  1. Créez un webhook entrant dans votre outil de messagerie. Il doit accepter un JSON avec une clé content (format Discord).
  2. Dans GitLab, ouvrez Paramètres > CI/CD > Variables du projet.
  3. Ajoutez la variable ON_BUILD_FAILURE_WEBHOOK avec l'adresse du webhook. Masquez la variable : l'adresse donne le droit d'écrire dans votre canal.

Diagnostiquer un échec

  • Le job docker garde le fichier docker-build.log comme artefact pendant une semaine. Il contient le journal complet de la construction.
  • Un message Missing app, Missing Python package ou Missing assets désigne l'application en cause. Vérifiez que sa branche existe et qu'elle se construit.