0% ont trouvé ce document utile (0 vote)
83 vues47 pages

Gitlab CI CD

Le document présente une introduction au CI/CD avec GitLab, en abordant les concepts de Dev(Sec)Ops, la configuration des pipelines, les mots-clés, les variables et un exemple de déploiement. Il souligne l'importance des runners GitLab pour exécuter les tâches et la nécessité de définir des étapes et des jobs dans le fichier .gitlab-ci.yml. Enfin, il propose des bonnes pratiques pour optimiser l'utilisation de GitLab CI/CD.

Transféré par

hednaili
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
83 vues47 pages

Gitlab CI CD

Le document présente une introduction au CI/CD avec GitLab, en abordant les concepts de Dev(Sec)Ops, la configuration des pipelines, les mots-clés, les variables et un exemple de déploiement. Il souligne l'importance des runners GitLab pour exécuter les tâches et la nécessité de définir des étapes et des jobs dans le fichier .gitlab-ci.yml. Enfin, il propose des bonnes pratiques pour optimiser l'utilisation de GitLab CI/CD.

Transféré par

hednaili
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction Pipeline Runner Keywords Variables Deploy

CI / CD pipeline avec GitLab

F. M ICHEL
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

2
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

3
Introduction Pipeline Runner Keywords Variables Deploy

Le Dev(Sec)Ops

4
Introduction Pipeline Runner Keywords Variables Deploy

Le Dev(Sec)Ops

5
Introduction Pipeline Runner Keywords Variables Deploy

Principes et difficultés liés au DevOps

Démarche DevOps ⇒ création d’une DevOps tool chain pour


automatiser au maximum chaque étape, ainsi que le processus
englobant
Problème : The DevOps toolchain tax
nécessite de connaître, manipuler et intégrer de nombreux outils
⇒ induit des coûts financiers et temporels importants :
achats des services
apprentissage sur les outils
intégration des outils
administration des outils
nécessite de passer régulièrement d’un outil à un autre

⇒ induit des risques liés à la sécurité

6
Introduction Pipeline Runner Keywords Variables Deploy

GitLab pour le Dev(Sec)Ops

7
Introduction Pipeline Runner Keywords Variables Deploy

GitLab CI/CD worflow focus

[Building → Testing → Releasing] ⇒ GitLab pipeline 8


Introduction Pipeline Runner Keywords Variables Deploy

GitLab / GitLab Inc. / [Link]

GitLab
créé en 2011 par Dmytro Zaporozhets et Sytse Sijbrandij
initialement : open-source code-sharing platform basée sur Git

GitLab Inc.
Créée en 2014 : développement de GitLab et services associés
[Link] : instance gérée par GitLab Inc.
services associés proposés sur le modèle freemium
Clients : AIRBUS, Nvidia, . . .
Instance de GitLab à l’IUT

9
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

10
Introduction Pipeline Runner Keywords Variables Deploy

GitLab pipeline : principe et prérequis

Un GitLab pipeline est un script définissant différentes tâches


liées au CI/CD et leur enchaînement
Besoins
Un projet hébergé par une instance de GitLab !
Être owner ou maintainer sur le projet
Au moins un GitLab runner enregistré sur l’instance GitLab
pour exécuter les tâches du pipeline

11
Introduction Pipeline Runner Keywords Variables Deploy

Application exécutant des tâches GitLab CI sur une


plateforme cible
installée indépendamment sur une machine cible
des runners sont disponibles en mode SaaS sur [Link]
peut être spécifique à un projet ou partagée
entièrement configurable : OS, temps maximum, variables
d’environnement, etc.
la configuration peut être créée via l’interface de GitLab

plus d’information
12
Introduction Pipeline Runner Keywords Variables Deploy

Le fichier de script .[Link]

À placer à la racine du projet. Il est écrit avec le langage YAML

Il définit
le contenu et l’ordre des tâches (job) à exécuter par le runner
les actions à entreprendre suivant certaines conditions

13
Introduction Pipeline Runner Keywords Variables Deploy

Définir un pipeline : au moins un job


On définit le nom du job, e.g. build-job, puis son script :

14
Introduction Pipeline Runner Keywords Variables Deploy

Visualisation du résultat : View pipeline


Passed or failed ?

15
Introduction Pipeline Runner Keywords Variables Deploy

16
Introduction Pipeline Runner Keywords Variables Deploy

Ajout d’un job de test

17
Introduction Pipeline Runner Keywords Variables Deploy

Le pipeline a échoué. . . sur le job test

⇒ Sans plus de code, les jobs s’exécutent en parallèle

18
Introduction Pipeline Runner Keywords Variables Deploy

Définition des stages d’un pipeline


En général, il est nécessaire de définir l’ordre dans lequel
les jobs sont réalisés
mot-clé stages : définit les étapes (stage) du pipeline et leur
ordre d’exécution
chaque job est attaché à un stage particulier

19
Introduction Pipeline Runner Keywords Variables Deploy

OK mais. . . no such file or directory !

Par défaut, rien n’est partagé entre les jobs


20
Introduction Pipeline Runner Keywords Variables Deploy

mot-clés artifacts et paths


artifacts artifacts:paths

spécifient les fichiers sauvegardés pour un job réussi


(défaut) → archivés sur le GitLab
⇒ liste de fichiers et dossiers définie par paths
artifacts créés ⇒ téléchargés par les jobs suivants (défaut)
les Wildcards peuvent être utilisés pour définir les paths
Fichiers accessibles dans l’UI de GitLab (Build → Artifacts)

