GitLab CI/CD

From air
Jump to navigation Jump to search

Auteur

CHANET Zoran

Prérequis

  • Version Gitlab >= 8.0 ou utiliser GitLab.com
  • Settings -> General -> Permissions -> Pipelines (Only team members ou Everyone with access)
  • Au moins un runner configuré pour le projet (ou shared runner) (voir Settings -> CI/CD -> Runners) (Enable shared runners on this project pour avoir accès aux shared runners)

Activation

Définir un fichier .gitlab-ci.yml valide à la racine du projet

Runners

  • Sont des VM isolées
  • Peuvent être shared entre les projets
  • Idéalement sur une autre machine que le projet GitLab
  • Configurés par le fichier .gitlab-ci.yml pour définir des étapes (build, test, deploy…)
  • Settings -> CI/CD -> Runners (pour voir lesquels sont assignés au projet)

Astuces

  • .gitlab-ci.yml est dépendant de la version (donc branche)
  • Format du fichier .gitlab-ci.yml :
stages:
  - <étape>
  - <étape>
  - ...

before_script:
  - <commande>
  - <commande>
  - … 

<job1-name>:
  stage: <étape>
  script:
    - <commande>
    - <commande>
    - …

<job2-name>:
  stage: <étape>
  script:
    - <commande>
    - <commande>
    - …

…
  • /!\ Les espaces doivent rester des espaces (pas des tabulations)
  • /!\ script est un mot-clé obligatoire pour chaque job
  • before_script est optionnel et exécuté avant chaque script
  • Les balises stages et stage sont optionnelles mais structurent le pipeline
  • CI/CD -> Pipelines -> CI LINT (bouton) permet de tester la validité du fichier .gitlab-ci.yml
  • stuck signifie qu’aucun runner n’est configuré pour prendre en charge le job
  • Si des runners sont actifs et affiliés au projet (voir Settings -> CI/CD -> Runners) mais que le pipeline indique stuck, il peut être nécessaire d'autoriser les runners à accepter les jobs sans tags
  • Examples de .gitlab_ci.yml : https://gricad-gitlab.univ-grenoble-alpes.fr/help/ci/examples/README.md

Fonctionnement

  • Activation du pipeline à chaque push sur une branche disposant du fichier .gitlab-ci.yml
  • Au lancement, chaque job est réalisé par un runner dans son propre environnement

Sources

Getting started with GitLab CI/CD
How to enable or disable GitLab CI/CD