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.lockLes 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.lockAinsi, 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
Commentaires (0)