# GitLab - Administration, CI/CD, et Gestion de Projets

#### **Méthodologie Pédagogique**

* **Approche Pratique** : L'accent est mis sur l'apprentissage par la pratique avec des labs et des projets réels.
* **Progression Pédagogique** : La formation évolue de la gestion de base des projets à l'automatisation avancée et au DevOps.
* **Support Continu** : Assistance régulière, feedbacks fréquents, et discussions pour maximiser l'apprentissage.
* **Travail Collaboratif** : Le travail en équipe est encouragé pour favoriser l'échange d'idées et la collaboration.

**Durée Totale : 6 jours**

* **Sessions hebdomadaires** : 2 sessions de 2 heures chacune
* **Labs & Hands-on** : 3 heures par semaine

#### **Semaine 1 : Introduction à GitLab et Installation**

**Session 1 : Introduction à GitLab et ses Fonctionnalités**

* **Objectifs pédagogiques** :
  * Comprendre les concepts fondamentaux de GitLab et ses principales fonctionnalités.
  * Explorer les cas d'utilisation de GitLab dans la gestion de projets et le DevOps.
* **Contenu** :
  * Introduction à GitLab : Historique, fonctionnalités, édition cloud vs. édition auto-hébergée.
  * Présentation des principales fonctionnalités : Gestion de code source, GitLab CI/CD, DevOps, sécurité.
  * Structure de GitLab : Projets, groupes, utilisateurs, pipelines CI/CD.
* **Hands-on** :
  * Exploration de l'interface GitLab (édition SaaS ou auto-hébergée).
  * Création d'un compte utilisateur sur GitLab.com ou installation de GitLab en local (Docker, Omnibus).
  * Navigation à travers l'interface GitLab : Création d'un projet et exploration des options disponibles.

**Session 2 : Installation et Configuration de GitLab**

* **Objectifs pédagogiques** :
  * Apprendre à installer et configurer une instance GitLab auto-hébergée.
  * Configurer les éléments de base pour démarrer un projet GitLab.
* **Contenu** :
  * Prérequis pour l'installation de GitLab : Matériel, logiciel, configuration réseau.
  * Installation de GitLab : Utilisation de Docker, Omnibus, ou installation manuelle.
  * Configuration initiale : DNS, certificats SSL, utilisateurs, accès SSH.
* **Hands-on** :
  * Installation de GitLab sur un serveur ou en local via Docker ou Omnibus.
  * Configuration des paramètres de base : DNS, SSL, accès SSH.
  * Création des premiers utilisateurs et projets pour valider l'installation.

#### **Semaine 2 : Gestion de Projets et Collaboration**

**Session 1 : Gestion des Projets et des Groupes**

* **Objectifs pédagogiques** :
  * Comprendre comment organiser et gérer des projets et des groupes dans GitLab.
  * Apprendre à structurer les projets pour une gestion efficace des ressources.
* **Contenu** :
  * Création et gestion de projets dans GitLab.
  * Organisation des projets en groupes et sous-groupes.
  * Gestion des permissions au niveau des projets et des groupes.
* **Hands-on** :
  * Création de groupes et de sous-groupes pour organiser les projets.
  * Configuration des permissions pour les utilisateurs et les groupes.
  * Importation et gestion d'un projet existant dans GitLab.

**Session 2 : Collaboration et Gestion du Code Source avec GitLab**

* **Objectifs pédagogiques** :
  * Apprendre à gérer le code source avec GitLab et à collaborer efficacement avec d'autres développeurs.
  * Utiliser les outils GitLab pour les revues de code, les merge requests, et les branches.
* **Contenu** :
  * Introduction à Git dans le contexte de GitLab : Commit, branch, merge.
  * Utilisation des merge requests pour gérer les modifications du code.
  * Gestion des conflits de merge, revues de code, et intégration continue.
* **Hands-on** :
  * Création et gestion des branches pour un projet GitLab.
  * Création et gestion des merge requests avec assignation des réviseurs.
  * Résolution des conflits de merge et gestion des revues de code.

#### **Semaine 3 : GitLab CI/CD - Intégration Continue et Déploiement Continu**

**Session 1 : Introduction à GitLab CI/CD**

* **Objectifs pédagogiques** :
  * Comprendre les concepts de base de l'intégration continue et du déploiement continu (CI/CD).
  * Apprendre à configurer des pipelines CI/CD dans GitLab.
* **Contenu** :
  * Introduction à GitLab CI/CD : Pipelines, jobs, stages, runners.
  * Structure des fichiers `.gitlab-ci.yml` pour définir les pipelines CI/CD.
  * Configuration et exécution des pipelines CI/CD pour automatiser les tests et les déploiements.
* **Hands-on** :
  * Création d'un pipeline CI/CD de base avec GitLab.
  * Configuration des runners GitLab pour exécuter les pipelines.
  * Définition de jobs pour automatiser les tests unitaires et l'intégration continue.

**Session 2 : Pipelines Avancés et Déploiement Automatisé**

* **Objectifs pédagogiques** :
  * Apprendre à configurer des pipelines CI/CD complexes avec GitLab.
  * Mettre en œuvre des stratégies avancées pour le déploiement automatisé.
* **Contenu** :
  * Création de pipelines CI/CD multi-stage pour gérer les environnements de développement, test, production.
  * Utilisation des environnements et des variables pour gérer les déploiements.
  * Stratégies de déploiement avancées : Blue-Green Deployment, Canary Releases.
* **Hands-on** :
  * Développement d'un pipeline CI/CD multi-stage pour un projet existant.
  * Configuration des variables d'environnement pour les déploiements.
  * Mise en œuvre d'une stratégie de déploiement Blue-Green ou Canary avec GitLab.

#### **Semaine 4 : Sécurité, Surveillance et Gestion des Runners**

**Session 1 : Sécurité et Gestion des Accès dans GitLab**

* **Objectifs pédagogiques** :
  * Comprendre les concepts de sécurité dans GitLab et apprendre à sécuriser les projets.
  * Configurer des politiques d'accès et des pratiques de sécurité.
* **Contenu** :
  * Introduction à la sécurité dans GitLab : Gestion des secrets, variables protégées.
  * Configuration des politiques d'accès pour les branches et les pipelines.
  * Utilisation des outils de sécurité intégrés : SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing).
* **Hands-on** :
  * Configuration des variables protégées pour sécuriser les secrets dans les pipelines CI/CD.
  * Mise en place de politiques d'accès pour les branches critiques.
  * Utilisation des fonctionnalités SAST et DAST pour sécuriser les projets GitLab.

**Session 2 : Surveillance et Gestion des Runners GitLab**

* **Objectifs pédagogiques** :
  * Apprendre à surveiller les performances et l'état des runners dans GitLab.
  * Optimiser la gestion des runners pour des performances CI/CD efficaces.
* **Contenu** :
  * Introduction aux GitLab Runners : Types, configuration, et utilisation.
  * Surveillance des runners et gestion des ressources pour les pipelines CI/CD.
  * Optimisation des runners pour gérer la charge et maximiser l'efficacité.
* **Hands-on** :
  * Installation et configuration de GitLab Runners pour des pipelines spécifiques.
  * Surveillance des performances des runners et gestion des logs.
  * Optimisation des configurations des runners pour améliorer les temps d'exécution des pipelines.

#### **Semaine 5 : DevOps avec GitLab et Intégrations Tiers**

**Session 1 : Intégration de GitLab avec des Outils DevOps**

* **Objectifs pédagogiques** :
  * Apprendre à intégrer GitLab avec d'autres outils DevOps pour améliorer les flux de travail.
  * Mettre en place des intégrations pour la surveillance, les alertes, et la gestion des incidents.
* **Contenu** :
  * Introduction aux intégrations DevOps dans GitLab : Prometheus, Grafana, Slack, JIRA.
  * Configuration des intégrations pour la surveillance et les notifications.
  * Gestion des incidents et des alertes avec GitLab et des outils tiers.
* **Hands-on** :
  * Intégration de GitLab avec Prometheus pour la surveillance des pipelines CI/CD.
  * Configuration des alertes et notifications avec Slack.
  * Intégration avec JIRA pour la gestion des tickets et des issues.

**Session 2 : Gestion des Releases et Automatisation Avancée**

* **Objectifs pédagogiques** :
  * Apprendre à gérer les releases de logiciels avec GitLab.
  * Automatiser les processus de versionnement et de livraison continue.
* **Contenu** :
  * Introduction à la gestion des releases dans GitLab : Milestones, tags, releases.
  * Automatisation des processus de versionnement avec GitLab CI/CD.
  * Déploiement continu avec GitLab : Stratégies et bonnes pratiques.
* **Hands-on** :
  * Création et gestion des releases pour un projet logiciel dans GitLab.
  * Automatisation du versionnement des releases avec un pipeline CI/CD.
  * Mise en œuvre du déploiement continu pour des projets en production.

#### **Semaine 6 : Projet Final et Clôture de la Formation**

**Session 1 : Développement et Implémentation du Projet Final**

* **Objectifs pédagogiques** :
  * Appliquer toutes les compétences acquises pour gérer un projet GitLab complet.
  * Configurer, sécuriser, et automatiser un projet basé sur un cas d'utilisation réel.
* **Contenu** :
  * Conception du projet final : Définition des objectifs, structure du pipeline CI/CD, gestion des releases.
  * Déploiement des solutions de sécurité, de surveillance, et d'automatisation pour le projet.
  * Test et optimisation de l'infrastructure

GitLab pour assurer la qualité et la sécurité du projet.

* **Hands-on** :
  * Développement du projet final basé sur un scénario complexe (ex: gestion d'une application web avec CI/CD complet).
  * Mise en œuvre des stratégies de sécurité, de versionnement, et de déploiement continu.
  * Documentation et préparation de la présentation du projet final.

**Session 2 : Présentation du Projet Final et Clôture de la Formation**

* **Objectifs pédagogiques** :
  * Présenter le projet final et démontrer les solutions techniques mises en œuvre.
  * Réviser les concepts clés de la formation et discuter des futures opportunités.
* **Contenu** :
  * Présentation des projets finaux devant les formateurs et les pairs.
  * Discussion sur les points forts et les axes d’amélioration.
  * Bilan de la formation et perspectives de carrière.
* **Hands-on** :
  * Présentation finale du projet : Démonstration et résultats.
  * Discussion libre et échanges de feedback.

####