21
Introduction Pipeline Runner Keywords Variables Deploy

mot-clés artifacts et paths

22
Introduction Pipeline Runner Keywords Variables Deploy

Parallélisme des jobs d’un stage

23
Introduction Pipeline Runner Keywords Variables Deploy

Production d’un package, i.e. release

24
Introduction Pipeline Runner Keywords Variables Deploy

Production d’un package, i.e. release

25
Introduction Pipeline Runner Keywords Variables Deploy

Configuration de stages par défaut


Par défaut, stages est défini avec un ordre et des noms de
stage prédéfinis
Définition par défaut de stages
.pre → build → test → deploy → .post
par défaut, un job est associé au stage test

26
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

27
Introduction Pipeline Runner Keywords Variables Deploy

Un peu de Java !

28
Introduction Pipeline Runner Keywords Variables Deploy

A propos des GitLab runners

Environnement d’un GitLab runner ?


Un GitLab runner peut être installé sur n’importe quel OS
Il réalise les jobs via un Executor
Par défaut, l’Executor est le shell de l’OS : Shell Executor

Pour être fiable, un pipeline ne doit pas dépendre d’un


environnement d’exécution
Solution : configurer le runner pour qu’il utilise un docker
container
⇒ permet de choisir l’image docker où sera exécuté le pipeline,
ou même un job
rappel : un conteneur Docker est basé sur une docker image
plus d’information

29
Introduction Pipeline Runner Keywords Variables Deploy

Sélectionner l’image docker


Comment choisir ? images hébergées sur DockerHub

Une image docker contient un certain nombre de programmes


mais pas tous !
⇒ nécessite d’utiliser une image contenant les dépendances
nécessaires pour les jobs, e.g. Java 17
il sera aussi possible d’installer d’autres programmes au
démarrage de l’image, avant les jobs, e.g. avec apt-get

Importance de prendre une version avec un tag


certaines images ont un nom générique : eclipse-temurin
(OpenJDK)
elle fait référence à la dernière version : elle va donc évoluer
⇒ mieux vaut choisir une version précise et s’y tenir :
eclipse-temurin:11-jdk-alpine image eclipse-temurin
30
Introduction Pipeline Runner Keywords Variables Deploy

En pratique

31
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

32
Introduction Pipeline Runner Keywords Variables Deploy

.[Link] keywords

Global keywords configure le pipeline dans son ensemble

plus d’information

33
Introduction Pipeline Runner Keywords Variables Deploy

Jobs keywords

34
Introduction Pipeline Runner Keywords Variables Deploy

Jobs keywords

35
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

36
Introduction Pipeline Runner Keywords Variables Deploy

GitLab CI/CD variables documentation

Les variables CI/CD sont un type de variable d’environnement.


Elles sont accéder avec le signe $ ⇒ $CI_JOB_NAME
cas d’utilisation
contrôler le comportement des jobs dans un pipeline
stocker des valeurs utilisées à différents endroits du pipeline
éviter de coder en dur des valeurs dans le .[Link]

Il existe de nombreuses variables prédéfinies


Predefined CI/CD variables

37
Introduction Pipeline Runner Keywords Variables Deploy

Définir de nouvelles variables avec le


mot-clé variables
Elles peuvent être locales à un job ou partagées par tout le
pipeline :

38
Introduction Pipeline Runner Keywords Variables Deploy

Ignorer les variables globales localement

39
Introduction Pipeline Runner Keywords Variables Deploy

Définir des variables dans l’UI de GitLab


La valeur de certaines variables ne doit pas être codée dans le
fichier : mots de passe, token, etc. ⇒ on les définit directement
dans GitLab. Elles ne sont visibles qu’aux rôles maintainer+

40
Introduction Pipeline Runner Keywords Variables Deploy

Définir des variables dans l’UI de GitLab

Mask variable : valeur cachée dans la sortie du job ⇒

41
Introduction Pipeline Runner Keywords Variables Deploy

Attention à la sécurité des variables

42
Introduction Pipeline Runner Keywords Variables Deploy

Variable référençant des fichiers

Dans l’UI, il est possible de définir des variables qui sont des
fichiers, e.g. une clé SSH

Pour finir sur les variables : Where variables can be used

43
Introduction Pipeline Runner Keywords Variables Deploy

Plan

1 GitLab vs. Dev(Sec)Ops

2 GitLab pipeline

3 Configuration de l’environnement du pipeline

4 Keywords

5 Variables

6 Deploy ; un exemple simple

44
Introduction Pipeline Runner Keywords Variables Deploy

Exemple de déploiement

On a tout ce qu’il faut pour un premier déploiement : une


simple mise à disposition de l’archive sur le net

45
Introduction Pipeline Runner Keywords Variables Deploy

Exemple de déploiement

46
Introduction Pipeline Runner Keywords Variables Deploy

Conclusion
À connaître
stages : définit les étapes du pipeline de CI/CD
stage : définit le nom d’une étape
job : tâche associée à un stage
artifacts : fichiers et dossiers produits par un job
GitLab runner : application exécutant les jobs
variables : permet une programmation avancée du pipeline

Bonnes pratiques
utiliser les stages par défaut : build, test, deploy
données sensibles ⇒ définition de variables/fichiers via l’UI
utiliser des images précises pour les runners
Ce cours est largement inspiré de la documentation fournie par GitLab Get started with GitLab CI/CD

47

Vous aimerez peut-être aussi