Parlons de GitLab.
La plateforme web de DevOps GitLab offre un ensemble complet d’outils pour le développement de logiciels, la gestion des versions, l’intégration continue, la livraison (CI/CD) et la communication. Basée sur Git, le système de contrôle de version distribué bien connu, elle fournit une solution de gestion de référentiel centralisée.
GitLab permet aux équipes de gérer efficacement leurs projets de développement de logiciels, de suivre les modifications et de communiquer sur le code. Elle offre des outils de gestion de projet ainsi que des capacités telles que les référentiels de code, le suivi des problèmes, les revues de code, l’intégration continue et le déploiement.
Fonctionnalités clés de GitLab
- Le système de contrôle de version de GitLab, qui s’appuie sur Git, permet aux développeurs de suivre efficacement les modifications, de créer des branches et de gérer les fusions.
- GitLab propose un système de gestion de référentiel centralisé qui permet aux programmeurs d’effectuer le stockage, l’organisation et la gestion de leur base de code.
- Suivi des problèmes : En utilisant le système intégré de suivi des problèmes de GitLab, les équipes peuvent créer et suivre les problèmes, les attribuer aux membres de l’équipe et suivre leur avancement.
- GitLab fournit un puissant pipeline CI/CD qui automatise les procédures de construction, de test et de déploiement. Il permet aux équipes de fusionner instantanément les modifications de code, d’effectuer des tests automatisés et de déployer des applications.
- Les outils de collaboration tels que les revues de code, les commentaires et les conversations en ligne facilitent la coopération entre les membres de l’équipe et permettent d’apporter des contributions aux modifications de code.
- GitLab propose des outils de gestion de projet tels que les jalons, les tableaux, le Kanban et les tableaux Agile, permettant aux équipes de planifier et de suivre avec succès la progression de leurs projets.
- Sécurité et Contrôle d’Accès: Pour garantir l’intégrité du code et se prémunir contre les préoccupations de sécurité potentielles, GitLab offre plusieurs capacités de sécurité, telles que le contrôle d’accès basé sur les rôles, l’approbation des demandes de fusion et la gestion des vulnérabilités.
Figure 1 Architecture de la Pipeline CICD de GitLab
GitLab est disponible en différentes éditions, de la version communautaire gratuite à une version premium offrant plus de fonctionnalités et de choix de support. Il peut être utilisé en tant que service basé sur le cloud via GitLab.com ou hébergé en local.
Intégration Continue et Livraison Continue (CI/CD) de GitLab
GitLab CI/CD est une plateforme d’intégration continue et de livraison continue robuste proposée par GitLab, un outil de gestion de référentiel Git basé sur le web. Les équipes peuvent automatiser chaque étape du cycle de vie du développement logiciel, de l’engagement de code à la mise en production, en utilisant un ensemble de pipelines.
Un aperçu du processus CI/CD de GitLab est présenté ci-dessous:
- Configuration de GitLab: Avant de commencer, vous devez avoir configuré un référentiel GitLab. Vous pouvez soit mettre en place votre propre instance hébergée en local de GitLab, soit utiliser la version hébergée dans le cloud.
- .gitlab-ci.yml: Les éléments clés qui sous-tendent GitLab CI/CD se trouvent dans le fichier .gitlab-ci.yml. Ce fichier, qui décrit le pipeline CI/CD, se trouve à la racine de votre dépôt de projet. Il est constitué de plusieurs étapes, tâches et instructions qui définissent comment votre code doit être créé, examiné et publié. Le langage utilisé pour l’écrire est YAML.
- Pipelines: Dans GitLab CI/CD, une pipeline est une collection d’étapes et de tâches qui spécifient les actions à entreprendre pour une branche ou un tag particulier dans votre dépôt. Vous pouvez automatiser les processus de test et de déploiement en faisant démarrer chaque pipeline lorsqu’un nouveau commit ou une demande de fusion se produit.
- Jobs et Stages: Les étapes représentent les étapes du pipeline, y compris la construction, les tests et le déploiement. Vous spécifiez une ou plusieurs tâches – des unités de travail individuelles – à chaque niveau. Les tâches peuvent s’exécuter sur des runners distincts (tels que des machines virtuelles, des conteneurs ou des pods Kubernetes), soit en parallèle, soit en série.
- Runners: GitLab CI/CD utilise des runners pour exécuter les tâches décrites dans votre pipeline. GitLab propose à la fois des runners partagés et des runners personnalisés que vous pouvez configurer sur votre propre infrastructure. Vos builds et tests seront toujours exécutés car les GitLab Runners surveillent les nouvelles tâches et les exécutent dans des environnements sécurisés et isolés.
- Artifacts et Rapports de tâche: GitLab CI/CD vous permet de sauvegarder les artefacts produits dans le cadre du pipeline, tels que les résultats de couverture de code, les rapports de test ou les binaires construits. Vous pouvez télécharger ces artefacts et les utiliser pour le déploiement ou des investigations supplémentaires.
- Intégrations et déploiement: GitLab CI/CD offre de nombreuses intégrations pour déployer votre code vers différents environnements, y compris des clusters Kubernetes, des infrastructures cloud telles qu’Azure, AWS ou Google Cloud, ou même des serveurs personnalisés. Vous avez la possibilité de créer vos propres scripts de déploiement ou d’utiliser les modèles de déploiement prédéfinis de GitLab.
- Surveillance et retour d’information: GitLab CI/CD vous donne accès aux informations sur l’état et le développement de vos pipelines via l’interface utilisateur de GitLab. Nous pouvons consulter les journaux, suivre l’exécution de chaque tâche, et recevoir des notifications lorsqu’une exécution de pipeline réussit ou échoue.
GitLab CI/CD intègre diverses fonctionnalités, telles que le cache, les variables d’environnement, la gestion des secrets, et plus encore, vous permettant de personnaliser et d’améliorer vos workflows CI/CD selon vos besoins.
Au total, GitLab CI/CD simplifie le processus de création, de test et de déploiement de logiciels, permettant aux équipes de développer des applications de haute qualité plus rapidement et efficacement.
GitLab CI : Traitement parallèle
Pour un développeur, peu de choses sont plus ennuyeuses que d’attendre longtemps que tout se termine après avoir poussé du nouveau code. Ce manuel démontre étape par étape comment le traitement parallèle peut considérablement raccourcir les temps de déploiement.
A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.

