[{"data":1,"prerenderedAt":1391},["ShallowReactive",2],{"/fr-fr/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes":3,"navigation-fr-fr":594,"banner-fr-fr":1029,"footer-fr-fr":1037,"blog-post-authors-fr-fr-Karthik Nayak|Manuel Kraft":1276,"blog-related-posts-fr-fr-how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes":1303,"blog-promotions-fr-fr":1328,"next-steps-fr-fr":1382},{"id":4,"title":5,"authors":6,"body":9,"category":571,"date":572,"description":573,"extension":574,"externalUrl":575,"faq":575,"featured":283,"heroImage":576,"meta":577,"navigation":283,"path":578,"seo":579,"slug":585,"stem":586,"tags":587,"template":591,"updatedDate":592,"__hash__":593},"blogPosts/fr-fr/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes.md","Dépôts GitLab : diminution du temps de sauvegarde de 48 h à 41 min ",[7,8],"Karthik Nayak","Manuel Kraft",{"type":10,"value":11,"toc":561},"minimark",[12,23,31,34,44,49,52,86,89,92,96,108,111,116,119,126,129,145,155,162,169,173,176,182,417,426,430,433,459,463,466,517,520,535,539,542,545,557],[13,14,15,16,22],"p",{},"Les sauvegardes de dépôt sont un élément essentiel de toute stratégie de reprise après un sinistre important. Cependant, à mesure que les dépôts grossissent, garantir des sauvegardes fiables devient de plus en plus difficile. Notre propre ",[17,18,21],"a",{"href":19,"rel":20},"https://gitlab.com/gitlab-org/gitlab",[],"dépôt Rails"," mettait 48 heures à être sauvegardé, ce qui nous obligeait à faire un choix impossible entre la fréquence des sauvegardes et les performances du système. Nous avons donc décidé de trouver une solution à ce problème pour nos clients et pour nos propres équipes internes.",[13,24,25,26,30],{},"Après investigation, nous avons pu déterminer la cause du problème, qui remontait à une fonction Git vieille de 15 ans dont la complexité algorithmique O(N²) freinait lourdement les opérations. Nous l'avons corrigée en repensant l'algorithme et ",[27,28,29],"strong",{},"avons ainsi réduit les temps de sauvegarde de manière exponentielle",".",[13,32,33],{},"Résultat : des coûts réduits, des risques diminués, et surtout, des stratégies de sauvegarde désormais adaptées à la croissance de votre code source.",[13,35,36,37,43],{},"Ce problème d'évolutivité de ",[17,38,42],{"href":39,"rel":40,"title":41},"https://about.gitlab.com/fr-fr/blog/what-is-git/",[],"Qu'est-ce que Git ?","Git"," affectait tout utilisateur disposant de grands dépôts. Découvrez dans cet article comment nous l'avons identifié et résolu.",[45,46,48],"h2",{"id":47},"sauvegarde-à-grande-échelle-enjeux-et-solutions","Sauvegarde à grande échelle : enjeux et solutions",[13,50,51],{},"À mesure que les entreprises développent leurs dépôts et que les sauvegardes se complexifient, elles sont confrontées aux défis suivants :",[53,54,55,62,68,74,80],"ul",{},[56,57,58,61],"li",{},[27,59,60],{},"Sauvegardes trop longues"," : pour les très grands dépôts, la sauvegarde peut prendre plusieurs heures, ce qui rend impossible la planification de sauvegardes régulières.",[56,63,64,67],{},[27,65,66],{},"Utilisation intensive des ressources"," : ces processus de sauvegarde prolongés mobilisent d'importantes ressources serveur, au risque d'impacter d'autres opérations critiques.",[56,69,70,73],{},[27,71,72],{},"Fenêtres de sauvegarde"," : il peut être difficile de trouver des créneaux de maintenance adaptés à des processus aussi longs, en particulier pour les équipes qui fonctionnent 24 h/24 et 7 j/7.",[56,75,76,79],{},[27,77,78],{},"Risque accru d'échec"," : les longues sauvegardes sont plus exposées aux interruptions causées par des problèmes réseau, des redémarrages de serveur ou des erreurs système, et obligent souvent les équipes à recommencer tout le processus depuis le début.",[56,81,82,85],{},[27,83,84],{},"Conditions de concurrence"," : la durée allongée d'une sauvegarde augmente le risque que le dépôt ait beaucoup changé pendant le processus et peut conduire à une sauvegarde invalide ou à des interruptions liées à des objets devenus indisponibles.",[13,87,88],{},"Ces défis peuvent conduire à faire des compromis sur la fréquence ou l'exhaustivité des sauvegardes, ce qui est inacceptable en matière de protection des données. L'allongement des fenêtres de sauvegarde peut contraindre certains clients à adopter des solutions de contournement, comme l'utilisation d'outils externes ou la réduction de la fréquence des sauvegardes, ce qui fragilise les stratégies de protection des données au sein des entreprises.",[13,90,91],{},"Découvrez maintenant comment nous avons identifié ce goulot d'étranglement de performance, trouvé une solution et déployé une mesure corrective capable de réduire drastiquement les temps de sauvegarde.",[45,93,95],{"id":94},"le-défi-technique","Le défi technique",[13,97,98,99,107],{},"La fonctionnalité de sauvegarde des dépôts de GitLab repose sur la commande ",[17,100,103],{"href":101,"rel":102},"https://git-scm.com/docs/git-bundle/fr",[],[104,105,106],"code",{},"git bundle create",", qui génère un aperçu complet du dépôt avec tous les objets et références comme les branches et les tags. Ce paquet sert de point de restauration pour recréer le dépôt dans son état exact.",[13,109,110],{},"Cependant, l'implémentation de cette commande souffrait d'un problème d'évolutivité lié au nombre de références et entraînait un véritable goulot d'étranglement en termes de performance. À mesure que les dépôts accumulaient un nombre croissant de références, le temps de traitement des données augmentait de façon exponentielle. Dans nos plus grands dépôts, contenant des millions de références, les opérations de sauvegarde pouvaient dépasser les 48 heures.",[112,113,115],"h3",{"id":114},"analyse-des-causes-profondes","Analyse des causes profondes",[13,117,118],{},"Pour identifier la cause profonde de ce ralentissement, nous avons analysé un flame graph de la commande pendant son exécution.",[13,120,121],{},[122,123],"img",{"alt":124,"src":125},"Flame graph montrant la commande pendant son exécution","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097176/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097176388.jpg",[13,127,128],{},"Ce graphique illustre le parcours d'exécution d'une commande à travers sa trace de piles d'appels, où chaque barre correspond à une fonction dans le code, et sa largeur indique le temps que la commande a passé à s'exécuter dans cette fonction spécifique.",[13,130,131,132,134,135,138,139,144],{},"Le flame graph de ",[104,133,106],{}," exécuté sur un dépôt contenant 10 000 références révèle qu'environ 80 % du temps d'exécution est consommé par la fonction ",[104,136,137],{},"object_array_remove_duplicates()",", introduite dans Git par le biais du ",[17,140,143],{"href":141,"rel":142},"https://gitlab.com/gitlab-org/git/-/commit/b2a6d1c686",[],"commit b2a6d1c686"," (paquet : permettre à la même référence d'être spécifiée plusieurs fois, 17/01/2009).",[13,146,147,148,150,151,154],{},"Pour comprendre ce changement, il est important de savoir que la commande ",[104,149,106],{}," permet de préciser les références à inclure dans le paquet et que, pour les paquets de dépôt complets, le flag ",[104,152,153],{},"--all"," compacte toutes les références.",[13,156,157,158,161],{},"Ce commit corrigeait un problème lié aux références dupliquées fournies via la ligne de commande, telles que ",[104,159,160],{},"git bundle create main.bundle main main",", et créait un paquet sans gérer correctement la duplication de la référence « main ». Lors de la décompression, Git tentait d'écrire la même référence deux fois, ce qui provoquait une erreur.",[13,163,164,165,168],{},"Le code ajouté pour éviter ces duplications utilise des boucles ",[104,166,167],{},"for"," imbriquées qui parcourent toutes les références afin de détecter les doublons. Cet algorithme de complexité O(N²) est un goulot d'étranglement majeur en termes de performance dans les dépôts car il contient un grand nombre de références et prolonge considérablement le temps de traitement des données.",[112,170,172],{"id":171},"la-solution-don-à-un-mappage-efficace","La solution : d'O(N²) à un mappage efficace",[13,174,175],{},"Pour résoudre ce problème, nous avons proposé une correction en amont dans Git pour remplacer les boucles imbriquées par une structure de type map. Chaque référence y est ajoutée une seule fois, ce qui élimine automatiquement les doublons et optimise le traitement.",[13,177,178,179,181],{},"Ce changement améliore considérablement les performances de la commande ",[104,180,106],{}," et garantit une bien meilleure évolutivité dans les dépôts avec un grand nombre de références. Des tests de benchmark effectués sur un dépôt contenant 10 000 références montrent une amélioration des performances par un facteur de 6.",[183,184,189],"pre",{"className":185,"code":186,"language":187,"meta":188,"style":188},"language-shell shiki shiki-themes github-light","Benchmark 1: bundle (refcount = 100000, revision = master)\n  Time (mean ± σ):  14.653 s ±  0.203 s [User: 13.940 s, System: 0.762 s]\n  Range (min … max):   14.237 s … 14.920 s  10 runs\n\nBenchmark 2: bundle (refcount = 100000, revision = HEAD)\n  Time (mean ± σ):      2.394 s ±  0.023 s  [User: 1.684 s, System: 0.798 s]\n  Range (min … max):    2.364 s …  2.425 s  10 runs\n\nSummary\n  bundle (refcount = 100000, revision = HEAD) ran\n  6.12 ± 0.10 times faster than bundle (refcount = 100000, revision = master)\n\n","shell","",[104,190,191,229,260,278,285,310,334,348,353,359,380],{"__ignoreMap":188},[192,193,196,200,204,207,211,214,217,220,223,226],"span",{"class":194,"line":195},"line",1,[192,197,199],{"class":198},"s7eDp","Benchmark",[192,201,203],{"class":202},"sYBdl"," 1:",[192,205,206],{"class":202}," bundle",[192,208,210],{"class":209},"sgsFI"," (refcount ",[192,212,213],{"class":202},"=",[192,215,216],{"class":202}," 100000,",[192,218,219],{"class":202}," revision",[192,221,222],{"class":202}," =",[192,224,225],{"class":202}," master",[192,227,228],{"class":209},")\n",[192,230,232,235,238,241,244,247,251,254,257],{"class":194,"line":231},2,[192,233,234],{"class":198},"  Time",[192,236,237],{"class":209}," (mean ",[192,239,240],{"class":202},"±",[192,242,243],{"class":202}," σ",[192,245,246],{"class":209},"):  14.653 s ±  0.203 s [User: ",[192,248,250],{"class":249},"sYu0t","13.940",[192,252,253],{"class":209}," s, System: ",[192,255,256],{"class":249},"0.762",[192,258,259],{"class":209}," s]\n",[192,261,263,266,269,272,275],{"class":194,"line":262},3,[192,264,265],{"class":198},"  Range",[192,267,268],{"class":209}," (min ",[192,270,271],{"class":202},"…",[192,273,274],{"class":202}," max",[192,276,277],{"class":209},"):   14.237 s … 14.920 s  10 runs\n",[192,279,281],{"class":194,"line":280},4,[192,282,284],{"emptyLinePlaceholder":283},true,"\n",[192,286,288,290,293,295,297,299,301,303,305,308],{"class":194,"line":287},5,[192,289,199],{"class":198},[192,291,292],{"class":202}," 2:",[192,294,206],{"class":202},[192,296,210],{"class":209},[192,298,213],{"class":202},[192,300,216],{"class":202},[192,302,219],{"class":202},[192,304,222],{"class":202},[192,306,307],{"class":202}," HEAD",[192,309,228],{"class":209},[192,311,313,315,317,319,321,324,327,329,332],{"class":194,"line":312},6,[192,314,234],{"class":198},[192,316,237],{"class":209},[192,318,240],{"class":202},[192,320,243],{"class":202},[192,322,323],{"class":209},"):      2.394 s ±  0.023 s  [User: ",[192,325,326],{"class":249},"1.684",[192,328,253],{"class":209},[192,330,331],{"class":249},"0.798",[192,333,259],{"class":209},[192,335,337,339,341,343,345],{"class":194,"line":336},7,[192,338,265],{"class":198},[192,340,268],{"class":209},[192,342,271],{"class":202},[192,344,274],{"class":202},[192,346,347],{"class":209},"):    2.364 s …  2.425 s  10 runs\n",[192,349,351],{"class":194,"line":350},8,[192,352,284],{"emptyLinePlaceholder":283},[192,354,356],{"class":194,"line":355},9,[192,357,358],{"class":198},"Summary\n",[192,360,362,365,367,369,371,373,375,377],{"class":194,"line":361},10,[192,363,364],{"class":198},"  bundle",[192,366,210],{"class":209},[192,368,213],{"class":202},[192,370,216],{"class":202},[192,372,219],{"class":202},[192,374,222],{"class":202},[192,376,307],{"class":202},[192,378,379],{"class":209},") ran\n",[192,381,383,386,389,392,395,398,401,403,405,407,409,411,413,415],{"class":194,"line":382},11,[192,384,385],{"class":198},"  6.12",[192,387,388],{"class":202}," ±",[192,390,391],{"class":249}," 0.10",[192,393,394],{"class":202}," times",[192,396,397],{"class":202}," faster",[192,399,400],{"class":202}," than",[192,402,206],{"class":202},[192,404,210],{"class":209},[192,406,213],{"class":202},[192,408,216],{"class":202},[192,410,219],{"class":202},[192,412,222],{"class":202},[192,414,225],{"class":202},[192,416,228],{"class":209},[13,418,419,420,425],{},"Le correctif a été accepté et ",[17,421,424],{"href":422,"rel":423},"https://gitlab.com/gitlab-org/git/-/commit/bb74c0abbc31da35be52999569ea481ebd149d1d",[],"fusionné"," dans Git en amont. Chez GitLab, nous l'avons rétroporté afin que nos clients puissent en bénéficier immédiatement sans attendre la prochaine version officielle de Git.",[45,427,429],{"id":428},"résultat-des-temps-de-sauvegarde-radicalement-réduits","Résultat : des temps de sauvegarde radicalement réduits",[13,431,432],{},"Les gains de performance qui découlent de cette amélioration sont considérables :",[53,434,435,441,447,453],{},[56,436,437,440],{},[27,438,439],{},"De 48 heures à 41 minutes"," : la sauvegarde de notre plus grand dépôt (gitlab-org/gitlab) ne prend désormais plus que 1,4 % du temps initial.",[56,442,443,446],{},[27,444,445],{},"Performances constantes"," : l'amélioration est stable et s'adapte efficacement, quelle que soit la taille du dépôt.",[56,448,449,452],{},[27,450,451],{},"Efficacité des ressources"," : la charge du serveur lors des opérations de sauvegarde a été fortement réduite.",[56,454,455,458],{},[27,456,457],{},"Applicabilité étendue"," : si le processus de sauvegarde est celui qui bénéficie le plus de cette amélioration, toutes les opérations basées sur des paquets avec un grand nombre de références en profitent également.",[45,460,462],{"id":461},"avantages-pour-nos-clients-gitlab","Avantages pour nos clients GitLab",[13,464,465],{},"Pour les clients GitLab, cette amélioration apporte des bénéfices immédiats et concrets en matière de sauvegarde de leurs dépôts et de leur planification de reprise après sinistre :",[53,467,468,481,491,504],{},[56,469,470,473],{},[27,471,472],{},"Transformation des stratégies de sauvegarde",[53,474,475,478],{},[56,476,477],{},"Les équipes peuvent désormais planifier des sauvegardes complètes chaque nuit, sans impacter les workflows de développement ni nécessiter de longues fenêtres de maintenance.",[56,479,480],{},"Les sauvegardes s'exécutent désormais en arrière-plan, de manière fluide, pendant les créneaux nocturnes, sans processus longs ni dédiés.",[56,482,483,486],{},[27,484,485],{},"Continuité des activités améliorée",[53,487,488],{},[56,489,490],{},"Avec des temps de sauvegarde réduits de plusieurs jours à quelques minutes, les objectifs de point de récupération (RPO) sont considérablement réduits, tout comme le risque métier : en cas de sinistre, ce sont potentiellement seulement quelques heures de travail qui sont perdues, au lieu de plusieurs jours.",[56,492,493,496],{},[27,494,495],{},"Réduction de la charge opérationnelle",[53,497,498,501],{},[56,499,500],{},"La consommation de ressources serveur diminue, tout comme la durée des fenêtres de maintenance.",[56,502,503],{},"Des sauvegardes plus rapides réduisent également les coûts de calcul, en particulier dans les environnements cloud où chaque minute de traitement des données se traduit directement en factures plus élevées.",[56,505,506,509],{},[27,507,508],{},"Pérennisation de l'infrastructure",[53,510,511,514],{},[56,512,513],{},"La croissance des dépôts ne contraint plus les entreprises à faire des choix difficiles entre la fréquence des sauvegardes et les performances du système.",[56,515,516],{},"À mesure que votre code source se développe, votre stratégie de sauvegarde peut désormais évoluer.",[13,518,519],{},"Les entreprises peuvent à présent mettre en œuvre des stratégies de sauvegarde plus robustes sans compromettre les performances ou l'exhaustivité. Ce qui relevait autrefois d'un compromis difficile est devenu une pratique opérationnelle simple.",[13,521,522,523,528,529,534],{},"À partir de la version ",[17,524,527],{"href":525,"rel":526},"https://docs.gitlab.com/releases/18/gitlab-18-0-released/",[],"GitLab 18.0",", tous les clients GitLab, quelle que soit leur version de licence, profitent désormais pleinement de ces améliorations pour leur stratégie de sauvegarde et l'exécution de leurs ",[17,530,533],{"href":531,"rel":532},"https://docs.gitlab.com/administration/backup_restore/backup_gitlab/",[],"sauvegardes",", sans aucune autre modification de la configuration.",[45,536,538],{"id":537},"et-après","Et après ?",[13,540,541],{},"Cette avancée s'inscrit dans notre engagement continu à proposer une infrastructure Git évolutive, adaptée aux exigences des entreprises. Bien que réduire le temps de sauvegarde de 48 heures à 41 minutes représente une étape majeure, nous poursuivons nos efforts pour identifier et éliminer d'autres goulots d'étranglement dans l'ensemble de notre pile.",[13,543,544],{},"Nous sommes particulièrement fiers que cette amélioration ait été intégrée en amont dans le projet Git afin de profiter non seulement aux utilisateurs de GitLab, mais aussi à l'ensemble de la communauté Git. Cette approche collaborative du développement garantit que les améliorations sont rigoureusement revues, largement testées et accessibles à tous.",[546,547,548],"blockquote",{},[13,549,550,551,556],{},"Des travaux d'infrastructure en profondeur comme celui-ci illustrent notre approche de la performance chez GitLab. Consultez le ",[17,552,555],{"href":553,"rel":554},"https://about.gitlab.com/fr-fr/eighteen/",[],"replay de notre événement virtuel de lancement de GitLab 18"," et découvrez les autres améliorations fondamentales que nous proposons.",[558,559,560],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":188,"searchDepth":231,"depth":231,"links":562},[563,564,568,569,570],{"id":47,"depth":231,"text":48},{"id":94,"depth":231,"text":95,"children":565},[566,567],{"id":114,"depth":262,"text":115},{"id":171,"depth":262,"text":172},{"id":428,"depth":231,"text":429},{"id":461,"depth":231,"text":462},{"id":537,"depth":231,"text":538},"engineering","2025-06-05","L'optimisation d'une fonction Git vieille de 15 ans a permis d'augmenter la productivité, de renforcer les stratégies de sauvegarde et de réduire les risques.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097166/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20display%20preview%20for%20blog%20images%20%282%29_2pKf8RsKzAaThmQfqHIaa7_1750097166565.png",{},"/fr-fr/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",{"ogTitle":580,"ogImage":576,"ogDescription":573,"ogSiteName":581,"noIndex":582,"ogType":583,"ogUrl":584,"title":580,"canonicalUrls":584,"description":573},"Dépôts GitLab : forte diminution des temps de sauvegarde","https://about.gitlab.com",false,"article","https://about.gitlab.com/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes","fr-fr/blog/how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",[588,589,590],"git","open source","performance","BlogPost","2025-07-09","Jpb6JuCaGXKOvlaG7aA4PdndgYLQwFViO6DZn_toDng",{"logo":595,"freeTrial":600,"sales":605,"login":610,"items":615,"search":944,"minimal":980,"duo":999,"switchNav":1008,"pricingDeployment":1019},{"config":596},{"href":597,"dataGaName":598,"dataGaLocation":599},"/fr-fr/","gitlab logo","header",{"text":601,"config":602},"Commencer un essai gratuit",{"href":603,"dataGaName":604,"dataGaLocation":599},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":606,"config":607},"Demander une démo",{"href":608,"dataGaName":609,"dataGaLocation":599},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":611,"config":612},"Connexion",{"href":613,"dataGaName":614,"dataGaLocation":599},"https://gitlab.com/users/sign_in/","sign in",[616,645,747,752,866,922],{"text":617,"config":618,"menu":620},"Plateforme",{"dataNavLevelOne":619},"platform",{"type":621,"columns":622},"cards",[623,629,637],{"title":617,"description":624,"link":625},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":626,"config":627},"Explorer notre plateforme",{"href":628,"dataGaName":619,"dataGaLocation":599},"/fr-fr/platform/",{"title":630,"description":631,"link":632},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":633,"config":634},"Découvrir GitLab Duo",{"href":635,"dataGaName":636,"dataGaLocation":599},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":638,"description":639,"link":640},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":641,"config":642},"En savoir plus",{"href":643,"dataGaName":644,"dataGaLocation":599},"/fr-fr/why-gitlab/","why gitlab",{"text":646,"left":283,"config":647,"menu":649},"Produit",{"dataNavLevelOne":648},"solutions",{"type":650,"link":651,"columns":655,"feature":726},"lists",{"text":652,"config":653},"Voir toutes les solutions",{"href":654,"dataGaName":648,"dataGaLocation":599},"/fr-fr/solutions/",[656,681,704],{"title":657,"description":658,"link":659,"items":664},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":660},{"icon":661,"href":662,"dataGaName":663,"dataGaLocation":599},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[665,669,672,677],{"text":666,"config":667},"CI/CD",{"href":668,"dataGaLocation":599,"dataGaName":666},"/fr-fr/solutions/continuous-integration/",{"text":630,"config":670},{"href":635,"dataGaLocation":599,"dataGaName":671},"gitlab duo agent platform - product menu",{"text":673,"config":674},"Gestion du code source",{"href":675,"dataGaLocation":599,"dataGaName":676},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":678,"config":679},"Livraison de logiciels automatisée",{"href":662,"dataGaLocation":599,"dataGaName":680},"Automated software delivery",{"title":682,"description":683,"link":684,"items":689},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":685},{"href":686,"dataGaName":687,"dataGaLocation":599,"icon":688},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[690,694,699],{"text":691,"config":692},"Tests de sécurité des applications",{"href":686,"dataGaName":693,"dataGaLocation":599},"Application security testing",{"text":695,"config":696},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":697,"dataGaLocation":599,"dataGaName":698},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":700,"config":701},"Conformité logicielle",{"href":702,"dataGaName":703,"dataGaLocation":599},"/fr-fr/solutions/software-compliance/","software compliance",{"title":705,"link":706,"items":711},"Mesures",{"config":707},{"icon":708,"href":709,"dataGaName":710,"dataGaLocation":599},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[712,716,721],{"text":713,"config":714},"Visibilité et mesures",{"href":709,"dataGaLocation":599,"dataGaName":715},"Visibility and Measurement",{"text":717,"config":718},"Gestion de la chaîne de valeur",{"href":719,"dataGaLocation":599,"dataGaName":720},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":722,"config":723},"Analyses et informations",{"href":724,"dataGaLocation":599,"dataGaName":725},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":727,"type":650,"items":728},"GitLab",[729,735,741],{"text":730,"config":731},"Entreprises",{"icon":732,"href":733,"dataGaLocation":599,"dataGaName":734},"Building","/fr-fr/enterprise/","enterprise",{"text":736,"config":737},"Pour les PME",{"icon":738,"href":739,"dataGaLocation":599,"dataGaName":740},"Work","/fr-fr/small-business/","small business",{"text":742,"config":743},"Pour le secteur public",{"icon":744,"href":745,"dataGaLocation":599,"dataGaName":746},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":748,"config":749},"Tarifs",{"href":750,"dataGaName":751,"dataGaLocation":599,"dataNavLevelOne":751},"/fr-fr/pricing/","pricing",{"text":753,"config":754,"menu":756},"Ressources",{"dataNavLevelOne":755},"resources",{"type":650,"link":757,"columns":761,"feature":855},{"text":758,"config":759},"Afficher toutes les ressources",{"href":760,"dataGaName":755,"dataGaLocation":599},"/fr-fr/resources/",[762,795,822],{"title":763,"items":764},"Premiers pas",[765,770,775,780,785,790],{"text":766,"config":767},"Installation",{"href":768,"dataGaName":769,"dataGaLocation":599},"/fr-fr/install/","install",{"text":771,"config":772},"Guides de démarrage",{"href":773,"dataGaName":774,"dataGaLocation":599},"/fr-fr/get-started/","quick setup checklists",{"text":776,"config":777},"Apprentissage",{"href":778,"dataGaLocation":599,"dataGaName":779},"https://university.gitlab.com/","learn",{"text":781,"config":782},"Documentation",{"href":783,"dataGaName":784,"dataGaLocation":599},"https://docs.gitlab.com/","product documentation",{"text":786,"config":787},"Vidéos sur les bonnes pratiques",{"href":788,"dataGaName":789,"dataGaLocation":599},"/fr-fr/getting-started-videos/","best practice videos",{"text":791,"config":792},"Intégrations",{"href":793,"dataGaName":794,"dataGaLocation":599},"/fr-fr/integrations/","integrations",{"title":796,"items":797},"Découvrir",[798,803,808,813,817],{"text":799,"config":800},"Témoignages clients",{"href":801,"dataGaName":802,"dataGaLocation":599},"/fr-fr/customers/","customer success stories",{"text":804,"config":805},"Blog",{"href":806,"dataGaName":807,"dataGaLocation":599},"/fr-fr/blog/","blog",{"text":809,"config":810},"Demo Hub",{"href":811,"dataGaName":812,"dataGaLocation":599},"/fr-fr/demo-hub/","demo hub",{"text":814,"config":815},"The Source",{"href":816,"dataGaName":807,"dataGaLocation":599},"/fr-fr/the-source/",{"text":818,"config":819},"Travail à distance",{"href":820,"dataGaName":821,"dataGaLocation":599},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":823,"items":824},"Connecter",[825,830,835,840,845,850],{"text":826,"config":827},"Services GitLab",{"href":828,"dataGaName":829,"dataGaLocation":599},"/fr-fr/services/","services",{"text":831,"config":832},"Contribuer",{"href":833,"dataGaName":834,"dataGaLocation":599},"https://contributors.gitlab.com","contribute",{"text":836,"config":837},"Communauté",{"href":838,"dataGaName":839,"dataGaLocation":599},"/community/","community",{"text":841,"config":842},"Forum",{"href":843,"dataGaName":844,"dataGaLocation":599},"https://forum.gitlab.com/","forum",{"text":846,"config":847},"Événements",{"href":848,"dataGaName":849,"dataGaLocation":599},"/events/","events",{"text":851,"config":852},"Partenaires",{"href":853,"dataGaName":854,"dataGaLocation":599},"/fr-fr/partners/","partners",{"config":856,"title":859,"text":860,"link":861},{"background":857,"textColor":858},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":862,"config":863},"Lire les articles les plus récents",{"href":864,"dataGaName":865,"dataGaLocation":599},"/fr-fr/whats-new/","whats new",{"text":867,"config":868,"menu":870},"Société",{"dataNavLevelOne":869},"company",{"type":650,"columns":871},[872],{"items":873},[874,879,885,887,892,897,902,907,912,917],{"text":875,"config":876},"À propos",{"href":877,"dataGaName":878,"dataGaLocation":599},"/fr-fr/company/","about",{"text":880,"config":881,"footerGa":884},"Carrières",{"href":882,"dataGaName":883,"dataGaLocation":599},"/jobs/","jobs",{"dataGaName":883},{"text":846,"config":886},{"href":848,"dataGaName":849,"dataGaLocation":599},{"text":888,"config":889},"Leadership",{"href":890,"dataGaName":891,"dataGaLocation":599},"/company/team/e-group/","leadership",{"text":893,"config":894},"Manuel",{"href":895,"dataGaName":896,"dataGaLocation":599},"https://handbook.gitlab.com/","handbook",{"text":898,"config":899},"Relations avec les investisseurs",{"href":900,"dataGaName":901,"dataGaLocation":599},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":903,"config":904},"Trust Center",{"href":905,"dataGaName":906,"dataGaLocation":599},"/fr-fr/security/","trust center",{"text":908,"config":909},"Centre pour la transparence de l'IA",{"href":910,"dataGaName":911,"dataGaLocation":599},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":913,"config":914},"Newsletter",{"href":915,"dataGaName":916,"dataGaLocation":599},"/company/contact/#contact-forms","newsletter",{"text":918,"config":919},"Presse",{"href":920,"dataGaName":921,"dataGaLocation":599},"/press/","press",{"text":923,"config":924,"menu":925},"Nous contacter",{"dataNavLevelOne":869},{"type":650,"columns":926},[927],{"items":928},[929,934,939],{"text":930,"config":931},"Contacter l'équipe commerciale",{"href":932,"dataGaName":933,"dataGaLocation":599},"/fr-fr/sales/","talk to sales",{"text":935,"config":936},"Assistance GitLab",{"href":937,"dataGaName":938,"dataGaLocation":599},"https://support.gitlab.com/hc/en-us","support portal",{"text":940,"config":941},"Portail clients GitLab",{"href":942,"dataGaName":943,"dataGaLocation":599},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":945,"login":946,"suggestions":953},"Fermer",{"text":947,"link":948},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":949,"config":950},"GitLab.com",{"href":613,"dataGaName":951,"dataGaLocation":952},"search login","search",{"text":954,"default":955},"Suggestions",[956,959,964,966,971,976],{"text":630,"config":957},{"href":635,"dataGaName":958,"dataGaLocation":952},"GitLab Duo Agent Platform",{"text":960,"config":961},"Suggestions de code (IA)",{"href":962,"dataGaName":963,"dataGaLocation":952},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":666,"config":965},{"href":668,"dataGaName":666,"dataGaLocation":952},{"text":967,"config":968},"GitLab sur AWS",{"href":969,"dataGaName":970,"dataGaLocation":952},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":972,"config":973},"GitLab sur Google Cloud",{"href":974,"dataGaName":975,"dataGaLocation":952},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":977,"config":978},"Pourquoi utiliser GitLab ?",{"href":643,"dataGaName":979,"dataGaLocation":952},"Why GitLab?",{"freeTrial":981,"mobileIcon":986,"desktopIcon":991,"secondaryButton":994},{"text":982,"config":983},"Commencer votre essai gratuit",{"href":984,"dataGaName":604,"dataGaLocation":985},"https://gitlab.com/-/trials/new/","nav",{"altText":987,"config":988},"Icône GitLab",{"src":989,"dataGaName":990,"dataGaLocation":985},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":987,"config":992},{"src":993,"dataGaName":990,"dataGaLocation":985},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":995,"config":996},"Commencer",{"href":997,"dataGaName":998,"dataGaLocation":985},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1000,"mobileIcon":1004,"desktopIcon":1006},{"text":1001,"config":1002},"En savoir plus sur GitLab Duo",{"href":635,"dataGaName":1003,"dataGaLocation":985},"gitlab duo",{"altText":987,"config":1005},{"src":989,"dataGaName":990,"dataGaLocation":985},{"altText":987,"config":1007},{"src":993,"dataGaName":990,"dataGaLocation":985},{"button":1009,"mobileIcon":1014,"desktopIcon":1016},{"text":1010,"config":1011},"/switch",{"href":1012,"dataGaName":1013,"dataGaLocation":985},"#contact","switch",{"altText":987,"config":1015},{"src":989,"dataGaName":990,"dataGaLocation":985},{"altText":987,"config":1017},{"src":1018,"dataGaName":990,"dataGaLocation":985},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1020,"mobileIcon":1025,"desktopIcon":1027},{"text":1021,"config":1022},"Retour aux tarifs",{"href":750,"dataGaName":1023,"dataGaLocation":985,"icon":1024},"back to pricing","GoBack",{"altText":987,"config":1026},{"src":989,"dataGaName":990,"dataGaLocation":985},{"altText":987,"config":1028},{"src":993,"dataGaName":990,"dataGaLocation":985},{"title":1030,"button":1031,"config":1035},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":641,"config":1032},{"href":1033,"dataGaName":1034,"dataGaLocation":599},"/fr-fr/gitlab-orbit/","orbit",{"layout":1036,"disabled":582},"release",{"data":1038},{"text":1039,"source":1040,"edit":1046,"contribute":1051,"config":1055,"items":1060,"minimal":1268},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1041,"config":1042},"Afficher le code source de la page",{"href":1043,"dataGaName":1044,"dataGaLocation":1045},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1047,"config":1048},"Modifier cette page",{"href":1049,"dataGaName":1050,"dataGaLocation":1045},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":831,"config":1052},{"href":1053,"dataGaName":1054,"dataGaLocation":1045},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1056,"facebook":1057,"youtube":1058,"linkedin":1059},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1061,1107,1160,1203,1235],{"title":748,"links":1062,"subMenu":1077},[1063,1067,1072],{"text":1064,"config":1065},"Voir les forfaits",{"href":750,"dataGaName":1066,"dataGaLocation":1045},"view plans",{"text":1068,"config":1069},"GitLab Premium",{"href":1070,"dataGaName":1071,"dataGaLocation":1045},"/fr-fr/pricing/premium/","why premium",{"text":1073,"config":1074},"GitLab Ultimate",{"href":1075,"dataGaName":1076,"dataGaLocation":1045},"/fr-fr/pricing/ultimate/","why ultimate",[1078],{"title":923,"links":1079},[1080,1082,1084,1087,1092,1097,1102],{"text":930,"config":1081},{"href":932,"dataGaName":609,"dataGaLocation":1045},{"text":935,"config":1083},{"href":937,"dataGaName":938,"dataGaLocation":1045},{"text":1085,"config":1086},"Portail clients",{"href":942,"dataGaName":943,"dataGaLocation":1045},{"text":1088,"config":1089},"Statut",{"href":1090,"dataGaName":1091,"dataGaLocation":1045},"https://status.gitlab.com/","status",{"text":1093,"config":1094},"Conditions d'utilisation",{"href":1095,"dataGaName":1096,"dataGaLocation":1045},"/terms/","terms of use",{"text":1098,"config":1099},"Politique de confidentialité",{"href":1100,"dataGaName":1101,"dataGaLocation":1045},"/fr-fr/privacy/","privacy statement",{"text":1103,"config":1104},"Gestion des cookies",{"dataGaName":1105,"dataGaLocation":1045,"id":1106,"isOneTrustButton":283},"cookie preferences","ot-sdk-btn",{"title":646,"links":1108,"subMenu":1117},[1109,1113],{"text":1110,"config":1111},"Plateforme DevSecOps",{"href":628,"dataGaName":1112,"dataGaLocation":1045},"devsecops platform",{"text":1114,"config":1115},"Développement assisté par l'IA",{"href":635,"dataGaName":1116,"dataGaLocation":1045},"ai-assisted development",[1118],{"title":1119,"links":1120},"Thèmes",[1121,1125,1130,1135,1140,1145,1150,1155],{"text":666,"config":1122},{"href":1123,"dataGaName":1124,"dataGaLocation":1045},"/fr-fr/topics/ci-cd/","cicd",{"text":1126,"config":1127},"GitOps",{"href":1128,"dataGaName":1129,"dataGaLocation":1045},"/fr-fr/topics/gitops/","gitops",{"text":1131,"config":1132},"DevOps",{"href":1133,"dataGaName":1134,"dataGaLocation":1045},"/fr-fr/topics/devops/","devops",{"text":1136,"config":1137},"Contrôle de version",{"href":1138,"dataGaName":1139,"dataGaLocation":1045},"/fr-fr/topics/version-control/","version control",{"text":1141,"config":1142},"DevSecOps",{"href":1143,"dataGaName":1144,"dataGaLocation":1045},"/fr-fr/topics/devsecops/","devsecops",{"text":1146,"config":1147},"Cloud-native",{"href":1148,"dataGaName":1149,"dataGaLocation":1045},"/fr-fr/topics/cloud-native/","cloud native",{"text":1151,"config":1152},"IA pour la programmation",{"href":1153,"dataGaName":1154,"dataGaLocation":1045},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1156,"config":1157},"IA agentique",{"href":1158,"dataGaName":1159,"dataGaLocation":1045},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1161,"links":1162},"Solutions",[1163,1166,1168,1173,1176,1179,1182,1185,1187,1190,1193,1198],{"text":691,"config":1164},{"href":686,"dataGaName":1165,"dataGaLocation":1045},"Application Security Testing",{"text":678,"config":1167},{"href":662,"dataGaName":663,"dataGaLocation":1045},{"text":1169,"config":1170},"Développement Agile",{"href":1171,"dataGaName":1172,"dataGaLocation":1045},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":673,"config":1174},{"href":675,"dataGaName":1175,"dataGaLocation":1045},"source code management",{"text":666,"config":1177},{"href":668,"dataGaName":1178,"dataGaLocation":1045},"continuous integration & delivery",{"text":717,"config":1180},{"href":719,"dataGaName":1181,"dataGaLocation":1045},"value stream management",{"text":1126,"config":1183},{"href":1184,"dataGaName":1129,"dataGaLocation":1045},"/fr-fr/solutions/gitops/",{"text":730,"config":1186},{"href":733,"dataGaName":734,"dataGaLocation":1045},{"text":1188,"config":1189},"PME",{"href":739,"dataGaName":740,"dataGaLocation":1045},{"text":1191,"config":1192},"Secteur public",{"href":745,"dataGaName":746,"dataGaLocation":1045},{"text":1194,"config":1195},"Éducation",{"href":1196,"dataGaName":1197,"dataGaLocation":1045},"/fr-fr/solutions/education/","education",{"text":1199,"config":1200},"Services financiers",{"href":1201,"dataGaName":1202,"dataGaLocation":1045},"/fr-fr/solutions/finance/","financial services",{"title":753,"links":1204},[1205,1207,1209,1211,1214,1216,1219,1221,1223,1225,1227,1229,1231,1233],{"text":766,"config":1206},{"href":768,"dataGaName":769,"dataGaLocation":1045},{"text":771,"config":1208},{"href":773,"dataGaName":774,"dataGaLocation":1045},{"text":776,"config":1210},{"href":778,"dataGaName":779,"dataGaLocation":1045},{"text":781,"config":1212},{"href":783,"dataGaName":1213,"dataGaLocation":1045},"docs",{"text":804,"config":1215},{"href":806,"dataGaName":807,"dataGaLocation":1045},{"text":1217,"config":1218},"Nouveautés",{"href":864,"dataGaName":865,"dataGaLocation":1045},{"text":799,"config":1220},{"href":801,"dataGaName":802,"dataGaLocation":1045},{"text":818,"config":1222},{"href":820,"dataGaName":821,"dataGaLocation":1045},{"text":826,"config":1224},{"href":828,"dataGaName":829,"dataGaLocation":1045},{"text":831,"config":1226},{"href":833,"dataGaName":834,"dataGaLocation":1045},{"text":836,"config":1228},{"href":838,"dataGaName":839,"dataGaLocation":1045},{"text":841,"config":1230},{"href":843,"dataGaName":844,"dataGaLocation":1045},{"text":846,"config":1232},{"href":848,"dataGaName":849,"dataGaLocation":1045},{"text":851,"config":1234},{"href":853,"dataGaName":854,"dataGaLocation":1045},{"title":867,"links":1236},[1237,1239,1241,1243,1245,1247,1252,1257,1259,1261,1263],{"text":875,"config":1238},{"href":877,"dataGaName":869,"dataGaLocation":1045},{"text":880,"config":1240},{"href":882,"dataGaName":883,"dataGaLocation":1045},{"text":888,"config":1242},{"href":890,"dataGaName":891,"dataGaLocation":1045},{"text":893,"config":1244},{"href":895,"dataGaName":896,"dataGaLocation":1045},{"text":898,"config":1246},{"href":900,"dataGaName":901,"dataGaLocation":1045},{"text":1248,"config":1249},"Développement durable",{"href":1250,"dataGaName":1251,"dataGaLocation":1045},"/sustainability/","Sustainability",{"text":1253,"config":1254},"Diversité, inclusion et appartenance (DIB)",{"href":1255,"dataGaName":1256,"dataGaLocation":1045},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":903,"config":1258},{"href":905,"dataGaName":906,"dataGaLocation":1045},{"text":913,"config":1260},{"href":915,"dataGaName":916,"dataGaLocation":1045},{"text":918,"config":1262},{"href":920,"dataGaName":921,"dataGaLocation":1045},{"text":1264,"config":1265},"Déclaration de transparence sur l'esclavage moderne",{"href":1266,"dataGaName":1267,"dataGaLocation":1045},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1269},[1270,1272,1274],{"text":1093,"config":1271},{"href":1095,"dataGaName":1096,"dataGaLocation":1045},{"text":1103,"config":1273},{"dataGaName":1105,"dataGaLocation":1045,"id":1106,"isOneTrustButton":283},{"text":1098,"config":1275},{"href":1100,"dataGaName":1101,"dataGaLocation":1045},[1277,1291],{"id":1278,"title":7,"body":575,"config":1279,"content":1281,"description":575,"extension":1285,"meta":1286,"navigation":283,"path":1287,"seo":1288,"stem":1289,"__hash__":1290},"blogAuthors/en-us/blog/authors/karthik-nayak.yml",{"template":1280},"BlogAuthor",{"name":7,"config":1282},{"headshot":1283,"ctfId":1284},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659809/Blog/Author%20Headshots/Screenshot_2025-06-04_at_8.49.51%C3%A2__AM.png","3Q6ZKvaiCRw7tFZdDGlecg","yml",{},"/en-us/blog/authors/karthik-nayak",{},"en-us/blog/authors/karthik-nayak","pDQbfmQk6aaJ6PA9L68AzPlzIUBcosTh7WBoq680gpk",{"id":1292,"title":8,"body":575,"config":1293,"content":1294,"description":575,"extension":1285,"meta":1298,"navigation":283,"path":1299,"seo":1300,"stem":1301,"__hash__":1302},"blogAuthors/en-us/blog/authors/manuel-kraft.yml",{"template":1280},{"name":8,"config":1295},{"headshot":1296,"ctfId":1297},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659815/Blog/Author%20Headshots/manuel_kraft.png","5q1NADtEqxyoV1F1s6JKDz",{},"/en-us/blog/authors/manuel-kraft",{},"en-us/blog/authors/manuel-kraft","TqWe6Rx9TnEopbWMshRuht-6QCOpGPAMjs1vtlA_93Y",[1304,1312,1320],{"title":1305,"description":1306,"heroImage":1307,"category":571,"date":1308,"authors":1309,"slug":1311,"externalUrl":575},"Green DevOps : l'importance de mesurer le bilan carbone de vos pipelines CI/CD","Les pipelines CI/CD ont un bilan carbone caché. Découvrez pourquoi il est crucial de le mesurer et comment vous lancer avec Eco CI et Carmen dans GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-22",[1310],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1313,"description":1314,"heroImage":1315,"category":571,"date":1316,"authors":1317,"slug":1319,"externalUrl":575},"Comment mettre en place l'observabilité CI/CD à grande échelle","Ce guide pratique consacré à l'analyse des pipelines GitLab aide les utilisateurs de GitLab Self-Managed à obtenir des indicateurs opérationnels exploitables grâce à Prometheus et Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-05-18",[1318],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"title":1321,"description":1322,"heroImage":1323,"category":571,"date":1324,"authors":1325,"slug":1327,"externalUrl":575},"5 modèles de pipeline GitLab pour résoudre vos enjeux d'ingénierie","Découvrez comment faire évoluer votre approche CI/CD avec des modèles composables pour les monorepos, les microservices, les environnements et la gouvernance.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772721753/frfsm1qfscwrmsyzj1qn.png","2026-05-06",[1326],"Omid Khan","5-ways-gitlab-pipeline-logic-solves-real-engineering-problems",{"promotions":1329},[1330,1344,1356,1368],{"id":1331,"categories":1332,"header":1334,"text":1335,"button":1336,"image":1341},"ai-modernization",[1333],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1337,"config":1338},"Obtenez votre score de maturité IA",{"href":1339,"dataGaName":1340,"dataGaLocation":807},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1342},{"src":1343},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1345,"categories":1346,"header":1348,"text":1335,"button":1349,"image":1353},"devops-modernization",[1347,1144],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1350,"config":1351},"Obtenez votre score de maturité DevOps",{"href":1352,"dataGaName":1340,"dataGaLocation":807},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1354},{"src":1355},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1357,"categories":1358,"header":1360,"text":1335,"button":1361,"image":1365},"security-modernization",[1359],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1362,"config":1363},"Obtenez votre score de maturité en matière de sécurité",{"href":1364,"dataGaName":1340,"dataGaLocation":807},"/fr-fr/assessments/security-modernization-assessment/",{"config":1366},{"src":1367},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1369,"paths":1370,"header":1373,"text":1374,"button":1375,"image":1380},"github-azure-migration",[1371,1372],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1376,"config":1377},"Découvrez les différences entre GitLab et GitHub",{"href":1378,"dataGaName":1379,"dataGaLocation":807},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1381},{"src":1355},{"header":1383,"blurb":1384,"button":1385,"secondaryButton":1389},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":601,"config":1386},{"href":1387,"dataGaName":604,"dataGaLocation":1388},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":930,"config":1390},{"href":932,"dataGaName":609,"dataGaLocation":1388},1786803785944]