# GitLab CI
Démo Point de Synchro du 05/04/2024
---
## Les notions
- Un point d'entrée : `.gitlab-ci.yml`
- Une **pipeline** qui regroupe des **jobs**
- Un **job** = un **conteneur** qui s'exécute sur un **runner**
- Des **templates** et **components** pour réutiliser du code
- Des **variables** et des **inputs** pour paramétrer tout ça
---
## Objectifs du POC
- **Personne ne veut écrire de pipelines**
- Le moins de configuration possible pour les tâches habituelles
- Intégrer directement un workflow standard
- Mutualiser, rationaliser, simplifier, avoir des _best practices_ et documenter
---
## Les pipelines créées
- Construction d'un conteneur
- Réplication d'un ou plusieurs conteneurs en interne
- Construction d'une chart Helm
- Réplication d'une ou plusieurs charts en interne
---
## Les outils
- Harbor : registry OCI
- Kaniko : _build_ d'images Docker
- Skopeo : copie d'artefacts OCI (conteneurs, charts...)
- Helm : _pull_, _packaging_ et _push_ de _charts_
---
## Rappel : CI != CD
- Ces actions se limitent à construire et pousser des objets dans la registry !
---
## Démo : utilisation + explication du workflow
- Exemple avec l'application Keycloak :
- Mirroring de l'image upstream
- Construction d'un conteneur pour les thèmes
- Mirroring de la chart upstream
---
## Le workflow
1. Itération en DEV
2. Validation pour STG
3. Validation pour PRD
---
## Le workflow - DEV
- Je développe dans une _branche_ git
- Je crée une _Merge Request_, les jobs de DEV s'activent
- Ils s'exécuteront à chaque mise à jour de la _MR_ (Push)
- Les artefacts sont traités et envoyés dans la registry DEV
- Je déploie et test en environnement de DEV
- Quand OK, relecture et validation de la MR par un pair
- Merge du code dans la branche _main_
---
## Le workflows - STG
- Je tague le commit correspondant à la MR précédente
- Les jobs de STG s'activent, les jobs de PRD sont créés mais non déclenchés
- Les artefacts sont traités et envoyés dans la registry STG
- Je suis le process de mise en staging (ticket, validation OPS, etc.)
- Je déploie et test en environnement de STG
- En cas d'échec : procédure de rollback à définir lors du POC de CD
---
## Le workflow - PRD
- Je déclenche manuellement les jobs de PRD liés à mon tag
- Les artefacts validés sont copiés de la registry STG vers celle de PRD
- Je suis le process de mise en production (ticket, validation OPS, etc.)
- Je déploie et test en environnement de PRD
- En cas d'échec : procédure de rollback à définir lors du POC de CD
---
## Suite du POC
- Vous faire essayer le workflow et les pipelines
- Avoir un retour concret sur ce qui marche ou non (technique ou pas)
- Itérer
- **#ug_gitlab-ci**
---
## Pause
---
## Partage de Connaissances : implémentation
- Explication du code [des components](https://sourcehub.orange-business.com/cs-factory-stg/apps/poc_ci_shared_components)
<style type="text/css">
p, ul, ol {
font-size: smaller;
}
.reveal ul ul li {
font-size: smaller;
}
.reveal section {
text-align: left;
}
.reveal h1 {
color: #FF8200;
text-align: center;
border-bottom: 1px solid #FF8200;
margin-bottom: 0.4em;
}
.reveal h2 {
color: #FF8200;
text-align: left;
}
.reveal h3 {
color: #FF8200;
text-align: center;
border-bottom: 1px solid #FF8200;
}
.reveal code {
color: aquamarine;
font-size: smaller;
}
.reveal strong {
color: #FF8200;
}
</style>