Difference between revisions of "GitLab CI/CD"

From air
Jump to navigation Jump to search
(Created page with "= Prérequis = * version Gitlab >= 8.0 ou utiliser GitLab.com * <code>Settings -> General -> Permissions -> Pipelines</code> (''Only team members'' ou ''Everyone with access''...")
 
Line 1: Line 1:
 
= Prérequis =
 
= Prérequis =
* version Gitlab >= 8.0 ou utiliser GitLab.com
+
* Version Gitlab >= 8.0 ou utiliser GitLab.com
 
* <code>Settings -> General -> Permissions -> Pipelines</code> (''Only team members'' ou ''Everyone with access'')
 
* <code>Settings -> General -> Permissions -> Pipelines</code> (''Only team members'' ou ''Everyone with access'')
 
* Au moins un runner configuré pour le projet (ou shared runner) (voir <code>Settings -> CI/CD -> Runners</code>) (''Enable shared runners on this project'' pour avoir accès aux shared runners)
 
* Au moins un runner configuré pour le projet (ou shared runner) (voir <code>Settings -> CI/CD -> Runners</code>) (''Enable shared runners on this project'' pour avoir accès aux shared runners)
Line 16: Line 16:
 
= Astuces =
 
= Astuces =
 
* <code>.gitlab-ci.yml</code> est dépendant de la version (donc branche)
 
* <code>.gitlab-ci.yml</code> est dépendant de la version (donc branche)
* format du fichier <code>.gitlab-ci.yml</code> :
+
* Format du fichier <code>.gitlab-ci.yml</code> :
 
stages:
 
stages:
 
- <étape>
 
- <étape>
Line 45: Line 45:
 
* <span style="color:red">/!\</span> <code>script</code> est un mot-clé obligatoire pour chaque job
 
* <span style="color:red">/!\</span> <code>script</code> est un mot-clé obligatoire pour chaque job
 
* <code>before_script</code> est optionnel et exécuté avant chaque <code>script</code>
 
* <code>before_script</code> est optionnel et exécuté avant chaque <code>script</code>
* les balises <code>stages</code> et <code>stage</code> sont optionnelles mais structurent le pipeline
+
* Les balises <code>stages</code> et <code>stage</code> sont optionnelles mais structurent le pipeline
 
* <code>CI/CD -> Pipelines -> CI LINT</code> (bouton) permet de tester la validité du fichier <code>.gitlab-ci.yml</code>
 
* <code>CI/CD -> Pipelines -> CI LINT</code> (bouton) permet de tester la validité du fichier <code>.gitlab-ci.yml</code>
 
* ''stuck'' signifie qu’aucun runner n’est configuré pour prendre en charge le job
 
* ''stuck'' signifie qu’aucun runner n’est configuré pour prendre en charge le job
* examples de <code>.gitlab_ci.yml</code> : [https://gricad-gitlab.univ-grenoble-alpes.fr/help/ci/examples/README.md https://gricad-gitlab.univ-grenoble-alpes.fr/help/ci/examples/README.md]
+
* Examples de <code>.gitlab_ci.yml</code> : [https://gricad-gitlab.univ-grenoble-alpes.fr/help/ci/examples/README.md https://gricad-gitlab.univ-grenoble-alpes.fr/help/ci/examples/README.md]
   
   

Revision as of 10:40, 7 February 2019

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
  • 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