Figure 2 Exécution simultanée des tâches GitLab
Exécuter l’automatisation de déploiement parallèle avec GitLab CICD est assez simple, mais il y a quelques paramètres de configuration dont vous devez être conscient. Nous allons passer en revue chaque étape pour mettre en place l’exécution parallèle afin de rendre les déploiements plus rapides dans ce tutoriel et comment communiquer les résultats à l’équipe SRE. Alors, commençons!
Figure 3 GitLab – Déploiements parallèles avec Régions
Workflow de déploiements parallèles GitLab
Pour améliorer les temps d’exécution, nous devons exécuter plusieurs tâches de déploiement en parallèle. Dans chaque instance de tâche de déploiement, nous devons ensuite effectuer certaines instructions, telles que la création de différentes sections d’un site, l’intégration de serveurs web et la mise à jour des configurations.
Nous avons plus de XX tâches dans les pipelines que nous utilisons pour construire et déployer notre application GitLab. Toutes ces positions ne sont pas égales. Certaines sont des opérations rapides qui ne prennent que quelques secondes à compléter, tandis que d’autres sont des processus longs qui doivent être soigneusement optimisés. Les modifications apportées par les membres de l’équipe et les contributeurs de la communauté plus large sont représentées par chacun de ces pipelines. Pour s’assurer que la mise à jour fonctionne comme prévu et est intégrée avec le reste du produit, tous les contributeurs de l’application/projet doivent attendre la fin des pipelines. Pour maintenir la productivité de nos équipes élevée, nous voulons que nos pipelines soient terminés le plus rapidement possible.
En conséquence, nous surveillons constamment la longueur de nos pipelines. Par exemple, une série réussie de pipelines a pris environ 53,8 minutes pour se terminer dans la dernière version.
En supposant que nous exécutons environ 100 à 200 pipelines chaque jour, nous voulons examiner si nous pouvons optimiser notre processus pour modifier la manière dont les tâches longues s’exécutent.
Figure 4 GitLab – Exécution séquentielle des tâches
Dans cette partie, vous avez exploré l’exécution séquentielle des tâches. Dans la seconde partie de cette série, vous apprendrez comment nous avons résolu les tâches à goulot d’étranglement en les exécutant en parallèle.
Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo