Vous comprenez déjà les fondations des pipelines GitLab CI/CD, comme les jobs et les stages. Ce guide a pour but de vous faire passer au niveau supérieur. Nous allons démystifier quatre mots-clés YAML avancés, essentiels pour construire des pipelines non seulement fonctionnels, mais aussi plus robustes, résilients et efficaces.
allow_failure et retryCette section explore deux stratégies distinctes pour gérer les jobs qui n'aboutissent pas comme prévu.
allow_failureLe mot-clé allow_failure est une instruction simple : il permet à un pipeline de continuer son exécution et d'être considéré comme réussi, même si le job qui le contient échoue.
Le scénario d'application le plus pertinent est celui d'un job non essentiel, par exemple la génération d'une documentation qui s'avère incomplète ou une vérification de la mise en forme du code qui échoue.
En résumé, allow_failure est idéal pour les tâches de contrôle qualité qui fournissent des informations utiles mais ne devraient pas empêcher une livraison importante.
retryLe mot-clé retry donne à un job la capacité de se relancer automatiquement jusqu'à deux fois après un échec. Ce comportement peut être finement contrôlé grâce à trois propriétés clés :
max : Définit le nombre de tentatives supplémentaires (jusqu'à 2).when : Spécifie la condition qui déclenche une nouvelle tentative (par exemple, runner_system_failure).exit_codes : Permet de ne relancer le job que si son script se termine avec un code de sortie spécifique, offrant un contrôle très précis.Un cas d'usage concret serait un job qui exécute des tests d'intégration dépendant d'un service externe parfois instable, provoquant une erreur de type runner_system_failure.
En résumé, retry est parfait pour surmonter des erreurs intermittentes et temporaires sans nécessiter d'intervention manuelle, rendant le pipeline plus résilient.
Mot-clé |
Scénario d'utilisation principal |
|---|---|
allow_failure |
Un job non critique échoue, mais le pipeline doit quand même aboutir (ex: vérification de style). |
retry |
Un job critique échoue à cause d'un problème temporaire et externe (ex: panne réseau). |