[{"data":1,"prerenderedAt":1551},["ShallowReactive",2],{"/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd":3,"navigation-fr-fr":760,"banner-fr-fr":1193,"footer-fr-fr":1201,"blog-post-authors-fr-fr-Rutvik Shah|Michael Friedrich":1438,"blog-related-posts-fr-fr-developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd":1465,"blog-promotions-fr-fr":1489,"next-steps-fr-fr":1542},{"id":4,"title":5,"authors":6,"body":9,"category":737,"date":738,"description":739,"extension":740,"externalUrl":741,"faq":741,"featured":293,"heroImage":742,"meta":743,"navigation":293,"path":744,"seo":745,"slug":751,"stem":752,"tags":753,"template":758,"updatedDate":741,"__hash__":759},"blogPosts/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.md","GitLab Duo : l'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD",[7,8],"Rutvik Shah","Michael Friedrich",{"type":10,"value":11,"toc":729},"minimark",[12,22,45,48,59,64,67,83,86,89,96,99,112,115,118,131,135,138,141,146,155,163,169,178,200,311,322,328,340,445,448,454,462,474,501,504,508,525,531,550,569,575,586,590,593,619,623,633,636,642,645,660,663,678,682,685,693,697,725],[13,14,15],"p",{},[16,17,18],"em",{},[19,20,21],"strong",{},"L'IA générative marque une avancée majeure dans le domaine du développement logiciel, simplifiant le processus de développement, de sécurisation et d'exploitation des logiciels. Notre série d'articles de blog, rédigée par nos équipes produit et ingénierie, vous propose un aperçu de notre processus de création, de test et de déploiement des fonctionnalités d'IA que vous avez besoin d'intégrer dans l'ensemble de l'entreprise. Explorez les nouvelles capacités de GitLab Duo et découvrez comment elles aident les équipes DevSecOps à livrer de meilleurs résultats aux clients.",[13,23,24,25,32,33,38,39,44],{},"Avez-vous déjà été contraint d'interrompre votre workflow ",[26,27,31],"a",{"href":28,"rel":29,"title":30},"https://about.gitlab.com/fr-fr/topics/devsecops/",[],"Qu'est-ce que le DevSecOps ?","DevSecOps",", voire de retarder votre processus de déploiement logiciel, alors que vous cherchiez la cause profonde d'un problème de pipeline ",[26,34,37],{"href":35,"rel":36},"https://about.gitlab.com/fr-fr/topics/ci-cd/benefits-continuous-integration/",[],"CI/CD"," ? Traditionnellement, lorsqu'un problème survient au cours du processus de création de logiciels, les développeurs doivent parcourir les fichiers journaux et le résoudre après de multiples essais. ",[26,40,43],{"href":41,"rel":42},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/",[],"L'analyse des causes profondes de GitLab Duo",", l'une de nos fonctionnalités alimentées par l'IA, élimine les hypothèses en déterminant la cause profonde de l'échec d'un pipeline CI/CD.",[13,46,47],{},"Découvrez dans cet article ce qu’est l'analyse des causes profondes et comment appliquer cette fonctionnalité GitLab Duo alimentée par l'IA à votre workflow DevSecOps.",[49,50,51],"blockquote",{},[13,52,53,54],{},"Vous avez manqué notre événement virtuel à l’occasion du lancement de GitLab 17 ? ",[26,55,58],{"href":56,"rel":57},"https://about.gitlab.com/fr-fr/eighteen/",[],"Accédez au replay !",[60,61,63],"h2",{"id":62},"quest-ce-que-lanalyse-des-causes-profondes","Qu’est-ce que l'analyse des causes profondes ?",[13,65,66],{},"L'analyse des causes profondes de GitLab Duo est une fonctionnalité alimentée par l'IA qui analyse les journaux pour vous aider à identifier une cause profonde et suggère une solution lorsqu'un job log CI/CD échoue.",[13,68,69,70,76,77,82],{},"Bien qu'elle soit souvent utilisée pour gérer les incidents liés aux produits, ses méthodes et ses pratiques de débogage se retrouvent dans tous les workflows DevSecOps. Lorsque les équipes Ops, les administrateurs et les ingénieurs de plateforme enquêtent sur les échecs de pipeline, ils sont confrontés à des erreurs de déploiement de l'Infrastructure as Code (IaC), à des problèmes liés à ",[26,71,75],{"href":72,"rel":73,"title":74},"https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/",[],"Qu'est-ce que Kubernetes ? ","Kubernetes"," et ",[26,78,81],{"href":79,"rel":80,"title":81},"https://about.gitlab.com/fr-fr/topics/gitops/",[],"GitOps",", ainsi qu'à de longues traces d'appels détaillant la séquence complète des fonctions ou des méthodes impliquées dans les défaillances.",[13,84,85],{},"Rassemblant les équipes sur une seule interface, la fonctionnalité d'analyse des causes profondes de GitLab Duo fait appel à l'IA pour résumer, analyser et proposer des correctifs afin que les entreprises puissent déployer plus rapidement des logiciels sécurisés.",[13,87,88],{},"Un pipeline peut échouer pour diverses raisons, notamment des erreurs de syntaxe dans le code, des dépendances manquantes, des échecs de test pendant le processus de compilation, des délais d'attente dépassés lors du déploiement de Kubernetes et de l'IaC, ainsi que de nombreux autres problèmes potentiels. Lorsque de tels échecs se produisent, toute l'équipe a la responsabilité d'examiner minutieusement les logs générés par le pipeline. Ce processus d'examen du job log consiste à vérifier minutieusement les sorties détaillées pour identifier les erreurs spécifiques et les causes profondes de l'échec du pipeline. Par exemple, le pipeline suivant a enregistré plusieurs échecs qui doivent être examinés et corrigés.",[13,90,91],{},[92,93],"img",{"alt":94,"src":95},"Image illustrant plusieurs échecs de jobs","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097332601.png",[13,97,98],{},"La durée nécessaire pour corriger ces échecs est très variable et grandement influencée par plusieurs facteurs, tels que :",[100,101,102,106,109],"ul",{},[103,104,105],"li",{},"la connaissance du projet par le développeur,",[103,107,108],{},"son niveau d'expérience avec des problèmes similaires,",[103,110,111],{},"son niveau de compétence global en matière de dépannage et de résolution de problèmes dans le contexte du pipeline.",[13,113,114],{},"L'analyse manuelle peut être extrêmement difficile et chronophage, dans la mesure où les données des journaux se composent de journaux d'applications et de messages système rassemblant de nombreuses sources d'échec potentielles. Un correctif de pipeline typique peut consister en plusieurs itérations et en un changement de contexte. La complexité et la nature non structurée des fichiers journaux illustrent à la perfection la manière dont l'IA générative permet d'accélérer les tâches. L'utilisation de l'IA peut réduire considérablement le temps nécessaire pour identifier et corriger une erreur de pipeline. Elle abaisse également le niveau d'expertise nécessaire pour réparer un pipeline comme celui présenté ci-dessus.",[13,116,117],{},"Regardez la fonctionnalité d’analyse des causes profondes de GitLab Duo en action :",[119,120,123,124],"figure",{"className":121},[122],"video_container","\n ",[125,126,130],"iframe",{"src":127,"frameBorder":128,"allowFullScreen":129},"https://www.youtube.com/embed/sTpSLwX5DIs?si=J6-0Bf6PtYjrHX1K","0","true"," ",[60,132,134],{"id":133},"comment-fonctionne-lanalyse-des-causes-profondes","Comment fonctionne l'analyse des causes profondes ?",[13,136,137],{},"L'analyse des causes profondes transmet une partie du job log CI/CD à la passerelle d'IA de GitLab. GitLab intègre ce segment dans les limites du token du grand modèle de langage (LLM) et l'associe à un prompt créé en amont afin de fournir des informations sur les raisons possibles de l'échec du job. Le prompt demande également au LLM de fournir un exemple de résolution du job qui a échoué.",[13,139,140],{},"Voici deux exemples de scénarios où la fonctionnalité d'analyse des causes profondes de GitLab peut vous être utile.",[142,143,145],"h4",{"id":144},"_1-analysez-une-erreur-de-dépendance-python","1. Analysez une erreur de dépendance Python",[13,147,148,149,154],{},"Une application Python peut importer des modules de package contenant des fonctionnalités qui ne sont pas fournies dans la bibliothèque standard. Le projet « ",[26,150,153],{"href":151,"rel":152},"https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config",[],"Challenge - Root Cause Analysis - Python Config"," » met en œuvre une application qui analyse la configuration et initialise une base de données SQLite. Ces deux éléments fonctionnent sans dépendance. Le projet utilise les meilleures pratiques CI/CD avec une mise en cache et un environnement Python. La dernière implémentation de la fonctionnalité ajoute un client de mise en cache Redis et la compilation CI/CD échoue maintenant pour une raison quelconque.",[13,156,157,158,162],{},"Grâce à la fonctionnalité d'analyse des causes profondes de GitLab Duo, vous pouvez immédiatement repérer que le texte ",[159,160,161],"code",{},"ModuleNotFoundError"," signifie que le module n'est pas installé dans l'environnement Python. GitLab Duo suggère également un exemple de correctif : l'installation du module Redis via le gestionnaire de paquets PIP.",[13,164,165],{},[92,166],{"alt":167,"src":168},"Image représentant le message 'modulenotfounderror' et la résolution suggérée par GitLab Duo","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097332602.png",[13,170,171,172,177],{},"Pour consulter le pipeline défectueux, cliquez sur ",[26,173,176],{"href":174,"rel":175},"https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/jobs/6992716398",[],"ce lien",".",[13,179,180,181,184,185,187,188,191,192,195,196,199],{},"Le prompt d'analyse des causes profondes de GitLab fournit un résumé du problème, qui semble découler d'un module ",[159,182,183],{},"redis"," manquant. Essayons de le résoudre en installant le module ",[159,186,183],{},". Vous pouvez appeler ",[159,189,190],{},"pip install redis"," dans la section ",[159,193,194],{},"script"," du job CI/CD, ou utiliser une approche plus sophistiquée avec le fichier ",[159,197,198],{},"requirements.txt",". Ce dernier est utile si vous souhaitez avoir une source unique de vérité pour les dépendances installées dans l'environnement de développement et les pipelines CI/CD.",[201,202,207],"pre",{"className":203,"code":204,"language":205,"meta":206,"style":206},"language-yaml shiki shiki-themes github-light","test:\n  extends: [.python-req]\n  stage: test\n  before_script:\n    # [🦊] hint: Root cause analysis. # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt\n\n  script:\n    - python src/main.py\n\n","yaml","",[159,208,209,222,238,250,258,265,274,280,288,295,303],{"__ignoreMap":206},[210,211,214,218],"span",{"class":212,"line":213},"line",1,[210,215,217],{"class":216},"shJU0","test",[210,219,221],{"class":220},"sgsFI",":\n",[210,223,225,228,231,235],{"class":212,"line":224},2,[210,226,227],{"class":216},"  extends",[210,229,230],{"class":220},": [",[210,232,234],{"class":233},"sYBdl",".python-req",[210,236,237],{"class":220},"]\n",[210,239,241,244,247],{"class":212,"line":240},3,[210,242,243],{"class":216},"  stage",[210,245,246],{"class":220},": ",[210,248,249],{"class":233},"test\n",[210,251,253,256],{"class":212,"line":252},4,[210,254,255],{"class":216},"  before_script",[210,257,221],{"class":220},[210,259,261],{"class":212,"line":260},5,[210,262,264],{"class":263},"sAwPA","    # [🦊] hint: Root cause analysis. # Solution 1: Install redis using pip\n",[210,266,268,271],{"class":212,"line":267},6,[210,269,270],{"class":220},"    - ",[210,272,273],{"class":233},"pip install redis\n",[210,275,277],{"class":212,"line":276},7,[210,278,279],{"class":263},"    # Solution 2: Add redis to requirements.txt, use pip\n",[210,281,283,285],{"class":212,"line":282},8,[210,284,270],{"class":220},[210,286,287],{"class":233},"pip install -r requirements.txt\n",[210,289,291],{"class":212,"line":290},9,[210,292,294],{"emptyLinePlaceholder":293},true,"\n",[210,296,298,301],{"class":212,"line":297},10,[210,299,300],{"class":216},"  script",[210,302,221],{"class":220},[210,304,306,308],{"class":212,"line":305},11,[210,307,270],{"class":220},[210,309,310],{"class":233},"python src/main.py\n",[13,312,313,314,317,318,321],{},"Une fois la dépendance Python manquante corrigée, le job CI/CD échoue à nouveau. Utilisez une nouvelle fois l'analyse des causes profondes de GitLab et vous constaterez qu'aucun service Redis n'est en cours d'exécution dans le job. Dans GitLab Duo Chat, saisissez le prompt ",[159,315,316],{},"How to start a Redis service in CI/CD"," (Comment démarrer un service Redis dans CI/CD) pour apprendre à configurer l'attribut ",[159,319,320],{},"services"," dans le job CI/CD.",[13,323,324],{},[92,325],{"alt":326,"src":327},"Illustre le prompt indiquant comment démarrer un service Redis","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097333/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097332602.png",[13,329,330,331,334,335,337,338,177],{},"Modifiez le fichier ",[159,332,333],{},".gitlab-ci.yml"," avec le job ",[159,336,217],{}," et indiquez le service ",[159,339,183],{},[201,341,343],{"className":203,"code":342,"language":205,"meta":206,"style":206},"test:\n  extends: [.python-req]\n  stage: test\n  before_script:\n    # [🦊] hint: Root cause analysis.\n    # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt\n\n  script:\n    - python src/main.py\n\n  # Solution 3 - Running Redis\n  services:\n    - redis\n\n",[159,344,345,351,361,369,375,380,385,391,395,401,405,411,418,423,429,437],{"__ignoreMap":206},[210,346,347,349],{"class":212,"line":213},[210,348,217],{"class":216},[210,350,221],{"class":220},[210,352,353,355,357,359],{"class":212,"line":224},[210,354,227],{"class":216},[210,356,230],{"class":220},[210,358,234],{"class":233},[210,360,237],{"class":220},[210,362,363,365,367],{"class":212,"line":240},[210,364,243],{"class":216},[210,366,246],{"class":220},[210,368,249],{"class":233},[210,370,371,373],{"class":212,"line":252},[210,372,255],{"class":216},[210,374,221],{"class":220},[210,376,377],{"class":212,"line":260},[210,378,379],{"class":263},"    # [🦊] hint: Root cause analysis.\n",[210,381,382],{"class":212,"line":267},[210,383,384],{"class":263},"    # Solution 1: Install redis using pip\n",[210,386,387,389],{"class":212,"line":276},[210,388,270],{"class":220},[210,390,273],{"class":233},[210,392,393],{"class":212,"line":282},[210,394,279],{"class":263},[210,396,397,399],{"class":212,"line":290},[210,398,270],{"class":220},[210,400,287],{"class":233},[210,402,403],{"class":212,"line":297},[210,404,294],{"emptyLinePlaceholder":293},[210,406,407,409],{"class":212,"line":305},[210,408,300],{"class":216},[210,410,221],{"class":220},[210,412,414,416],{"class":212,"line":413},12,[210,415,270],{"class":220},[210,417,310],{"class":233},[210,419,421],{"class":212,"line":420},13,[210,422,294],{"emptyLinePlaceholder":293},[210,424,426],{"class":212,"line":425},14,[210,427,428],{"class":263},"  # Solution 3 - Running Redis\n",[210,430,432,435],{"class":212,"line":431},15,[210,433,434],{"class":216},"  services",[210,436,221],{"class":220},[210,438,440,442],{"class":212,"line":439},16,[210,441,270],{"class":220},[210,443,444],{"class":233},"redis\n",[13,446,447],{},"L'exécution du serveur Redis vous permet d'exécuter avec succès l'application Python et d'enregistrer sa sortie dans le job log CI/CD.",[13,449,450],{},[92,451],{"alt":452,"src":453},"sortie de l'application Python","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097332603.png",[13,455,456,457,177],{},"La solution est fournie dans le ",[26,458,461],{"href":459,"rel":460},"https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/tree/main/solution?ref_type=heads",[],"dépôt solution/",[13,463,464,467,468,473],{},[19,465,466],{},"Conseil :"," vous pouvez également demander à ",[26,469,472],{"href":470,"rel":471},"https://docs.gitlab.com/user/gitlab_duo_chat/",[],"GitLab Duo Chat"," de suivre les problèmes potentiels à l'avenir.",[201,475,479],{"className":476,"code":477,"language":478,"meta":206,"style":206},"language-markdown shiki shiki-themes github-light","How to lint Python code? Which tools are recommended for CI/CD.\nHow to pin a package version in Python requirements file?\nWhat are possible ways that this exception stacktrace is triggered in the future?\nAre there ways to prevent the application from failing?\n","markdown",[159,480,481,486,491,496],{"__ignoreMap":206},[210,482,483],{"class":212,"line":213},[210,484,485],{"class":220},"How to lint Python code? Which tools are recommended for CI/CD.\n",[210,487,488],{"class":212,"line":224},[210,489,490],{"class":220},"How to pin a package version in Python requirements file?\n",[210,492,493],{"class":212,"line":240},[210,494,495],{"class":220},"What are possible ways that this exception stacktrace is triggered in the future?\n",[210,497,498],{"class":212,"line":252},[210,499,500],{"class":220},"Are there ways to prevent the application from failing?\n",[13,502,503],{},"L'exemple suivant est plus avancé et comprend plusieurs échecs.",[142,505,507],{"id":506},"_2-analysez-le-runtime-go-manquant","2. Analysez le runtime Go manquant",[13,509,510,511,514,515,517,518,521,522,177],{},"Les jobs CI/CD peuvent être exécutés dans des conteneurs, générés à partir de l'attribut ",[159,512,513],{},"image"," fourni. Si le conteneur ne fournit pas de runtime de langage de programmation, les sections ",[159,516,194],{}," exécutées faisant référence au binaire ",[159,519,520],{},"go"," échouent. Par exemple, il est nécessaire de comprendre et de corriger le message d'erreur ",[159,523,524],{},"/bin/sh: eval: line 149: go: not found",[13,526,527,528,530],{},"Plusieurs raisons peuvent expliquer que la commande ",[159,529,520],{}," ne se trouve pas dans le contexte de runtime du conteneur :",[532,533,534,541,547],"ol",{},[103,535,536,537,540],{},"Le job utilise une image de conteneur minimale, par exemple ",[159,538,539],{},"alpine",", et le runtime du langage Go n'a pas été installé.",[103,542,543,544,177],{},"Le job utilise la mauvaise image de conteneur par défaut, par exemple, celle indiquée au-dessus de la configuration CI/CD ou correspondant au mot-clé ",[159,545,546],{},"default",[103,548,549],{},"Le job utilise le Shell executor (exécuteur Shell) à la place de l'image de conteneur. Le runtime Go n'est pas installé sur le système d'exploitation hôte, il échoue pour un autre motif ou n'est pas configuré.",[13,551,552,553,558,559,76,562,565,566,177],{},"Notre projet « ",[26,554,557],{"href":555,"rel":556},"https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher",[],"Challenge - Root Cause Analysis - Go GitLab Release Fetcher"," » propose un exercice d'analyse et de résolution des problèmes CI/CD avec une application de récupération de versions GitLab, écrite en langage Go. Les jobs CI/CD ",[159,560,561],{},"build",[159,563,564],{},"docker-build"," échouent. La résolution du problème a différentes portées : comprendre pourquoi le runtime Go n'est pas installé et en apprendre davantage sur la syntaxe ",[159,567,568],{},"Dockerfile",[13,570,571],{},[92,572],{"alt":573,"src":574},"Capture d'écran montrant l'échec du job Modifier l'étiquette Docker","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097332603.png",[13,576,577,578,585],{},"Le ",[26,579,581,582],{"href":555,"rel":580},[],"dépôt ",[159,583,584],{},"solution/"," suggère deux solutions possibles après l'analyse des causes profondes.",[60,587,589],{"id":588},"entraînez-vous-à-utiliser-lanalyse-des-causes-profondes","Entraînez-vous à utiliser l'analyse des causes profondes",[13,591,592],{},"Voici plusieurs scénarios pour lesquels vous pouvez vous entraîner à travailler avec la fonctionnalité d'analyse des causes profondes de GitLab.",[100,594,595,598,601,604,607,610,613,616],{},[103,596,597],{},"Lorsque vous rencontrez des délais d'attente expirés ou des erreurs de déploiements.",[103,599,600],{},"Lorsque des pipelines IaC OpenTofu ou Terraform ne parviennent pas à provisionner vos ressources cloud.",[103,602,603],{},"Lorsque le playbook Ansible échoue et affiche un message d'erreur cryptique d'autorisation dans le CI/CD.",[103,605,606],{},"Lorsque la trace d'appels Java contient 10 pages.",[103,608,609],{},"Lorsqu'un script shell met en évidence une erreur d'exécution.",[103,611,612],{},"Lorsqu'un script Perl échoue sur la seule ligne que ce script contient.",[103,614,615],{},"Lorsque le job CI/CD est interrompu et que la section qui en serait la cause n'est pas évidente.",[103,617,618],{},"Lorsqu'un délai d'attente de connexion réseau est atteint et que vous pensez qu'il ne peut pas s'agir du DNS.",[60,620,622],{"id":621},"quels-sont-les-prochains-développements-prévus-pour-lanalyse-des-causes-profondes-de-gitlabduo","Quels sont les prochains développements prévus pour l'analyse des causes profondes de GitLab Duo ?",[13,624,625,626,632],{},"Nous voulons aider nos utilisateurs à réduire le nombre d'itérations nécessaires pour valider leurs ",[26,627,631],{"href":628,"rel":629,"title":630},"https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/",[],"Qu'est-ce qu'un pipeline CI/CD ? ","pipelines CI/CD",". À l'avenir, la fonctionnalité d'analyse des causes profondes de GitLab s'ouvrira systématiquement et affichera la réponse dans GitLab Duo Chat, notre assistant d'IA. Les utilisateurs pourront alors s'appuyer sur la recommandation pour générer un correctif plus précis en posant des questions spécifiques (par exemple, des correctifs spécifiques pour un langage de programmation particulier) ou en demandant des correctifs alternatifs en fonction de la cause profonde identifiée.",[13,634,635],{},"Par exemple, voici le résultat de l'analyse des causes profondes d'un job ayant rencontré un échec :",[13,637,638],{},[92,639],{"alt":640,"src":641},"Réponse de l'Analyse des causes profondes","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097332603.png",[13,643,644],{},"Les utilisateurs peuvent poser des questions de suivi qui approfondissent la réponse générée par l'IA.",[100,646,647,657],{},[103,648,649,650,656],{},"Je ne veux pas créer ma propre image ",[26,651,655],{"href":652,"rel":653,"title":654},"https://about.gitlab.com/fr-fr/blog/what-is-docker-comprehensive-guide/",[],"Qu'est-ce que Docker ?","Docker",". Veuillez suggérer d'autres façons de résoudre le problème.",[103,658,659],{},"Je n'ai pas accès à la création d'image Docker. Il semble que le binaire Go soit manquant. Pouvez-vous suggérer des images alternatives ?",[13,661,662],{},"GitLab exécutera également un benchmark de la qualité des réponses générées et mettra en place des améliorations pour rendre l'utilisation plus conviviale et efficace.",[13,664,665,666,671,672,677],{},"Consultez notre ",[26,667,670],{"href":668,"rel":669},"https://gitlab.com/groups/gitlab-org/-/epics/13080",[],"epic sur la disponibilité générale de l'analyse des causes profondes"," pour en savoir plus et laissez un commentaire sur notre ",[26,673,676],{"href":674,"rel":675},"https://gitlab.com/groups/gitlab-org/-/epics/13872",[],"ticket dédié à l'analyse des causes profondes"," pour nous dire ce que vous pensez de cette fonctionnalité.",[60,679,681],{"id":680},"profitez-dès-maintenant-des-nombreux-avantages-de-lanalyse-des-causes-profondes","Profitez dès maintenant des nombreux avantages de l'analyse des causes profondes",[13,683,684],{},"Pour activer cette fonctionnalité, consultez notre documentation. L'analyse des causes profondes est disponible actuellement pour nos clients GitLab Ultimate et sera bientôt disponible dans GitLab Auto-géré et GitLab Dedicated.",[13,686,687,688,177],{},"Vous souhaitez tester GitLab Ultimate ? Commencez dès aujourd'hui ",[26,689,692],{"href":690,"rel":691},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/blog&glm_content=default-saas-trial",[],"un essai gratuit de 30 jours",[60,694,696],{"id":695},"en-savoir-plus-sur-le-développement-de-gitlab-duo","En savoir plus sur le « Développement de GitLab Duo »",[100,698,699,706,712,718],{},[103,700,701],{},[26,702,705],{"href":703,"rel":704},"https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/",[],"Développement de GitLab Duo : comment nous validons et testons les modèles d'IA à grande échelle",[103,707,708],{},[26,709,711],{"href":703,"rel":710},[],"Développement de GitLab Duo : mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact",[103,713,714],{},[26,715,717],{"href":703,"rel":716},[],"Développement de GitLab Duo : comment nous utilisons nos propres fonctionnalités d'IA",[103,719,720],{},[26,721,724],{"href":722,"rel":723},"https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/",[],"Développement de GitLab Duo : tester et sécuriser le code généré par l'IA",[726,727,728],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}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":206,"searchDepth":224,"depth":224,"links":730},[731,732,733,734,735,736],{"id":62,"depth":224,"text":63},{"id":133,"depth":224,"text":134},{"id":588,"depth":224,"text":589},{"id":621,"depth":224,"text":622},{"id":680,"depth":224,"text":681},{"id":695,"depth":224,"text":696},"ai","2024-06-06","Découvrez comment nous avons associé une fonctionnalité d'analyse des causes profondes à l'IA pour vous aider à réparer les pipelines CI/CD défectueux.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097321/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097321081.png",{},"/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",{"ogTitle":746,"ogImage":742,"ogDescription":739,"ogSiteName":747,"noIndex":748,"ogType":749,"ogUrl":750,"title":746,"canonicalUrls":750,"description":739},"GitLab Duo : l'IA combinée à l'analyse des causes profondes","https://about.gitlab.com",false,"article","https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",[754,755,31,756,757],"AI","tutorial","DevSecOps platform","features","BlogPost","DpnIddzEltLaKHepnhcRY7IGDDjXvMk54o2T7wJuuBQ",{"logo":761,"freeTrial":766,"sales":771,"login":776,"items":781,"search":1108,"minimal":1144,"duo":1163,"switchNav":1172,"pricingDeployment":1183},{"config":762},{"href":763,"dataGaName":764,"dataGaLocation":765},"/fr-fr/","gitlab logo","header",{"text":767,"config":768},"Commencer un essai gratuit",{"href":769,"dataGaName":770,"dataGaLocation":765},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":772,"config":773},"Demander une démo",{"href":774,"dataGaName":775,"dataGaLocation":765},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":777,"config":778},"Connexion",{"href":779,"dataGaName":780,"dataGaLocation":765},"https://gitlab.com/users/sign_in/","sign in",[782,811,912,917,1030,1086],{"text":783,"config":784,"menu":786},"Plateforme",{"dataNavLevelOne":785},"platform",{"type":787,"columns":788},"cards",[789,795,803],{"title":783,"description":790,"link":791},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":792,"config":793},"Explorer notre plateforme",{"href":794,"dataGaName":785,"dataGaLocation":765},"/fr-fr/platform/",{"title":796,"description":797,"link":798},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":799,"config":800},"Découvrir GitLab Duo",{"href":801,"dataGaName":802,"dataGaLocation":765},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":804,"description":805,"link":806},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":807,"config":808},"En savoir plus",{"href":809,"dataGaName":810,"dataGaLocation":765},"/fr-fr/why-gitlab/","why gitlab",{"text":812,"left":293,"config":813,"menu":815},"Produit",{"dataNavLevelOne":814},"solutions",{"type":816,"link":817,"columns":821,"feature":891},"lists",{"text":818,"config":819},"Voir toutes les solutions",{"href":820,"dataGaName":814,"dataGaLocation":765},"/fr-fr/solutions/",[822,846,869],{"title":823,"description":824,"link":825,"items":830},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":826},{"icon":827,"href":828,"dataGaName":829,"dataGaLocation":765},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[831,834,837,842],{"text":37,"config":832},{"href":833,"dataGaLocation":765,"dataGaName":37},"/fr-fr/solutions/continuous-integration/",{"text":796,"config":835},{"href":801,"dataGaLocation":765,"dataGaName":836},"gitlab duo agent platform - product menu",{"text":838,"config":839},"Gestion du code source",{"href":840,"dataGaLocation":765,"dataGaName":841},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":843,"config":844},"Livraison de logiciels automatisée",{"href":828,"dataGaLocation":765,"dataGaName":845},"Automated software delivery",{"title":847,"description":848,"link":849,"items":854},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":850},{"href":851,"dataGaName":852,"dataGaLocation":765,"icon":853},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[855,859,864],{"text":856,"config":857},"Tests de sécurité des applications",{"href":851,"dataGaName":858,"dataGaLocation":765},"Application security testing",{"text":860,"config":861},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":862,"dataGaLocation":765,"dataGaName":863},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":865,"config":866},"Conformité logicielle",{"href":867,"dataGaName":868,"dataGaLocation":765},"/fr-fr/solutions/software-compliance/","software compliance",{"title":870,"link":871,"items":876},"Mesures",{"config":872},{"icon":873,"href":874,"dataGaName":875,"dataGaLocation":765},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[877,881,886],{"text":878,"config":879},"Visibilité et mesures",{"href":874,"dataGaLocation":765,"dataGaName":880},"Visibility and Measurement",{"text":882,"config":883},"Gestion de la chaîne de valeur",{"href":884,"dataGaLocation":765,"dataGaName":885},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":887,"config":888},"Analyses et informations",{"href":889,"dataGaLocation":765,"dataGaName":890},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":892,"type":816,"items":893},"GitLab",[894,900,906],{"text":895,"config":896},"Entreprises",{"icon":897,"href":898,"dataGaLocation":765,"dataGaName":899},"Building","/fr-fr/enterprise/","enterprise",{"text":901,"config":902},"Pour les PME",{"icon":903,"href":904,"dataGaLocation":765,"dataGaName":905},"Work","/fr-fr/small-business/","small business",{"text":907,"config":908},"Pour le secteur public",{"icon":909,"href":910,"dataGaLocation":765,"dataGaName":911},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":913,"config":914},"Tarifs",{"href":915,"dataGaName":916,"dataGaLocation":765,"dataNavLevelOne":916},"/fr-fr/pricing/","pricing",{"text":918,"config":919,"menu":921},"Ressources",{"dataNavLevelOne":920},"resources",{"type":816,"link":922,"columns":926,"feature":1019},{"text":923,"config":924},"Afficher toutes les ressources",{"href":925,"dataGaName":920,"dataGaLocation":765},"/fr-fr/resources/",[927,960,987],{"title":928,"items":929},"Premiers pas",[930,935,940,945,950,955],{"text":931,"config":932},"Installation",{"href":933,"dataGaName":934,"dataGaLocation":765},"/fr-fr/install/","install",{"text":936,"config":937},"Guides de démarrage",{"href":938,"dataGaName":939,"dataGaLocation":765},"/fr-fr/get-started/","quick setup checklists",{"text":941,"config":942},"Apprentissage",{"href":943,"dataGaLocation":765,"dataGaName":944},"https://university.gitlab.com/","learn",{"text":946,"config":947},"Documentation",{"href":948,"dataGaName":949,"dataGaLocation":765},"https://docs.gitlab.com/","product documentation",{"text":951,"config":952},"Vidéos sur les bonnes pratiques",{"href":953,"dataGaName":954,"dataGaLocation":765},"/fr-fr/getting-started-videos/","best practice videos",{"text":956,"config":957},"Intégrations",{"href":958,"dataGaName":959,"dataGaLocation":765},"/fr-fr/integrations/","integrations",{"title":961,"items":962},"Découvrir",[963,968,973,978,982],{"text":964,"config":965},"Témoignages clients",{"href":966,"dataGaName":967,"dataGaLocation":765},"/fr-fr/customers/","customer success stories",{"text":969,"config":970},"Blog",{"href":971,"dataGaName":972,"dataGaLocation":765},"/fr-fr/blog/","blog",{"text":974,"config":975},"Demo Hub",{"href":976,"dataGaName":977,"dataGaLocation":765},"/fr-fr/demo-hub/","demo hub",{"text":979,"config":980},"The Source",{"href":981,"dataGaName":972,"dataGaLocation":765},"/fr-fr/the-source/",{"text":983,"config":984},"Travail à distance",{"href":985,"dataGaName":986,"dataGaLocation":765},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":988,"items":989},"Connecter",[990,994,999,1004,1009,1014],{"text":991,"config":992},"Services GitLab",{"href":993,"dataGaName":320,"dataGaLocation":765},"/fr-fr/services/",{"text":995,"config":996},"Contribuer",{"href":997,"dataGaName":998,"dataGaLocation":765},"https://contributors.gitlab.com","contribute",{"text":1000,"config":1001},"Communauté",{"href":1002,"dataGaName":1003,"dataGaLocation":765},"/community/","community",{"text":1005,"config":1006},"Forum",{"href":1007,"dataGaName":1008,"dataGaLocation":765},"https://forum.gitlab.com/","forum",{"text":1010,"config":1011},"Événements",{"href":1012,"dataGaName":1013,"dataGaLocation":765},"/events/","events",{"text":1015,"config":1016},"Partenaires",{"href":1017,"dataGaName":1018,"dataGaLocation":765},"/fr-fr/partners/","partners",{"config":1020,"title":1023,"text":1024,"link":1025},{"background":1021,"textColor":1022},"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":1026,"config":1027},"Lire les articles les plus récents",{"href":1028,"dataGaName":1029,"dataGaLocation":765},"/fr-fr/whats-new/","whats new",{"text":1031,"config":1032,"menu":1034},"Société",{"dataNavLevelOne":1033},"company",{"type":816,"columns":1035},[1036],{"items":1037},[1038,1043,1049,1051,1056,1061,1066,1071,1076,1081],{"text":1039,"config":1040},"À propos",{"href":1041,"dataGaName":1042,"dataGaLocation":765},"/fr-fr/company/","about",{"text":1044,"config":1045,"footerGa":1048},"Carrières",{"href":1046,"dataGaName":1047,"dataGaLocation":765},"/jobs/","jobs",{"dataGaName":1047},{"text":1010,"config":1050},{"href":1012,"dataGaName":1013,"dataGaLocation":765},{"text":1052,"config":1053},"Leadership",{"href":1054,"dataGaName":1055,"dataGaLocation":765},"/company/team/e-group/","leadership",{"text":1057,"config":1058},"Manuel",{"href":1059,"dataGaName":1060,"dataGaLocation":765},"https://handbook.gitlab.com/","handbook",{"text":1062,"config":1063},"Relations avec les investisseurs",{"href":1064,"dataGaName":1065,"dataGaLocation":765},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1067,"config":1068},"Trust Center",{"href":1069,"dataGaName":1070,"dataGaLocation":765},"/fr-fr/security/","trust center",{"text":1072,"config":1073},"Centre pour la transparence de l'IA",{"href":1074,"dataGaName":1075,"dataGaLocation":765},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1077,"config":1078},"Newsletter",{"href":1079,"dataGaName":1080,"dataGaLocation":765},"/company/contact/#contact-forms","newsletter",{"text":1082,"config":1083},"Presse",{"href":1084,"dataGaName":1085,"dataGaLocation":765},"/press/","press",{"text":1087,"config":1088,"menu":1089},"Nous contacter",{"dataNavLevelOne":1033},{"type":816,"columns":1090},[1091],{"items":1092},[1093,1098,1103],{"text":1094,"config":1095},"Contacter l'équipe commerciale",{"href":1096,"dataGaName":1097,"dataGaLocation":765},"/fr-fr/sales/","talk to sales",{"text":1099,"config":1100},"Assistance GitLab",{"href":1101,"dataGaName":1102,"dataGaLocation":765},"https://support.gitlab.com/hc/en-us","support portal",{"text":1104,"config":1105},"Portail clients GitLab",{"href":1106,"dataGaName":1107,"dataGaLocation":765},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1109,"login":1110,"suggestions":1117},"Fermer",{"text":1111,"link":1112},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1113,"config":1114},"GitLab.com",{"href":779,"dataGaName":1115,"dataGaLocation":1116},"search login","search",{"text":1118,"default":1119},"Suggestions",[1120,1123,1128,1130,1135,1140],{"text":796,"config":1121},{"href":801,"dataGaName":1122,"dataGaLocation":1116},"GitLab Duo Agent Platform",{"text":1124,"config":1125},"Suggestions de code (IA)",{"href":1126,"dataGaName":1127,"dataGaLocation":1116},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":37,"config":1129},{"href":833,"dataGaName":37,"dataGaLocation":1116},{"text":1131,"config":1132},"GitLab sur AWS",{"href":1133,"dataGaName":1134,"dataGaLocation":1116},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1136,"config":1137},"GitLab sur Google Cloud",{"href":1138,"dataGaName":1139,"dataGaLocation":1116},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1141,"config":1142},"Pourquoi utiliser GitLab ?",{"href":809,"dataGaName":1143,"dataGaLocation":1116},"Why GitLab?",{"freeTrial":1145,"mobileIcon":1150,"desktopIcon":1155,"secondaryButton":1158},{"text":1146,"config":1147},"Commencer votre essai gratuit",{"href":1148,"dataGaName":770,"dataGaLocation":1149},"https://gitlab.com/-/trials/new/","nav",{"altText":1151,"config":1152},"Icône GitLab",{"src":1153,"dataGaName":1154,"dataGaLocation":1149},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1151,"config":1156},{"src":1157,"dataGaName":1154,"dataGaLocation":1149},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1159,"config":1160},"Commencer",{"href":1161,"dataGaName":1162,"dataGaLocation":1149},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1164,"mobileIcon":1168,"desktopIcon":1170},{"text":1165,"config":1166},"En savoir plus sur GitLab Duo",{"href":801,"dataGaName":1167,"dataGaLocation":1149},"gitlab duo",{"altText":1151,"config":1169},{"src":1153,"dataGaName":1154,"dataGaLocation":1149},{"altText":1151,"config":1171},{"src":1157,"dataGaName":1154,"dataGaLocation":1149},{"button":1173,"mobileIcon":1178,"desktopIcon":1180},{"text":1174,"config":1175},"/switch",{"href":1176,"dataGaName":1177,"dataGaLocation":1149},"#contact","switch",{"altText":1151,"config":1179},{"src":1153,"dataGaName":1154,"dataGaLocation":1149},{"altText":1151,"config":1181},{"src":1182,"dataGaName":1154,"dataGaLocation":1149},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1184,"mobileIcon":1189,"desktopIcon":1191},{"text":1185,"config":1186},"Retour aux tarifs",{"href":915,"dataGaName":1187,"dataGaLocation":1149,"icon":1188},"back to pricing","GoBack",{"altText":1151,"config":1190},{"src":1153,"dataGaName":1154,"dataGaLocation":1149},{"altText":1151,"config":1192},{"src":1157,"dataGaName":1154,"dataGaLocation":1149},{"title":1194,"button":1195,"config":1199},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":807,"config":1196},{"href":1197,"dataGaName":1198,"dataGaLocation":765},"/fr-fr/gitlab-orbit/","orbit",{"layout":1200,"disabled":748},"release",{"data":1202},{"text":1203,"source":1204,"edit":1210,"contribute":1215,"config":1219,"items":1224,"minimal":1430},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1205,"config":1206},"Afficher le code source de la page",{"href":1207,"dataGaName":1208,"dataGaLocation":1209},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1211,"config":1212},"Modifier cette page",{"href":1213,"dataGaName":1214,"dataGaLocation":1209},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":995,"config":1216},{"href":1217,"dataGaName":1218,"dataGaLocation":1209},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1220,"facebook":1221,"youtube":1222,"linkedin":1223},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1225,1271,1322,1365,1397],{"title":913,"links":1226,"subMenu":1241},[1227,1231,1236],{"text":1228,"config":1229},"Voir les forfaits",{"href":915,"dataGaName":1230,"dataGaLocation":1209},"view plans",{"text":1232,"config":1233},"GitLab Premium",{"href":1234,"dataGaName":1235,"dataGaLocation":1209},"/fr-fr/pricing/premium/","why premium",{"text":1237,"config":1238},"GitLab Ultimate",{"href":1239,"dataGaName":1240,"dataGaLocation":1209},"/fr-fr/pricing/ultimate/","why ultimate",[1242],{"title":1087,"links":1243},[1244,1246,1248,1251,1256,1261,1266],{"text":1094,"config":1245},{"href":1096,"dataGaName":775,"dataGaLocation":1209},{"text":1099,"config":1247},{"href":1101,"dataGaName":1102,"dataGaLocation":1209},{"text":1249,"config":1250},"Portail clients",{"href":1106,"dataGaName":1107,"dataGaLocation":1209},{"text":1252,"config":1253},"Statut",{"href":1254,"dataGaName":1255,"dataGaLocation":1209},"https://status.gitlab.com/","status",{"text":1257,"config":1258},"Conditions d'utilisation",{"href":1259,"dataGaName":1260,"dataGaLocation":1209},"/terms/","terms of use",{"text":1262,"config":1263},"Politique de confidentialité",{"href":1264,"dataGaName":1265,"dataGaLocation":1209},"/fr-fr/privacy/","privacy statement",{"text":1267,"config":1268},"Gestion des cookies",{"dataGaName":1269,"dataGaLocation":1209,"id":1270,"isOneTrustButton":293},"cookie preferences","ot-sdk-btn",{"title":812,"links":1272,"subMenu":1281},[1273,1277],{"text":1274,"config":1275},"Plateforme DevSecOps",{"href":794,"dataGaName":1276,"dataGaLocation":1209},"devsecops platform",{"text":1278,"config":1279},"Développement assisté par l'IA",{"href":801,"dataGaName":1280,"dataGaLocation":1209},"ai-assisted development",[1282],{"title":1283,"links":1284},"Thèmes",[1285,1289,1293,1298,1303,1307,1312,1317],{"text":37,"config":1286},{"href":1287,"dataGaName":1288,"dataGaLocation":1209},"/fr-fr/topics/ci-cd/","cicd",{"text":81,"config":1290},{"href":1291,"dataGaName":1292,"dataGaLocation":1209},"/fr-fr/topics/gitops/","gitops",{"text":1294,"config":1295},"DevOps",{"href":1296,"dataGaName":1297,"dataGaLocation":1209},"/fr-fr/topics/devops/","devops",{"text":1299,"config":1300},"Contrôle de version",{"href":1301,"dataGaName":1302,"dataGaLocation":1209},"/fr-fr/topics/version-control/","version control",{"text":31,"config":1304},{"href":1305,"dataGaName":1306,"dataGaLocation":1209},"/fr-fr/topics/devsecops/","devsecops",{"text":1308,"config":1309},"Cloud-native",{"href":1310,"dataGaName":1311,"dataGaLocation":1209},"/fr-fr/topics/cloud-native/","cloud native",{"text":1313,"config":1314},"IA pour la programmation",{"href":1315,"dataGaName":1316,"dataGaLocation":1209},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1318,"config":1319},"IA agentique",{"href":1320,"dataGaName":1321,"dataGaLocation":1209},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1323,"links":1324},"Solutions",[1325,1328,1330,1335,1338,1341,1344,1347,1349,1352,1355,1360],{"text":856,"config":1326},{"href":851,"dataGaName":1327,"dataGaLocation":1209},"Application Security Testing",{"text":843,"config":1329},{"href":828,"dataGaName":829,"dataGaLocation":1209},{"text":1331,"config":1332},"Développement Agile",{"href":1333,"dataGaName":1334,"dataGaLocation":1209},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":838,"config":1336},{"href":840,"dataGaName":1337,"dataGaLocation":1209},"source code management",{"text":37,"config":1339},{"href":833,"dataGaName":1340,"dataGaLocation":1209},"continuous integration & delivery",{"text":882,"config":1342},{"href":884,"dataGaName":1343,"dataGaLocation":1209},"value stream management",{"text":81,"config":1345},{"href":1346,"dataGaName":1292,"dataGaLocation":1209},"/fr-fr/solutions/gitops/",{"text":895,"config":1348},{"href":898,"dataGaName":899,"dataGaLocation":1209},{"text":1350,"config":1351},"PME",{"href":904,"dataGaName":905,"dataGaLocation":1209},{"text":1353,"config":1354},"Secteur public",{"href":910,"dataGaName":911,"dataGaLocation":1209},{"text":1356,"config":1357},"Éducation",{"href":1358,"dataGaName":1359,"dataGaLocation":1209},"/fr-fr/solutions/education/","education",{"text":1361,"config":1362},"Services financiers",{"href":1363,"dataGaName":1364,"dataGaLocation":1209},"/fr-fr/solutions/finance/","financial services",{"title":918,"links":1366},[1367,1369,1371,1373,1376,1378,1381,1383,1385,1387,1389,1391,1393,1395],{"text":931,"config":1368},{"href":933,"dataGaName":934,"dataGaLocation":1209},{"text":936,"config":1370},{"href":938,"dataGaName":939,"dataGaLocation":1209},{"text":941,"config":1372},{"href":943,"dataGaName":944,"dataGaLocation":1209},{"text":946,"config":1374},{"href":948,"dataGaName":1375,"dataGaLocation":1209},"docs",{"text":969,"config":1377},{"href":971,"dataGaName":972,"dataGaLocation":1209},{"text":1379,"config":1380},"Nouveautés",{"href":1028,"dataGaName":1029,"dataGaLocation":1209},{"text":964,"config":1382},{"href":966,"dataGaName":967,"dataGaLocation":1209},{"text":983,"config":1384},{"href":985,"dataGaName":986,"dataGaLocation":1209},{"text":991,"config":1386},{"href":993,"dataGaName":320,"dataGaLocation":1209},{"text":995,"config":1388},{"href":997,"dataGaName":998,"dataGaLocation":1209},{"text":1000,"config":1390},{"href":1002,"dataGaName":1003,"dataGaLocation":1209},{"text":1005,"config":1392},{"href":1007,"dataGaName":1008,"dataGaLocation":1209},{"text":1010,"config":1394},{"href":1012,"dataGaName":1013,"dataGaLocation":1209},{"text":1015,"config":1396},{"href":1017,"dataGaName":1018,"dataGaLocation":1209},{"title":1031,"links":1398},[1399,1401,1403,1405,1407,1409,1414,1419,1421,1423,1425],{"text":1039,"config":1400},{"href":1041,"dataGaName":1033,"dataGaLocation":1209},{"text":1044,"config":1402},{"href":1046,"dataGaName":1047,"dataGaLocation":1209},{"text":1052,"config":1404},{"href":1054,"dataGaName":1055,"dataGaLocation":1209},{"text":1057,"config":1406},{"href":1059,"dataGaName":1060,"dataGaLocation":1209},{"text":1062,"config":1408},{"href":1064,"dataGaName":1065,"dataGaLocation":1209},{"text":1410,"config":1411},"Développement durable",{"href":1412,"dataGaName":1413,"dataGaLocation":1209},"/sustainability/","Sustainability",{"text":1415,"config":1416},"Diversité, inclusion et appartenance (DIB)",{"href":1417,"dataGaName":1418,"dataGaLocation":1209},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1067,"config":1420},{"href":1069,"dataGaName":1070,"dataGaLocation":1209},{"text":1077,"config":1422},{"href":1079,"dataGaName":1080,"dataGaLocation":1209},{"text":1082,"config":1424},{"href":1084,"dataGaName":1085,"dataGaLocation":1209},{"text":1426,"config":1427},"Déclaration de transparence sur l'esclavage moderne",{"href":1428,"dataGaName":1429,"dataGaLocation":1209},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1431},[1432,1434,1436],{"text":1257,"config":1433},{"href":1259,"dataGaName":1260,"dataGaLocation":1209},{"text":1267,"config":1435},{"dataGaName":1269,"dataGaLocation":1209,"id":1270,"isOneTrustButton":293},{"text":1262,"config":1437},{"href":1264,"dataGaName":1265,"dataGaLocation":1209},[1439,1453],{"id":1440,"title":7,"body":741,"config":1441,"content":1443,"description":741,"extension":1447,"meta":1448,"navigation":293,"path":1449,"seo":1450,"stem":1451,"__hash__":1452},"blogAuthors/en-us/blog/authors/rutvik-shah.yml",{"template":1442},"BlogAuthor",{"name":7,"config":1444},{"headshot":1445,"ctfId":1446},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661843/Blog/Author%20Headshots/rutvik_shah_headshot.png","6co92rUBTbWcyV3EW23iEx","yml",{},"/en-us/blog/authors/rutvik-shah",{},"en-us/blog/authors/rutvik-shah","JRArwqK-9V0Orki_E-QqmcQG2AsaZP6XGqa-9ZB6GR8",{"id":1454,"title":8,"body":741,"config":1455,"content":1456,"description":741,"extension":1447,"meta":1460,"navigation":293,"path":1461,"seo":1462,"stem":1463,"__hash__":1464},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":1442},{"name":8,"config":1457},{"headshot":1458,"ctfId":1459},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[1466,1473,1481],{"title":1467,"description":1468,"heroImage":1469,"category":737,"date":1470,"authors":1471,"slug":1472,"externalUrl":741},"Moderniser Java avec Cursor et GitLab","Ce tutoriel commence par la correction ciblée de tests, introduit des murs qualité et met en œuvre des modifications de code en tenant compte du contexte du cycle de développement, des tests et des preuves de revue.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-08-12",[8],"modernize-java-with-cursor-and-gitlab",{"title":1474,"description":1475,"heroImage":1476,"category":737,"date":1477,"authors":1478,"slug":1480,"externalUrl":741},"Comment utiliser des agents d'IA pour migrer la limitation de débit de GitLab","Découvrez comment notre équipe composée de trois personnes a utilisé GitLab Duo Agent Platform, ainsi que d'autres outils d'IA, pour migrer avec succès le système de limitation de débit et les leçons que nous en avons tirées.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773075582/yiosxfhwk8rfkulrtchv.png","2026-08-10",[1479],"Sam Wiskow","ai-agents-for-migrating-rate-limiting-system",{"title":1482,"description":1483,"heroImage":1484,"category":737,"date":1485,"authors":1486,"slug":1488,"externalUrl":741},"Codage agentique : le contexte fait la différence","Les agents de codage accélèrent le développement. Grâce au contexte dans GitLab, les entreprises évitent les correctifs superficiels et raccourcissent les cycles de revue.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773856365/gsx2c0vqlswox3ldmq88.jpg","2026-08-03",[1487],"Jessica Taylor","agentic-coding-only-as-good-as-context",{"promotions":1490},[1491,1504,1516,1528],{"id":1492,"categories":1493,"header":1494,"text":1495,"button":1496,"image":1501},"ai-modernization",[737],"L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1497,"config":1498},"Obtenez votre score de maturité IA",{"href":1499,"dataGaName":1500,"dataGaLocation":972},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1502},{"src":1503},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1505,"categories":1506,"header":1508,"text":1495,"button":1509,"image":1513},"devops-modernization",[1507,1306],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1510,"config":1511},"Obtenez votre score de maturité DevOps",{"href":1512,"dataGaName":1500,"dataGaLocation":972},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1514},{"src":1515},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1517,"categories":1518,"header":1520,"text":1495,"button":1521,"image":1525},"security-modernization",[1519],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1522,"config":1523},"Obtenez votre score de maturité en matière de sécurité",{"href":1524,"dataGaName":1500,"dataGaLocation":972},"/fr-fr/assessments/security-modernization-assessment/",{"config":1526},{"src":1527},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1529,"paths":1530,"header":1533,"text":1534,"button":1535,"image":1540},"github-azure-migration",[1531,1532],"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":1536,"config":1537},"Découvrez les différences entre GitLab et GitHub",{"href":1538,"dataGaName":1539,"dataGaLocation":972},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1541},{"src":1515},{"header":1543,"blurb":1544,"button":1545,"secondaryButton":1549},"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":767,"config":1546},{"href":1547,"dataGaName":770,"dataGaLocation":1548},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1094,"config":1550},{"href":1096,"dataGaName":775,"dataGaLocation":1548},1786803764215]