Cheatsheet GitLab CI/CD – Les notions essentielles à connaître

  1. Cheatsheet GitLab CI/CD — Les notions essentielles à connaître
    1. Le fichier .gitlab-ci.yml : la base
    2. Les stages
    3. Les jobs
    4. Les variables
    5. Les rules
    6. Les only et except
    7. Les “artifacts” — partager des fichiers entre jobs
    8. Les caches
    9. Les templates
    10. Exemple final : un pipeline prêt à l’emploi
    11. Conclusion

Cheatsheet GitLab CI/CD — Les notions essentielles à connaître

Le dernier article de l’année est là ! Voici une cheatsheet à connaître concernant les notions fondamentales de Gitlab CI/CD.

À l’année prochaine pour d’autres articles, de bonnes fêtes à tous.

Le fichier .gitlab-ci.yml : la base

Commençons par le début, le fichier .gitlab-ci.yml, c’est le fichier que GitLab lit pour savoir quoi exécuter, dans quel ordre, et sous quelles conditions.

Structure simple :

stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo "Building..."

En résumé :

  • stages = les grandes étapes
  • jobs = ce qui s’exécute
  • script = les commandes à lancer

On va maintenant détailler les éléments les plus utiles.

Les stages

Les stages définissent les macro-étapes du pipeline :

  • build
  • test
  • deploy

Voici un exemple de stages :

stages:
  - build
  - test
  - deploy

Chaque stage est exécuté dans l’ordre, et les jobs d’un même stage tournent en parallèle.

Les jobs

Un job est un groupe de commandes à exécuter.
On peut avoir plusieurs jobs dans un même stage, on pourrait dire que les jobs correspondent à des sous étapes.

Voici un exemple de job :

test_app:
  stage: test
  script:
    - npm install
    - npm test

Les éléments les plus importants :

  • stage: → à quel stage appartient ce job
  • script: → les commandes
  • image: → l’image Docker utilisée (optionnel)
  • tags: → si tu as des runners spécifiques

C’est la brique de base de n’importe quel pipeline.

Les variables

GitLab permet d’utiliser des variables. Cela permet de factoriser notre code, de le rendre plus clair et améliorer la maintenabilité :

  • Variables internes (définies par GitLab)
  • Variables perso (dans Settings > CI/CD > Variables)

Exemple :

variables:
  NODE_ENV: "production"

echo $NODE_ENV

Utilité pour les tokens, URLs, secrets (avec GitLab CI/CD Variables → masked), évidemment, ne jamais mettre un secret en clair.

Les rules

Depuis quelques versions, rules: est la manière recommandée pour déclencher conditionnellement un job.

Exemple simple :

rules:
  - if: '$CI_COMMIT_REF_NAME == "main"'
    when: always
  - when: manual
  • Exemple simple pour exécuter un job uniquement pour les merge requests :
rules:
  - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

Les only et except

Même si rules est recommandé, on trouve encore beaucoup de pipelines avec only ou except, il n’est pas rare de les croiser dans les anciens pipelines. Elles ont la même utilisation que les rules.

Exemple :

only:
  - main
except:
  - tags

Les “artifacts” — partager des fichiers entre jobs

Les artifacts servent à transporter des fichiers d’un job à un autre (build → test → deploy…) ou à générer et récupérer des rapports. Par exemple un job de test peut générer un rapport et le stocker dans les artifacts.

Exemple :

artifacts:
  paths:
    - dist/
  expire_in: 1 week

Les caches

Ne pas confondre cache & artifacts.
Le cache est pour stocker des fichiers qui ne changent pas souvent (ex : node_modules), il permet d’accélérer les pipelines.

Exemple :

cache:
  paths:
    - node_modules/

Les templates

GitLab propose plein de templates prêts à l’emploi, utilisables via include, cela permet de ne pas ré écrire 20 fois la même chose et de se faciliter la vie.

Exemple :

include:
  - template: Node.gitlab-ci.yml

Il est aussi possible d’inclure ses propres templates internes pour factoriser ses pipelines.

Voici le lien vers la documentation officielle et la liste des templates de Gitlab : GitLab CI/CD examples | GitLab Docs.

Exemple final : un pipeline prêt à l’emploi

Voici un .gitlab-ci.yml complet, simple et efficace adapté pour un projet NodeJs :

stages:
  - build
  - test
  - deploy

variables:
  NODE_ENV: production

build_job:
  stage: build
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/

test_job:
  stage: test
  script:
    - npm ci
    - npm test

deploy_job:
  stage: deploy
  script:
    - echo "Deploying..."
  rules:
    - if: '$CI_COMMIT_REF_NAME == "main"'

Conclusion

GitLab CI/CD peut sembler complexe au début, mais en réalité, une fois qu’on comprend les briques essentielles (stages, jobs, artifacts, rules…), on peut créer des pipelines propres et puissants en quelques lignes.

Cette cheatsheet est là pour servir de guide rapide.
N’hésitez pas à l’enregistrer ou à vous en inspirer pour vos prochains projets !


En savoir plus sur Codequeen blog

📩 Reçois les articles CodeQueen directement dans ta boîte mail !

Laisser un commentaire