J'ai déjà expliqué précédement comment passer un job en fonction de fichier modifiés.
Par exemple voici un job (simplifié) qui construit une image docker et la pousse sur le registre gitlab :
build-image:
image: docker:latest
services:
- docker:dind
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # Connexion au registre
- docker build -t "$CI_REGISTRY_IMAGE" .
- docker push $CI_REGISTRY_IMAGE
rules:
- if: $CI_COMMIT_BRANCH == "main"
changes:
- composer.json
- composer.lock
Les lignes ci dessous n’exécuterons le job que si les fichiers composer.json et composer.lock contiennent des modifications.
rules:
- if: $CI_COMMIT_BRANCH == "main"
changes:
- composer.json
- composer.lock
Ainsi, j’économise du temps si l'image ne doit pas être reconstruite (l'exemple est basique et doit être adapté évidement à votre besoin.)
Maintenant, mon job suivant risque de planter s'il à en prérequis (needs dans le langage gitlab-ci) le job de construction d'image, on aura l'erreur « 'job-qui-suit' job needs 'build-image' job, but 'build-image' is not in any previous stage »
On peut modifier l'instruction needs pour se passer de ce pré-requis s'il n'existe pas, en le marquant comme optionnal :
needs:
- job: build-image
optional: true
Contenus en rapport
J’utilise énormément la partie « CI » de Gitlab pour déployer automatiquement les sites et applications web que je gère.
Via Gitlab CI il est possible de faire qu'un job soit manuel (manual) afin que, comme son nom l'indique, il ne soit exécuté que si l'on en a besoin.
C'est pratique pour des tâches non obligatoires ou que l'on veut ne pas lancer à chaque déploiement.
Pour un projet, j'ai du mettre en place une stratégie de déploiement automatisée avec entre autres un déploiement sur un serveur de préproduction que lors de la création d'un tag preprod-x.x exemples : preprod-0.1, preprod-0.2, preprod-1.0...
Je voulais pouvoir ne plus faire un backup de ma base de données, si mon message de commit contenait l'instruction "skip-db"
Voila le contenu de mon job :
Ajouter un commentaire