[{"data":1,"prerenderedAt":763},["ShallowReactive",2],{"/fr-fr/blog/categories/engineering":3,"navigation-fr-fr":21,"banner-fr-fr":427,"footer-fr-fr":437,"engineering-category-page-total-items-fr-fr":647,"engineering-category-page-featured-fr-fr":648,"engineering-category-page-1-fr-fr":677},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":11,"description":6,"extension":13,"meta":14,"navigation":15,"path":16,"seo":17,"slug":6,"stem":19,"testContent":6,"type":6,"__hash__":20},"blogCategories/fr-fr/blog/categories/engineering.yml","Engineering",null,{"template":8,"slug":9,"hide":10},"BlogCategory","engineering",false,{"name":12},"Ingénierie","yml",{},true,"/fr-fr/blog/categories/engineering",{"title":12,"description":18},"Browse articles related to Ingénierie on the GitLab Blog","fr-fr/blog/categories/engineering","QgLZNRi6l7UgbB5sPrIeGPDanWZXCR-1E7llL3f2HA4",{"data":22},{"logo":23,"freeTrial":28,"sales":33,"login":38,"items":43,"search":353,"minimal":388,"duo":407,"pricingDeployment":417},{"config":24},{"href":25,"dataGaName":26,"dataGaLocation":27},"/fr-fr/","gitlab logo","header",{"text":29,"config":30},"Commencer un essai gratuit",{"href":31,"dataGaName":32,"dataGaLocation":27},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":34,"config":35},"Contacter l'équipe commerciale",{"href":36,"dataGaName":37,"dataGaLocation":27},"/fr-fr/sales/","sales",{"text":39,"config":40},"Connexion",{"href":41,"dataGaName":42,"dataGaLocation":27},"https://gitlab.com/users/sign_in/","sign in",[44,71,168,173,274,334],{"text":45,"config":46,"cards":48},"Plateforme",{"dataNavLevelOne":47},"platform",[49,55,63],{"title":45,"description":50,"link":51},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":52,"config":53},"Découvrir notre plateforme",{"href":54,"dataGaName":47,"dataGaLocation":27},"/fr-fr/platform/",{"title":56,"description":57,"link":58},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":59,"config":60},"Découvrir GitLab Duo",{"href":61,"dataGaName":62,"dataGaLocation":27},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":64,"description":65,"link":66},"Choisir GitLab","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":67,"config":68},"En savoir plus",{"href":69,"dataGaName":70,"dataGaLocation":27},"/fr-fr/why-gitlab/","why gitlab",{"text":72,"left":15,"config":73,"link":75,"lists":79,"footer":150},"Produit",{"dataNavLevelOne":74},"solutions",{"text":76,"config":77},"Voir toutes les solutions",{"href":78,"dataGaName":74,"dataGaLocation":27},"/fr-fr/solutions/",[80,105,128],{"title":81,"description":82,"link":83,"items":88},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":84},{"icon":85,"href":86,"dataGaName":87,"dataGaLocation":27},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[89,93,96,101],{"text":90,"config":91},"CI/CD",{"href":92,"dataGaLocation":27,"dataGaName":90},"/fr-fr/solutions/continuous-integration/",{"text":56,"config":94},{"href":61,"dataGaLocation":27,"dataGaName":95},"gitlab duo agent platform - product menu",{"text":97,"config":98},"Gestion du code source",{"href":99,"dataGaLocation":27,"dataGaName":100},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":102,"config":103},"Livraison de logiciels automatisée",{"href":86,"dataGaLocation":27,"dataGaName":104},"Automated software delivery",{"title":106,"description":107,"link":108,"items":113},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":109},{"href":110,"dataGaName":111,"dataGaLocation":27,"icon":112},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[114,118,123],{"text":115,"config":116},"Tests de sécurité des applications",{"href":110,"dataGaName":117,"dataGaLocation":27},"Application security testing",{"text":119,"config":120},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":121,"dataGaLocation":27,"dataGaName":122},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":124,"config":125},"Conformité logicielle",{"href":126,"dataGaName":127,"dataGaLocation":27},"/fr-fr/solutions/software-compliance/","Software Compliance",{"title":129,"link":130,"items":135},"Mesures",{"config":131},{"icon":132,"href":133,"dataGaName":134,"dataGaLocation":27},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[136,140,145],{"text":137,"config":138},"Visibilité et mesures",{"href":133,"dataGaLocation":27,"dataGaName":139},"Visibility and Measurement",{"text":141,"config":142},"Gestion de la chaîne de valeur",{"href":143,"dataGaLocation":27,"dataGaName":144},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":146,"config":147},"Données d'analyse et informations clés",{"href":148,"dataGaLocation":27,"dataGaName":149},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":151,"items":152},"GitLab pour",[153,158,163],{"text":154,"config":155},"Entreprises",{"href":156,"dataGaLocation":27,"dataGaName":157},"/fr-fr/enterprise/","enterprise",{"text":159,"config":160},"PME",{"href":161,"dataGaLocation":27,"dataGaName":162},"/fr-fr/small-business/","small business",{"text":164,"config":165},"Secteur public",{"href":166,"dataGaLocation":27,"dataGaName":167},"/fr-fr/solutions/public-sector/","public sector",{"text":169,"config":170},"Tarifs",{"href":171,"dataGaName":172,"dataGaLocation":27,"dataNavLevelOne":172},"/fr-fr/pricing/","pricing",{"text":174,"config":175,"link":177,"lists":181,"feature":261},"Ressources",{"dataNavLevelOne":176},"resources",{"text":178,"config":179},"Afficher toutes les ressources",{"href":180,"dataGaName":176,"dataGaLocation":27},"/fr-fr/resources/",[182,215,233],{"title":183,"items":184},"Premiers pas",[185,190,195,200,205,210],{"text":186,"config":187},"Installation",{"href":188,"dataGaName":189,"dataGaLocation":27},"/fr-fr/install/","install",{"text":191,"config":192},"Guides de démarrage",{"href":193,"dataGaName":194,"dataGaLocation":27},"/fr-fr/get-started/","quick setup checklists",{"text":196,"config":197},"Apprentissage",{"href":198,"dataGaLocation":27,"dataGaName":199},"https://university.gitlab.com/","learn",{"text":201,"config":202},"Documentation sur le produit",{"href":203,"dataGaName":204,"dataGaLocation":27},"https://docs.gitlab.com/","product documentation",{"text":206,"config":207},"Vidéos sur les bonnes pratiques",{"href":208,"dataGaName":209,"dataGaLocation":27},"/fr-fr/getting-started-videos/","best practice videos",{"text":211,"config":212},"Intégrations",{"href":213,"dataGaName":214,"dataGaLocation":27},"/fr-fr/integrations/","integrations",{"title":216,"items":217},"Découvrir",[218,223,228],{"text":219,"config":220},"Témoignages clients",{"href":221,"dataGaName":222,"dataGaLocation":27},"/fr-fr/customers/","customer success stories",{"text":224,"config":225},"Blog",{"href":226,"dataGaName":227,"dataGaLocation":27},"/fr-fr/blog/","blog",{"text":229,"config":230},"Travail à distance",{"href":231,"dataGaName":232,"dataGaLocation":27},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":234,"items":235},"Connecter",[236,241,246,251,256],{"text":237,"config":238},"Services GitLab",{"href":239,"dataGaName":240,"dataGaLocation":27},"/fr-fr/services/","services",{"text":242,"config":243},"Communauté",{"href":244,"dataGaName":245,"dataGaLocation":27},"/community/","community",{"text":247,"config":248},"Forum",{"href":249,"dataGaName":250,"dataGaLocation":27},"https://forum.gitlab.com/","forum",{"text":252,"config":253},"Événements",{"href":254,"dataGaName":255,"dataGaLocation":27},"/events/","events",{"text":257,"config":258},"Partenaires",{"href":259,"dataGaName":260,"dataGaLocation":27},"/fr-fr/partners/","partners",{"backgroundColor":262,"textColor":263,"text":264,"image":265,"link":269},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":266,"config":267},"carte promo The Source",{"src":268},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":270,"config":271},"Lire les articles les plus récents",{"href":272,"dataGaName":273,"dataGaLocation":27},"/fr-fr/the-source/","the source",{"text":275,"config":276,"lists":278},"Société",{"dataNavLevelOne":277},"company",[279],{"items":280},[281,286,292,294,299,304,309,314,319,324,329],{"text":282,"config":283},"À propos",{"href":284,"dataGaName":285,"dataGaLocation":27},"/fr-fr/company/","about",{"text":287,"config":288,"footerGa":291},"Carrières",{"href":289,"dataGaName":290,"dataGaLocation":27},"/jobs/","jobs",{"dataGaName":290},{"text":252,"config":293},{"href":254,"dataGaName":255,"dataGaLocation":27},{"text":295,"config":296},"Leadership",{"href":297,"dataGaName":298,"dataGaLocation":27},"/company/team/e-group/","leadership",{"text":300,"config":301},"Équipe",{"href":302,"dataGaName":303,"dataGaLocation":27},"/company/team/","team",{"text":305,"config":306},"Manuel",{"href":307,"dataGaName":308,"dataGaLocation":27},"https://handbook.gitlab.com/","handbook",{"text":310,"config":311},"Relations avec les investisseurs",{"href":312,"dataGaName":313,"dataGaLocation":27},"https://ir.gitlab.com/","investor relations",{"text":315,"config":316},"Centre de confiance",{"href":317,"dataGaName":318,"dataGaLocation":27},"/fr-fr/security/","trust center",{"text":320,"config":321},"Centre pour la transparence de l'IA",{"href":322,"dataGaName":323,"dataGaLocation":27},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":325,"config":326},"Newsletter",{"href":327,"dataGaName":328,"dataGaLocation":27},"/company/contact/#contact-forms","newsletter",{"text":330,"config":331},"Presse",{"href":332,"dataGaName":333,"dataGaLocation":27},"/press/","press",{"text":335,"config":336,"lists":337},"Nous contacter",{"dataNavLevelOne":277},[338],{"items":339},[340,343,348],{"text":34,"config":341},{"href":36,"dataGaName":342,"dataGaLocation":27},"talk to sales",{"text":344,"config":345},"Portail d’assistance",{"href":346,"dataGaName":347,"dataGaLocation":27},"https://support.gitlab.com","support portal",{"text":349,"config":350},"Portail clients GitLab",{"href":351,"dataGaName":352,"dataGaLocation":27},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":354,"login":355,"suggestions":362},"Fermer",{"text":356,"link":357},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":358,"config":359},"gitlab.com",{"href":41,"dataGaName":360,"dataGaLocation":361},"search login","search",{"text":363,"default":364},"Suggestions",[365,367,372,374,379,384],{"text":56,"config":366},{"href":61,"dataGaName":56,"dataGaLocation":361},{"text":368,"config":369},"Suggestions de code (IA)",{"href":370,"dataGaName":371,"dataGaLocation":361},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":90,"config":373},{"href":92,"dataGaName":90,"dataGaLocation":361},{"text":375,"config":376},"GitLab sur AWS",{"href":377,"dataGaName":378,"dataGaLocation":361},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":380,"config":381},"GitLab sur Google Cloud ",{"href":382,"dataGaName":383,"dataGaLocation":361},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":385,"config":386},"Pourquoi utiliser GitLab ?",{"href":69,"dataGaName":387,"dataGaLocation":361},"Why GitLab?",{"freeTrial":389,"mobileIcon":394,"desktopIcon":399,"secondaryButton":402},{"text":390,"config":391},"Commencer votre essai gratuit",{"href":392,"dataGaName":32,"dataGaLocation":393},"https://gitlab.com/-/trials/new/","nav",{"altText":395,"config":396},"Icône GitLab",{"src":397,"dataGaName":398,"dataGaLocation":393},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":395,"config":400},{"src":401,"dataGaName":398,"dataGaLocation":393},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":403,"config":404},"Commencer",{"href":405,"dataGaName":406,"dataGaLocation":393},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/compare/gitlab-vs-github/","get started",{"freeTrial":408,"mobileIcon":413,"desktopIcon":415},{"text":409,"config":410},"En savoir plus sur GitLab Duo",{"href":411,"dataGaName":412,"dataGaLocation":393},"/fr-fr/gitlab-duo/","gitlab duo",{"altText":395,"config":414},{"src":397,"dataGaName":398,"dataGaLocation":393},{"altText":395,"config":416},{"src":401,"dataGaName":398,"dataGaLocation":393},{"freeTrial":418,"mobileIcon":423,"desktopIcon":425},{"text":419,"config":420},"Retour aux tarifs",{"href":171,"dataGaName":421,"dataGaLocation":393,"icon":422},"back to pricing","GoBack",{"altText":395,"config":424},{"src":397,"dataGaName":398,"dataGaLocation":393},{"altText":395,"config":426},{"src":401,"dataGaName":398,"dataGaLocation":393},{"title":428,"button":429,"config":434},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":430,"config":431},"Regarder GitLab Transcend maintenant",{"href":432,"dataGaName":433,"dataGaLocation":27},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":435,"icon":436},"release","AiStar",{"data":438},{"text":439,"source":440,"edit":446,"contribute":451,"config":456,"items":461,"minimal":638},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":441,"config":442},"Afficher le code source de la page",{"href":443,"dataGaName":444,"dataGaLocation":445},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":447,"config":448},"Modifier cette page",{"href":449,"dataGaName":450,"dataGaLocation":445},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":452,"config":453},"Veuillez contribuer",{"href":454,"dataGaName":455,"dataGaLocation":445},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":457,"facebook":458,"youtube":459,"linkedin":460},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[462,485,539,571,606],{"title":45,"links":463,"subMenu":468},[464],{"text":465,"config":466},"Plateforme DevSecOps",{"href":54,"dataGaName":467,"dataGaLocation":445},"devsecops platform",[469],{"title":169,"links":470},[471,475,480],{"text":472,"config":473},"Voir les forfaits",{"href":171,"dataGaName":474,"dataGaLocation":445},"view plans",{"text":476,"config":477},"Pourquoi choisir GitLab Premium ?",{"href":478,"dataGaName":479,"dataGaLocation":445},"/fr-fr/pricing/premium/","why premium",{"text":481,"config":482},"Pourquoi choisir GitLab Ultimate ?",{"href":483,"dataGaName":484,"dataGaLocation":445},"/fr-fr/pricing/ultimate/","why ultimate",{"title":486,"links":487},"Solutions",[488,493,496,498,503,508,512,515,518,523,525,527,529,534],{"text":489,"config":490},"Transformation digitale",{"href":491,"dataGaName":492,"dataGaLocation":445},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":494,"config":495},"Sécurité et conformité",{"href":110,"dataGaName":117,"dataGaLocation":445},{"text":102,"config":497},{"href":86,"dataGaName":87,"dataGaLocation":445},{"text":499,"config":500},"Développement agile",{"href":501,"dataGaName":502,"dataGaLocation":445},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":504,"config":505},"Transformation cloud",{"href":506,"dataGaName":507,"dataGaLocation":445},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":509,"config":510},"SCM",{"href":99,"dataGaName":511,"dataGaLocation":445},"source code management",{"text":90,"config":513},{"href":92,"dataGaName":514,"dataGaLocation":445},"continuous integration & delivery",{"text":141,"config":516},{"href":143,"dataGaName":517,"dataGaLocation":445},"value stream management",{"text":519,"config":520},"GitOps",{"href":521,"dataGaName":522,"dataGaLocation":445},"/fr-fr/solutions/gitops/","gitops",{"text":154,"config":524},{"href":156,"dataGaName":157,"dataGaLocation":445},{"text":159,"config":526},{"href":161,"dataGaName":162,"dataGaLocation":445},{"text":164,"config":528},{"href":166,"dataGaName":167,"dataGaLocation":445},{"text":530,"config":531},"Formation",{"href":532,"dataGaName":533,"dataGaLocation":445},"/fr-fr/solutions/education/","education",{"text":535,"config":536},"Services financiers",{"href":537,"dataGaName":538,"dataGaLocation":445},"/fr-fr/solutions/finance/","financial services",{"title":174,"links":540},[541,543,546,548,551,553,556,559,561,563,565,567,569],{"text":186,"config":542},{"href":188,"dataGaName":189,"dataGaLocation":445},{"text":544,"config":545},"Guides de démarrage rapide",{"href":193,"dataGaName":194,"dataGaLocation":445},{"text":196,"config":547},{"href":198,"dataGaName":199,"dataGaLocation":445},{"text":201,"config":549},{"href":203,"dataGaName":550,"dataGaLocation":445},"docs",{"text":224,"config":552},{"href":226,"dataGaName":227},{"text":554,"config":555},"Histoires de réussite client",{"href":221,"dataGaLocation":445},{"text":557,"config":558},"Histoires de succès client",{"href":221,"dataGaName":222,"dataGaLocation":445},{"text":229,"config":560},{"href":231,"dataGaName":232,"dataGaLocation":445},{"text":237,"config":562},{"href":239,"dataGaName":240,"dataGaLocation":445},{"text":242,"config":564},{"href":244,"dataGaName":245,"dataGaLocation":445},{"text":247,"config":566},{"href":249,"dataGaName":250,"dataGaLocation":445},{"text":252,"config":568},{"href":254,"dataGaName":255,"dataGaLocation":445},{"text":257,"config":570},{"href":259,"dataGaName":260,"dataGaLocation":445},{"title":275,"links":572},[573,575,578,580,582,584,586,590,595,597,599,601],{"text":282,"config":574},{"href":284,"dataGaName":277,"dataGaLocation":445},{"text":576,"config":577},"Emplois",{"href":289,"dataGaName":290,"dataGaLocation":445},{"text":295,"config":579},{"href":297,"dataGaName":298,"dataGaLocation":445},{"text":300,"config":581},{"href":302,"dataGaName":303,"dataGaLocation":445},{"text":305,"config":583},{"href":307,"dataGaName":308,"dataGaLocation":445},{"text":310,"config":585},{"href":312,"dataGaName":313,"dataGaLocation":445},{"text":587,"config":588},"Sustainability",{"href":589,"dataGaName":587,"dataGaLocation":445},"/sustainability/",{"text":591,"config":592},"Diversité, inclusion et appartenance (DIB)",{"href":593,"dataGaName":594,"dataGaLocation":445},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":315,"config":596},{"href":317,"dataGaName":318,"dataGaLocation":445},{"text":325,"config":598},{"href":327,"dataGaName":328,"dataGaLocation":445},{"text":330,"config":600},{"href":332,"dataGaName":333,"dataGaLocation":445},{"text":602,"config":603},"Déclaration de transparence sur l'esclavage moderne",{"href":604,"dataGaName":605,"dataGaLocation":445},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":335,"links":607},[608,611,616,618,623,628,633],{"text":609,"config":610},"Échanger avec un expert",{"href":36,"dataGaName":37,"dataGaLocation":445},{"text":612,"config":613},"Aide",{"href":614,"dataGaName":615,"dataGaLocation":445},"/support/","get help",{"text":349,"config":617},{"href":351,"dataGaName":352,"dataGaLocation":445},{"text":619,"config":620},"Statut",{"href":621,"dataGaName":622,"dataGaLocation":445},"https://status.gitlab.com/","status",{"text":624,"config":625},"Conditions d'utilisation",{"href":626,"dataGaName":627},"/terms/","terms of use",{"text":629,"config":630},"Déclaration de confidentialité",{"href":631,"dataGaName":632,"dataGaLocation":445},"/fr-fr/privacy/","privacy statement",{"text":634,"config":635},"Préférences en matière de cookies",{"dataGaName":636,"dataGaLocation":445,"id":637,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"items":639},[640,642,645],{"text":624,"config":641},{"href":626,"dataGaName":627,"dataGaLocation":445},{"text":643,"config":644},"Politique de confidentialité",{"href":631,"dataGaName":632,"dataGaLocation":445},{"text":634,"config":646},{"dataGaName":636,"dataGaLocation":445,"id":637,"isOneTrustButton":15},23,{"id":649,"title":650,"authorSlugs":651,"body":6,"categorySlug":9,"config":653,"content":656,"description":6,"extension":13,"isFeatured":10,"meta":667,"navigation":15,"path":668,"publishedDate":660,"seo":669,"stem":673,"tagSlugs":674,"__hash__":676},"blogPosts/fr-fr/blog/continuously-deploying-the-largest-gitlab-instance.yml","Continuously Deploying The Largest Gitlab Instance",[652],"john-skarbek",{"featured":10,"template":654,"slug":655},"BlogPost","continuously-deploying-the-largest-gitlab-instance",{"tags":657,"category":9,"date":660,"heroImage":661,"authors":662,"body":664,"description":665,"title":666},[658,659],"product","inside GitLab","2025-12-16","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1764108112/tyntnsy3xotlmehtnfkb.png",[663],"John Skarbek","Chaque jour, GitLab déploie des modifications de code sur GitLab.com, la plus grande instance GitLab au monde, et ce jusqu'à 12 fois sans aucun temps d'arrêt. Nous utilisons la plateforme [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/ \"CI/CD\") de GitLab elle-même afin de gérer ces déploiements qui impactent des millions d'équipes de développement à travers le monde. Cette fréquence de déploiement constitue notre principal critère de qualité et notre test de charge. Résultat : nos clients profitent des nouvelles fonctionnalités quelques heures seulement après leur développement au lieu d'attendre des semaines ou des mois. Lorsque des organisations s'appuient sur GitLab pour leurs workflows [DevOps](https://about.gitlab.com/fr-fr/topics/devops/ \"DevOps\"), elles utilisent une plateforme évolutive et éprouvée.    \n\nDans cet article, vous découvrirez comment nous avons construit un pipeline de déploiement automatisé en utilisant les fonctionnalités principales de GitLab CI/CD afin de gérer cette complexité de déploiement.\n\n## L'impératif métier de la vélocité de déploiement\n\nPour GitLab, la fréquence de déploiement ne représente pas simplement un indicateur technique, il s'agit au contraire d'un impératif métier. Des cycles de déploiement rapides nous permettent de répondre aux retours clients en quelques heures, de déployer immédiatement des correctifs de sécurité et de valider les nouvelles fonctionnalités en production avant de les déployer à grande échelle.\n\nPour nos clients, chaque déploiement vers GitLab.com valide les pratiques de déploiement que nous recommandons à nos utilisateurs. Lorsque vous utilisez les fonctionnalités de déploiement de GitLab, vous utilisez la même approche éprouvée qui gère quotidiennement des millions d'opérations [git](https://about.gitlab.com/fr-fr/blog/2024/10/08/what-is-git/ \"Git\"), de [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Pipeline CI/CD\") et d'interactions utilisateurs. Vous bénéficiez ainsi des avantages suivants :\n\n- Disponibilité immédiate des dernières fonctionnalités : les nouvelles fonctionnalités vous parviennent quelques heures après leur finalisation, et non dans des cycles trimestriels.\n- Fiabilité éprouvée à grande échelle : si une fonctionnalité fonctionne sur GitLab.com, il en ira de même pour votre environnement.\n- Valeur complète de GitLab : les déploiements sans interruption garantissent un accès constant à votre [plateforme DevOps](https://about.gitlab.com/fr-fr/solutions/devops-platform/ \"Plateforme DevOps\"), même pendant les mises à jour.\n- Pratiques testées en conditions réelles : notre documentation de déploiement ne relève pas de la théorie et reflète exactement la manière dont nous exploitons la plus grande instance GitLab existante.\n\n\n## Architecture du flux de code\n\n\nNotre pipeline de déploiement suit une progression structurée à travers plusieurs étapes, chacune agissant comme un point de contrôle sur le parcours allant de la proposition de code au déploiement en production.\n```mermaid\n  graph TD\n      A[Code proposé] --> B[Merge request créée]\n      B --> C[Pipeline déclenché]\n      C --> D[Build et test]\n      D --> E{Spécifications/intégration/tests QA réussis ?}\n      E -->|Non| F[Boucle de rétroaction]\n      F --> B\n      E -->|Oui| G[Merge vers la branche par défaut]\n      G -->|Périodiquement| H[Branche déployée automatiquement]\n\n      subgraph \"Pipeline de déploiement\"\n          H --> I[Création de paquet]\n          I --> K[Environnement canari]\n          K --> L[Validation QA]\n          L --> M[Environnement principal]\n\n      end\n```\n\n## Composition du pipeline de déploiement\n\nNotre approche de déploiement utilise les capacités CI/CD natives de GitLab afin d'orchestrer des déploiements complexes sur une infrastructure hybride.\nVoici comment nous procédons.\n\n\n### Build\n\n\nLe build de GitLab constitue en soi un sujet complexe, c'est pourquoi nous en aborderons les détails à un niveau général.\n\nNous construisons à la fois notre paquet Omnibus et nos images Cloud Native GitLab (CNG). Les paquets Omnibus se déploient sur notre flotte Gitaly (notre couche de stockage Git), tandis que les images CNG exécutent tous les autres composants sous forme de charges de travail conteneurisées. D'autres services dynamiques comme Postgres et Redis ont pris une telle ampleur que nous disposons d'équipes dédiées qui les gèrent séparément. Pour GitLab.com, ces systèmes ne sont pas déployés lors de nos procédures de déploiement automatique.\n\n\nNous disposons d'un pipeline planifié qui examine régulièrement `gitlab-org/gitlab` et recherche le commit le plus récent sur la branche par défaut avec un pipeline réussi (« vert »). Les pipelines verts signalent que chaque composant de GitLab a réussi sa suite de tests complète. Nous créons ensuite une **branche déployée automatiquement** à partir de ce commit.\n\n\nUne séquence d'événements est déclenchée : nous devons construire ce paquet et tous les composants qui font partie de notre monolithe. Un autre pipeline planifié sélectionne le dernier paquet construit et initie le pipeline de déploiement, ce qui ressemble à ceci :\n\n```mermaid\n  graph LR\n      A[Créer une branche] --> B[Build]\n      B --> C[Choisir le paquet construit]\n      C --> D[Démarrer le pipeline de déploiement]\n```\n\nLe build prend un certain temps et, étant donné que les déploiements peuvent varier en raison de diverses circonstances, nous choisissons le dernier build à déployer. Techniquement, nous construisons plus de versions de GitLab pour GitLab.com que nous n'en déploierons jamais. Cela nous permet de toujours disposer d'un paquet prêt à être utilisé, ce qui nous rapproche le plus possible d'un produit entièrement livré en continu pour GitLab.com.\n\n\n### Validation basée sur l'environnement et stratégie canari\n\nL'assurance qualité (QA) ne constitue pas ici une simple réflexion après coup : elle est intégrée à chaque couche, du développement au déploiement. Notre processus QA exploite des suites de tests automatisées qui incluent des tests unitaires, des tests d'intégration et des tests de bout en bout qui simulent les interactions réelles des utilisateurs avec les fonctionnalités de GitLab. Mais plus important encore pour notre pipeline de déploiement, notre processus QA fonctionne en synergie avec notre stratégie canari via une validation basée sur l'environnement .\n\n\nDans le cadre de notre approche de validation, nous exploitons les [déploiements canari](https://docs.gitlab.com/user/project/canary_deployments/) natifs de GitLab. Ces derniers permettent une validation contrôlée des modifications avec une exposition limitée au trafic avant le déploiement complet en production. Environ 5 % de l'ensemble du trafic passe par [l'étape canari](https://handbook.gitlab.com/handbook/engineering/infrastructure/environments/canary-stage/#environments-canary-stage). Cette approche augmente la complexité des migrations de base de données, mais des étapes canari réussies garantissent le déploiement d'un produit fiable de manière transparente.\n\nLes fonctionnalités de déploiement canari que vous utilisez dans GitLab ont été affinées grâce à la gestion de l'un des scénarios de déploiement les plus complexes en production. Lorsque vous implémentez des déploiements canari pour vos applications, vous utilisez des modèles éprouvés à très grande échelle.\nNotre processus de déploiement suit une stratégie de déploiement progressif :\n1. **Préproduction canari :** environnement de validation initial\n2. **Production canari :** trafic de production limité\n3. **Préproduction environnement principal :** déploiement complet de l'environnement de préproduction\n4. **Production environnement principal :** déploiement complet en production\n```mermaid\n  graph TD\n      C[Déploiement préproduction canari]\n      C --> D[QA – smoke tests étape environnement principal]\n      C --> E[QA – smoke tests étape canari]\n      D --> F\n      E --> F{Tests réussis ?}\n      F -->|Oui| G[Déploiement production canari]\n      G --> S[QA – smoke tests étape environnement principal]\n      G --> T[QA – smoke tests étape canari]\n      F -->|Non| H[Création de ticket]\n      H --> K[Correction et rétroportage]\n      K --> C\n\n      S --> M[Surveillance trafic canari]\n      T --> M[Période de stabilisation surveillance trafic canari]\n      M --> U[Vérifications de sécurité production]\n      U --> N[Préproduction environnement principal]\n      N --> V[Production environnement principal]\n```\nNotre validation QA intervient à plusieurs points de contrôle tout au long de ce processus de déploiement progressif : après chaque déploiement canari, puis de nouveau après les migrations post-déploiement. Cette approche multi-couches garantit que chaque phase de notre stratégie de déploiement dispose de son propre filet de sécurité. Vous pouvez en apprendre davantage sur [l'approche de test complète de GitLab](https://handbook.gitlab.com/handbook/engineering/testing/) dans notre handbook.\n\n## Pipeline de déploiement\n\nVoici les défis que nous relevons avec notre pipeline de déploiement.\n\n### Considérations relatives à l'architecture technique\n\nGitLab.com représente une complexité de déploiement réelle à grande échelle. En tant que plus grande instance GitLab connue, les déploiements utilisent notre chart Helm GitLab officiel et le paquet Linux officiel, soit les mêmes artefacts que nos clients utilisent. Vous pouvez en apprendre davantage sur [l'architecture de GitLab.com](https://handbook.gitlab.com/handbook/engineering/infrastructure/production/architecture/#gitlab-com-architecture) dans notre manuel. Cette approche hybride signifie que notre pipeline de déploiement doit gérer intelligemment à la fois les services conteneurisés et les services Linux traditionnels au sein du même cycle de déploiement.\n\n**Utilisation de nos fonctionnalités à grande échelle (dogfooding) :** nous déployons en utilisant les mêmes procédures que nous documentons pour les [mises à niveau sans temps d’arrêt](https://docs.gitlab.com/update/zero_downtime/). Si certaines fonctionnalités ne fonctionnent pas correctement pour nous, nous ne les recommandons pas à nos clients. Cette contrainte que nous nous imposons stimule l'amélioration continue de nos outils de déploiement.\n\nLes étapes suivantes sont exécutées pour toutes les mises à niveau d'environnement et d'étape :\n```mermaid\n  graph LR\n      a[Préparation] --> c[Migrations régulières – étape canari uniquement]\n      a --> f[Actifs – étape canari uniquement]\n      c --> d[Gitaly]\n      d --> k8s\n\n      subgraph subGraph0[\"Charges de travail MV\"]\n        d[\"Gitaly\"]\n      end\n\n      subgraph subGraph1[\"Charges de travail Kubernetes\"]\n        k8s[\"k8s\"]\n      end\n\n      subgraph fleet[\"Flotte\"]\n        subGraph0\n        subGraph1\n      end\n```\n\n**Détails des étapes :**\n\n\n- **Préparation :** cette étape valide la préparation du déploiement et effectue des vérifications de pré-déploiement.\n\n- **Migrations :** cette étape exécute les migrations régulières de base de données, uniquement pendant l'étape canari. Étant donné que les étapes canari et environnement principal partagent la même base de données, ces modifications sont déjà disponibles lorsque l'étape environnement principal se déploie, ce qui signifie qu'il n'est plus nécessaire de répéter ces tâches.\n\n- **Actifs :** nous exploitons un bucket GCS pour tous les actifs statiques. Si de nouveaux actifs sont créés, nous les importons vers notre bucket de sorte qu'ils soient immédiatement disponibles pour notre étape canari. Comme nous exploitons WebPack pour les actifs et utilisons correctement les SHA dans le nommage de nos actifs, nous pouvons être sûrs que nous n'écrasons pas un actif plus ancien. Par conséquent, les anciens actifs restent disponibles pour les déploiements plus anciens et les nouveaux actifs sont immédiatement disponibles lorsque l'étape canari commence son déploiement. Cela se produit uniquement pendant le déploiement de l'étape canari. Étant donné que l'étape canari et l'étape environnement principal partagent le même stockage d'actifs, ces modifications sont déjà disponibles lorsque l'étape environnement principal se déploie.\n\n- **Gitaly :** cette étape met à jour la couche de stockage de la machine virtuelle Gitaly via notre paquet Linux Omnibus sur chaque nœud Gitaly. Ce service est unique car nous [le regroupons avec `git`](https://gitlab.com/gitlab-org/gitaly/-/blob/master/doc/git-execution-environments.md). Par conséquent, nous devons garantir que ce service soit capable de procéder à des mises à niveau atomiques. Nous exploitons un [encapsuleur autour de Gitaly](https://gitlab.com/gitlab-org/gitaly/-/tree/master/cmd/gitaly-wrapper), qui nous permet d'installer une version plus récente de Gitaly et d'utiliser la bibliothèque [`tableflip`](https://github.com/cloudflare/tableflip) afin de faire pivoter proprement le Gitaly en cours d'exécution, et de garantir la haute disponibilité de ce service sur chacune de nos instances.\n\n- **[Kubernetes](https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/ \"Kubernetes\") :** déploie les composants GitLab conteneurisés via notre chart Helm. Notez que nous déployons sur de nombreux clusters répartis sur plusieurs zones pour des questions de redondance, ces étapes sont donc généralement divisées en leurs propres étapes afin de minimiser les dommages et de nous permettent d'arrêter un déploiement en cours si des problèmes critiques sont détectés.\n\n\n### Compatibilité multi-versions : le défi caché\n\n\nÀ la lecture de nos processus, vous remarquerez qu'il existe une période pendant laquelle notre schéma de base de données est en avance sur le code que l'étape environnement principal connaît. Cette situation se produit parce que l'étape canari a déjà déployé le nouveau code et exécute des migrations régulières de base de données, mais l'étape environnement principal exécute toujours la version précédente du code qui ne connaît pas encore ces nouvelles modifications de base de données.\n\n**Exemple concret :** imaginons que nous ajoutons un nouveau champ `merge_readiness` aux merge requests. Pendant le déploiement, certains serveurs exécutent du code qui s'attend à ce champ, tandis que d'autres ignorent son existence. Si nous gérons mal cette situation, GitLab.com sera inutilisable pour des millions d'utilisateurs. Si nous la gérons bien, personne ne remarquera quoi que ce soit.\n\nCette situation se produit également avec la plupart des autres services. Par exemple, si un client envoie plusieurs requêtes, il est possible que l'une d'entre elles aboutisse dans notre étape canari ; d'autres requêtes pourraient être dirigées vers l'étape environnement principal. Ce n'est pas très différent d'un déploiement, car il faut un temps considérable pour parcourir les quelques milliers de pods qui exécutent nos services.\n\n\nÀ quelques exceptions près, la grande majorité de nos services exécutera une version légèrement plus récente de ce composant dans l'étape canari pendant une certaine période. Dans un sens, ces scénarios sont tous des états transitoires. Mais ils peuvent souvent persister pendant plusieurs heures ou jours dans un environnement de production actif. Par conséquent, nous devons les traiter avec le même soin que les états permanents. Pendant tout déploiement, plusieurs versions de GitLab s'exécutent simultanément, et elles doivent toutes cohabiter harmonieusement.\n\n## Opérations de base de données\n\nLes migrations de base de données présentent un défi unique dans notre modèle de déploiement canari. Nous avons besoin de modifier le schéma afin de prendre en charge les nouvelles fonctionnalités et de maintenir notre capacité à effectuer un retour à la version précédente si des problèmes surviennent. Notre solution implique une séparation minutieuse des préoccupations :\n\n- **Migrations régulières :** exécutées pendant l'étape canari, conçues pour être rétrocompatibles, constituées uniquement de modifications réversibles.\n\n- **Migrations post-déploiement :** les migrations « point de non-retour » qui se produisent uniquement après plusieurs déploiements réussis.\n\n\nLes modifications de base de données sont gérées avec précision et selon des procédures de validation approfondies :\n\n```mermaid\n  graph LR\n      A[Migrations régulières] --> B[Déploiement étape canari]\n      B --> C[Déploiement étape environnement principal]\n      C --> D[Migrations post-déploiement]\n\n```\n### Migrations post-déploiement\n\n\nLes déploiements GitLab impliquent de nombreux composants. La mise à jour de GitLab n'est pas atomique, c'est pourquoi de nombreux composants doivent être rétrocompatibles.\n\n\nLes migrations post-déploiement contiennent souvent des modifications qui ne peuvent pas être facilement annulées, comme les transformations de données, les suppressions de colonnes ou les modifications structurelles qui entraîneraient une rupture dans les versions de code plus anciennes. En les exécutant _après_ plusieurs déploiements réussis, nous garantissons les aspects suivants :\n\n\n1. **Le nouveau code est stable** et il est peu probable que nous ayons besoin de devoir retourner à la version précédente.\n\n2. **Les caractéristiques de performance** sont bien comprises en production.\n\n3. **Tous les cas marginaux** ont été découverts et traités.\n\n4. **Le rayon d'impact** est minimisé en cas de problème.\n\n\nCette approche offre un équilibre optimal entre un déploiement rapide des fonctionnalités via les releases canari et des capacités de retour à la version précédente jusqu'à ce que nous ayons suffisamment confiance dans la stabilité du déploiement.\n\n\n**Modèle étendre-migrer-réduire :** nos modifications de compatibilité de base de données, frontend et application suivent une approche en trois phases soigneusement orchestrée.\n\n\n1. **Étendre :** ajouter de nouvelles structures (colonnes, index) tout en gardant les anciennes fonctionnelles.\n\n2. **Migrer :** déployer le nouveau code d'application qui utilise les nouvelles structures.\n\n3. **Réduire :** supprimer les anciennes structures dans les migrations post-déploiement une fois que tout est stable.\n\n**Exemple concret :** lors de l'ajout d'une nouvelle colonne `merge_readiness` aux merge requests :\n\n1. **Étendre :** ajouter la nouvelle colonne avec une valeur par défaut ; le code existant l'ignore.\n\n2. **Migrer :** déployer le code qui lit et écrit dans la nouvelle colonne tout en prenant en charge l'ancienne approche.\n\n3. **Réduire :** après plusieurs déploiements réussis, supprimer l'ancienne colonne dans une migration post-déploiement\n\nToutes les opérations de base de données, le code d'application, le code frontend et bien d'autres, sont soumis à un ensemble de directives que les équipes d’ingénieries doivent respecter, que vous pouvez consulter dans notre [documentation sur la compatibilité multi-versions](https://docs.gitlab.com/development/multi_version_compatibility/).\n\n\n## Résultats et impact\n\nNotre infrastructure de déploiement offre des avantages mesurables :\n\n**Pour GitLab**\n\n* Jusqu'à 12 déploiements quotidiens sur GitLab.com\n* Déploiements sans temps d’arrêt au service de millions de développeurs\n* Application de correctifs de sécurité en production en quelques heures au lieu de plusieurs jours\n* Nouvelles fonctionnalités validées en production à grande échelle avant la disponibilité générale\n\n**Pour nos clients**\n\n* Modèles de déploiement éprouvés que vous pouvez adopter pour vos propres applications\n* Fonctionnalités testées en conditions réelles sur la plus grande instance GitLab au monde avant d'atteindre votre environnement\n* Documentation qui reflète les pratiques de production réelles, et non des bonnes pratiques théoriques\n* Fiabilité des procédures de mise à niveau recommandées par GitLab à toute échelle\n\n## Points clés pour les équipes d'ingénierie\n\nLe pipeline de déploiement de GitLab représente un système sophistiqué qui met en jeu la vélocité de déploiement et la fiabilité opérationnelle. Le modèle de déploiement progressif, l'intégration complète des tests et les capacités robustes de retour à la version précédente fournissent une base pour une livraison logicielle fiable à grande échelle.\n\n\nLes équipes d'ingénierie qui implémentent des systèmes similaires doivent avoir les points clés suivants en tête :\n\n\n- **Tests automatisés :** couverture de tests complète tout au long du pipeline de déploiement\n\n- **Déploiement progressif :** déploiements par étapes afin de minimiser les risques et permettre une récupération rapide\n\n- **Intégration de la surveillance :** observabilité complète à travers toutes les étapes de déploiement\n\n- **Réponse aux incidents :** capacités de détection et de résolution rapides pour les problèmes de déploiement\n\n\nL'architecture de GitLab démontre comment des systèmes CI/CD modernes peuvent gérer la complexité de déploiements à grande échelle tout en maintenant la vélocité requise pour un développement logiciel compétitif.\n\n\n## Note importante sur la portée\n\n\nCet article couvre spécifiquement le pipeline de déploiement pour les services qui font partie du **paquet GitLab Omnibus** et du **chart Helm**, soit le monolithe GitLab principal et ses composants étroitement intégrés.\n\n\nCependant, le paysage d'infrastructure de GitLab s'étend au-delà de ce qui est décrit ici. D'autres services, notamment nos **services d'IA** et les services qui pourraient faire partie d'une **étude de faisabilité**, suivent une approche de déploiement différente au moyen de notre plateforme interne Runway.\n\n\nSi vous travaillez avec ces services ou souhaitez en savoir plus, vous pouvez obtenir plus d'informations dans notre [documentation dédiée à Runway](https://docs.runway.gitlab.com).\n\n\nD'autres offres, telles que [GitLab Dedicated](https://about.gitlab.com/fr-fr/dedicated/ \"GitLab Dedicated\"), sont déployées de manière plus alignée avec ce que nous attendons que les clients soient capables de réaliser eux-mêmes au moyen de **GitLab Environment Toolkit**. Si vous souhaitez en savoir plus, consultez le [projet GitLab Environment Toolkit](https://gitlab.com/gitlab-org/gitlab-environment-toolkit).\n\n\nLes stratégies de déploiement, les considérations architecturales et les complexités de pipeline décrites dans cet article représentent l'approche éprouvée que nous utilisons pour notre plateforme principale, mais comme toute grande organisation d'ingénierie, nous disposons de plusieurs stratégies de déploiement adaptées aux différents types de services et niveaux de maturité.\n\nPour plus de documentation sur le déploiement automatique et nos procédures, vous pouvez consulter les liens ci-dessous :\n- [Déploiements d'ingénierie](https://handbook.gitlab.com/handbook/engineering/deployments-and-releases/deployments/)\n- [Documentation sur les procédures de release](https://gitlab-org.gitlab.io/release/docs/)","Plongez au cœur du pipeline de déploiement de GitLab.com, des déploiements progressifs, des stratégies canari aux migrations de base de données en passant par la compatibilité multi-versions.","Comment déployer la plus grande instance GitLab 12 fois par jour",{},"/fr-fr/blog/continuously-deploying-the-largest-gitlab-instance",{"config":670,"ogImage":661,"description":671,"title":672},{"noIndex":10},"Plongez au cœur du pipeline de déploiement de GitLab.com.","Comment déployer l’instance GitLab 12 fois par jour","fr-fr/blog/continuously-deploying-the-largest-gitlab-instance",[658,675],"inside-gitlab","q5agG1AE2DF_A1jxpVvW2zd7jRAWePxl5tH98mT2KZg",[678,688,697,707,715,724,735,744,754],{"content":679,"config":686},{"title":680,"heroImage":681,"category":9,"description":682,"authors":683},"Migrer d'Azure DevOps vers GitLab :  le guide complet","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749658924/Blog/Hero%20Images/securitylifecycle-light.png","Découvrez comment migrer d'Azure DevOps vers GitLab à l'aide des outils de migration des Services professionnels de GitLab, de la planification à l'exécution en passant par les tâches de suivi post-migration.",[684,685],"Evgeny Rudinsky","Michael Leopard",{"externalUrl":-1,"slug":687},"migration-from-azure-devops-to-gitlab",{"content":689,"config":695},{"title":690,"heroImage":691,"category":9,"description":692,"authors":693},"Rust : développement sécurisé avec GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756314674/tct6zf6evw0xgddd2vo3.png","Découvrez comment GitLab prend en charge le développement en Rust grâce à ses capacités CI/CD, ses analyses de sécurité, ses intégrations dédiées et ses fonctionnalités d'IA.",[694],"Fernando Diaz",{"externalUrl":-1,"slug":696},"secure-rust-development-with-gitlab",{"content":698,"config":705},{"title":699,"heroImage":700,"category":9,"description":701,"authors":702},"GitLab transforme les cycles de test des systèmes embarqués","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","Découvrez comment les environnements de cycle de vie gérés rationalisent et automatisent les tests virtuels grâce à un retour rapide sans multiplication des environnements ni augmentation des coûts.",[703,704],"Matt DeLaney","Darwin Sanoy",{"externalUrl":-1,"slug":706},"how-gitlab-transforms-embedded-systems-testing-cycles",{"content":708,"config":713},{"title":709,"heroImage":710,"category":9,"description":711,"authors":712},"Clonage Git : optimisez vos workflows avec Git Much Faster","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098264/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_519147119_2RafH61mqosMZv8HGAlsUj_1750098264407.jpg","Avec le script Git Much Faster, diminuez considérablement les temps de clonage Git et l'espace disque utilisé, jusqu'à 93 et 98 %, respectivement.",[704],{"externalUrl":-1,"slug":714},"supercharge-your-git-workflows",{"content":716,"config":722},{"title":717,"heroImage":718,"category":9,"description":719,"authors":720},"Kubernetes : gérer les données du cluster côté frontend","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1750099045/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2816%29_3L7ZP4GxJrShu6qImuS4Wo_1750099045397.png","Découvrez dans ce guide tout ce que vous devez savoir sur la solution intégrée de GitLab pour surveiller l'état de vos clusters Kubernetes.",[721],"Anna Vovchenko",{"externalUrl":-1,"slug":723},"kubernetes-overview-operate-cluster-data-on-the-frontend",{"content":725,"config":733},{"title":726,"heroImage":727,"category":9,"description":728,"authors":729},"La documentation de GitLab fait peau neuve","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/blog/hero%20images/workflow_1800x945","Découvrez les fonctionnalités de notre nouvelle documentation produit, qui facilite désormais les retours et prend en charge le mode sombre tant demandé.",[730,731,732],"Suzanne Selhorn","Julia Miocene","Sarah German",{"externalUrl":-1,"slug":734},"docs-site-design-overhaul",{"content":736,"config":742},{"title":737,"heroImage":738,"category":9,"description":739,"authors":740},"Amélioration de la gestion des tickets créés par la communauté GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1749664458/Blog/Hero%20Images/Gartner_AI_Code_Assistants_Blog_Post_Cover_Image_1800x945.png","Découvrez comment nous améliorons la gestion des tickets pour prioriser le travail stratégique, optimiser la livraison de logiciels et créer des boucles de rétroaction plus efficaces avec nos utilisateurs.",[741],"Stan Hu",{"externalUrl":-1,"slug":743},"inside-gitlabs-healthy-backlog-initiative",{"content":745,"config":752},{"title":746,"heroImage":747,"category":9,"description":748,"authors":749},"Dépôts GitLab : diminution du temps de sauvegarde de 48 h à 41 min ","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","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.",[750,751],"Karthik Nayak","Manuel Kraft",{"externalUrl":-1,"slug":753},"how-we-decreased-gitlab-repo-backup-times-from-48-hours-to-41-minutes",{"content":755,"config":761},{"title":756,"heroImage":757,"category":9,"description":758,"authors":759},"Comment automatiser la migration des images de conteneurs d'Amazon ECR vers GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663129/Blog/Hero%20Images/blog-image-template-1800x945__28_.png","Suivez ce guide étape par étape pour automatiser le processus de migration de vos images de conteneurs d’Amazon ECR vers GitLab.",[760],"Tim Rizzi",{"externalUrl":-1,"slug":762},"automating-container-image-migration-from-amazon-ecr-to-gitlab",1772652100314]