[{"data":1,"prerenderedAt":1197},["ShallowReactive",2],{"/fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance":3,"navigation-fr-fr":415,"banner-fr-fr":850,"footer-fr-fr":858,"blog-post-authors-fr-fr-Cesar Saavedra":1096,"blog-related-posts-fr-fr-use-gitlab-duo-workflow-to-improve-application-quality-assurance":1111,"blog-promotions-fr-fr":1136,"next-steps-fr-fr":1188},{"id":4,"title":5,"authors":6,"body":8,"category":390,"date":391,"description":392,"extension":393,"externalUrl":394,"faq":394,"featured":395,"heroImage":396,"meta":397,"navigation":398,"path":399,"seo":400,"slug":404,"stem":405,"tags":406,"template":412,"updatedDate":413,"__hash__":414},"blogPosts/fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance.md","GitLab Duo Workflow : améliorez l'assurance qualité de vos applications ",[7],"Cesar Saavedra",{"type":9,"value":10,"toc":383},"minimark",[11,35,46,51,61,68,81,96,102,108,179,185,195,201,228,234,243,249,252,261,265,275,281,287,295,306,312,316,319,322,335,345,349,379],[12,13,14,15,21,22,28,29,34],"p",{},"Garantir la qualité de vos applications en vous appuyant sur une approche de conception pilotée par les tests, une bonne couverture de code et une détection précoce des anomalies est essentiel pour vos clients et pour votre réputation. Pourtant, ces processus peuvent rapidement devenir chronophages. Avec ",[16,17,20],"a",{"href":18,"rel":19},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/",[],"GitLab Duo Workflow",", l'IA agentique développée sur la plateforme ",[16,23,27],{"href":24,"rel":25,"title":26},"https://about.gitlab.com/fr-fr/topics/devsecops/",[],"Qu'est-ce que le DevSecOps ? ","DevSecOps"," la plus complète, vous pouvez réaliser rapidement des tâches clés au cours de votre cycle de développement logiciel. Découvrez dans ce tutoriel comment ajouter des tests unitaires à une application Java sur la base de ce ",[16,30,33],{"href":31,"rel":32},"https://gitlab.com/gitlab-da/playground/csaavedra/gdw/prodmgr-gdw",[],"projet Java"," qui nous servira d'exemple.",[36,37,38],"blockquote",{},[12,39,40,41,45],{},"GitLab Duo Workflow est actuellement proposé en version bêta privée. Inscrivez-vous sur la ",[16,42,44],{"href":18,"rel":43},[],"liste d'attente"," pour découvrir ce qu'il est possible de faire avec des agents d'IA qui comprennent l'ensemble de votre cycle de développement logiciel.",[47,48,50],"h2",{"id":49},"ouverture-de-votre-projet-dans-vscode","Ouverture de votre projet dans VS Code",[52,53,54,58],"ol",{},[55,56,57],"li",{},"Commencez par cloner votre projet Java sur votre ordinateur local, puis ouvrez-le dans Visual Studio Code. Assurez-vous d'utiliser une branche de fonctionnalité (et non pas la branche principale ou par défaut). Si vous travaillez déjà sur une merge request, celle-ci doit être associée à sa propre branche de fonctionnalité.",[55,59,60],{},"(Étape facultative.) Accédez au fichier contenant la classe Java pour laquelle vous souhaitez que GitLab Duo Workflow crée des tests unitaires. Inspectez-le afin de pouvoir confirmer ultérieurement que les tests unitaires générés couvrent bien les éléments de cette classe. Voici ce que vous verrez :",[12,62,63],{},[64,65],"img",{"alt":66,"src":67},"Fichier qui définit la classe Java pour laquelle vous souhaitez que GitLab Duo Workflow crée des tests unitaires","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097627/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097627482.png",[12,69,70,74,75,80],{},[71,72,73],"strong",{},"Remarque"," : ce tutoriel suppose que vous avez déjà installé l'extension GitLab Duo Workflow et que vous l'avez activée dans votre VS Code. Si ce n'est pas le cas, veuillez vous référer à la ",[16,76,79],{"href":77,"rel":78},"https://docs.gitlab.com/user/duo_agent_platform/#use-workflow-in-vs-code",[],"documentation d'installation",".",[52,82,84],{"start":83},3,[55,85,86,87,91,92,95],{},"Lancez GitLab Duo Workflow en ouvrant la palette de commandes de VS Code ",[88,89,90],"span",{},"Ctrl + Shift + P",". Saisissez « GitLab Duo Workflow », puis sélectionnez ",[71,93,94],{},"GitLab : afficher GitLab Duo Workflow",". Un onglet apparaîtra alors, comme suit :",[12,97,98],{},[64,99],{"alt":100,"src":101},"Lancement de GitLab Duo Workflow avec VS Code","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097627483.png",[52,103,105],{"start":104},4,[55,106,107],{},"L'étape suivante consiste à ajouter des tests pour tester le constructeur par défaut, vérifier la création de l'objet et tester l'état initial des propriétés de la classe « Product » Java. Pour ce faire, saisissez le prompt suivant dans la zone de texte de GitLab Duo Workflow :",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-sql shiki shiki-themes github-light","Create unit tests for class defined in the Product.java file and store the unit tests in its own file titled ProductTest.java\n","sql","",[116,117,118],"code",{"__ignoreMap":114},[88,119,122,126,130,133,136,139,142,146,148,151,154,157,160,162,165,168,171,174,176],{"class":120,"line":121},"line",1,[88,123,125],{"class":124},"sD7c4","Create",[88,127,129],{"class":128},"sgsFI"," unit tests ",[88,131,132],{"class":124},"for",[88,134,135],{"class":128}," class defined ",[88,137,138],{"class":124},"in",[88,140,141],{"class":128}," the ",[88,143,145],{"class":144},"sYu0t","Product",[88,147,80],{"class":128},[88,149,150],{"class":144},"java",[88,152,153],{"class":124}," file",[88,155,156],{"class":124}," and",[88,158,159],{"class":128}," store the unit tests ",[88,161,138],{"class":124},[88,163,164],{"class":128}," its own ",[88,166,167],{"class":124},"file",[88,169,170],{"class":128}," titled ",[88,172,173],{"class":144},"ProductTest",[88,175,80],{"class":128},[88,177,178],{"class":144},"java\n",[12,180,181],{},[64,182],{"alt":183,"src":184},"Zone du prompt dans GitLab Duo Workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097627484.png",[52,186,188],{"start":187},5,[55,189,190,191,194],{},"Cliquez sur le bouton ",[71,192,193],{},"Démarrer"," dans la fenêtre GitLab Duo Workflow. Deux nouvelles fenêtres apparaissent alors : une au centre de l'écran et une à droite. Celle de droite affiche l'analyse que GitLab Duo Workflow a effectuée pour proposer un plan d'action qui permettra d'atteindre l'objectif spécifié dans votre prompt. Le plan d'action détaillé est affiché dans la fenêtre centrale. Une fois l'analyse terminée et le plan d'action élaboré, vous obtenez les données de sortie suivantes :",[12,196,197],{},[64,198],{"alt":199,"src":200},"Analyse et plan d'action générés par GitLab Duo Workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097627/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097627486.png",[52,202,204,211,214],{"start":203},6,[55,205,206,207,210],{},"Si l'analyse et le plan d'action vous conviennent, cliquez sur ",[71,208,209],{},"Approuver le plan"," en bas de la fenêtre.",[55,212,213],{},"Une fois votre plan d'action approuvé, GitLab Duo Workflow exécute les modifications nécessaires dans votre projet.",[55,215,216,217,220,221,224,225,80],{},"Vous voyez alors s'afficher un nouveau répertoire ",[116,218,219],{},"src/test/java/csaa/jspring/ProductManager"," contenant un nouveau fichier nommé ",[116,222,223],{},"ProductTest.java",", lequel regroupe tous les tests unitaires pour la classe ",[116,226,227],{},"Product.java",[12,229,230],{},[64,231],{"alt":232,"src":233},"Nouveau répertoire dans le projet avec un nouveau nom de fichier ProductTest.java","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750097627488.png",[52,235,237],{"start":236},9,[55,238,239,240,242],{},"En consultant ce fichier ",[116,241,223],{},", vous remarquerez qu'il contient des déclarations d'importation soulignées en rouge indiquant des erreurs d'importation :",[12,244,245],{},[64,246],{"alt":247,"src":248},"ProductTest.java inclut des déclarations d'importation en rouge indiquant des erreurs","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097627489.png",[12,250,251],{},"Demandons alors à GitLab Duo Workflow de les corriger à notre place.",[12,253,254,256,257,260],{},[71,255,73],{}," : nous aurions également pu demander à GitLab Duo Workflow dans notre premier prompt de mettre à jour le fichier ",[116,258,259],{},"pom.xml",". Comme nous ne l'avons pas fait, nous allons donc corriger ces erreurs dans un nouveau workflow.",[47,262,264],{"id":263},"correction-des-erreurs-dans-le-code-généré-avec-gitlabduoworkflow","Correction des erreurs dans le code généré avec GitLab Duo Workflow",[52,266,268],{"start":267},10,[55,269,270,271,274],{},"Démarrez un nouveau workflow en cliquant sur le bouton ",[71,272,273],{},"Nouveau workflow"," en bas de la fenêtre d'analyse sur le côté droit de votre écran.",[12,276,277],{},[64,278],{"alt":279,"src":280},"Bouton Nouveau workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097627491.png",[52,282,284],{"start":283},11,[55,285,286],{},"Saisissez le prompt suivant :",[109,288,293],{"className":289,"code":291,"language":292,"meta":114},[290],"language-text","The file ProductTest.java has an error “The import org.junit cannot be resolved”. Please fix it\n","text",[116,294,291],{"__ignoreMap":114},[52,296,298],{"start":297},12,[55,299,300,301,303,304,80],{},"Approuvez le plan d'action proposé pour que GitLab Duo Workflow commence son analyse en lisant votre fichier ",[116,302,259],{}," actuel, puis l'édite et supprime la dépendance JUnit obsolète en la remplaçant par la dépendance et la version correctes de JUnit. Enfin, GitLab Duo Workflow élimine toutes les erreurs de dépendance dans le fichier ",[116,305,223],{},[12,307,308],{},[64,309],{"alt":310,"src":311},"GitLab Duo Workflow effectuant une analyse en lisant le fichier pom.xml","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097627/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097627492.png",[47,313,315],{"id":314},"tutoriel-vidéo","Tutoriel vidéo",[12,317,318],{},"En exécutant le plan d'action proposé, GitLab Duo Workflow met concrètement à jour votre projet afin de réaliser ce que vous lui avez demandé dans le prompt. Il vous aide à gagner un temps précieux, en toute simplicité, et augmente la productivité de votre équipe : vos équipes de développement peuvent ainsi consacrer plus de temps à innover et à créer de la valeur.",[12,320,321],{},"Pour découvrir ce guide étape par étape en action, regardez la vidéo du tutoriel :",[323,324,327,328],"figure",{"className":325},[326],"video_container","\n  ",[329,330,334],"iframe",{"src":331,"frameBorder":332,"allowFullScreen":333},"https://www.youtube.com/embed/Tuj7TgqY81Q?si=RReuL1pUsLafvAzs","0","true"," ",[36,336,337],{},[12,338,339,340,45],{},"Inscrivez-vous à la ",[16,341,344],{"href":18,"rel":342,"title":343},[],"Version bêta privée de GitLab Duo Workflow","version bêta privée de GitLab Duo Workflow",[47,346,348],{"id":347},"en-savoir-plus-sur-gitlabduoworkflow-et-lia-agentique","En savoir plus sur GitLab Duo Workflow et l'IA agentique",[350,351,352,359,366,372],"ul",{},[55,353,354],{},[16,355,358],{"href":356,"rel":357},"https://about.gitlab.com/fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/",[],"GitLab Duo Workflow : une IA agentique offrant visibilité et contrôle à l'échelle de l'entreprise",[55,360,361],{},[16,362,365],{"href":363,"rel":364},"https://docs.gitlab.com/user/duo_agent_platform/",[],"Documentation GitLab Duo Workflow",[55,367,368],{},[16,369,371],{"href":18,"rel":370},[],"GitLab Duo",[55,373,374],{},[16,375,378],{"href":376,"rel":377},"https://about.gitlab.com/the-source/ai/agentic-ai-unlocking-developer-potential-at-scale/",[],"IA agentique : libérez le potentiel des développeurs à grande échelle (The Source)",[380,381,382],"style",{},"html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":114,"searchDepth":384,"depth":384,"links":385},2,[386,387,388,389],{"id":49,"depth":384,"text":50},{"id":263,"depth":384,"text":264},{"id":314,"depth":384,"text":315},{"id":347,"depth":384,"text":348},"ai","2025-04-10","Découvrez étape par étape comment ajouter des tests unitaires à une application Java à l'aide de l'IA agentique.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097617/Blog/Hero%20Images/Blog/Hero%20Images/Workflow%201800x945_2gQoQIbY9NvjLFpXtsxtXy_1750097616649.png",{},true,"/fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance",{"title":5,"description":392,"ogTitle":5,"ogDescription":392,"noIndex":395,"ogImage":396,"ogUrl":401,"ogSiteName":402,"ogType":403,"canonicalUrls":401},"https://about.gitlab.com/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance","https://about.gitlab.com","article","use-gitlab-duo-workflow-to-improve-application-quality-assurance","fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance",[407,408,409,410,411],"AI","DevSecOps platform","tutorial","product","features","BlogPost","2025-04-29","0VStc4VIql1CFzTM_NXudbKFhrLGeQhXdFZ6uNb1T64",{"logo":416,"freeTrial":421,"sales":426,"login":431,"items":436,"search":765,"minimal":801,"duo":820,"switchNav":829,"pricingDeployment":840},{"config":417},{"href":418,"dataGaName":419,"dataGaLocation":420},"/fr-fr/","gitlab logo","header",{"text":422,"config":423},"Commencer un essai gratuit",{"href":424,"dataGaName":425,"dataGaLocation":420},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":427,"config":428},"Demander une démo",{"href":429,"dataGaName":430,"dataGaLocation":420},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":432,"config":433},"Connexion",{"href":434,"dataGaName":435,"dataGaLocation":420},"https://gitlab.com/users/sign_in/","sign in",[437,466,568,573,687,743],{"text":438,"config":439,"menu":441},"Plateforme",{"dataNavLevelOne":440},"platform",{"type":442,"columns":443},"cards",[444,450,458],{"title":438,"description":445,"link":446},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":447,"config":448},"Explorer notre plateforme",{"href":449,"dataGaName":440,"dataGaLocation":420},"/fr-fr/platform/",{"title":451,"description":452,"link":453},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":454,"config":455},"Découvrir GitLab Duo",{"href":456,"dataGaName":457,"dataGaLocation":420},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":459,"description":460,"link":461},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":462,"config":463},"En savoir plus",{"href":464,"dataGaName":465,"dataGaLocation":420},"/fr-fr/why-gitlab/","why gitlab",{"text":467,"left":398,"config":468,"menu":470},"Produit",{"dataNavLevelOne":469},"solutions",{"type":471,"link":472,"columns":476,"feature":547},"lists",{"text":473,"config":474},"Voir toutes les solutions",{"href":475,"dataGaName":469,"dataGaLocation":420},"/fr-fr/solutions/",[477,502,525],{"title":478,"description":479,"link":480,"items":485},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":481},{"icon":482,"href":483,"dataGaName":484,"dataGaLocation":420},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[486,490,493,498],{"text":487,"config":488},"CI/CD",{"href":489,"dataGaLocation":420,"dataGaName":487},"/fr-fr/solutions/continuous-integration/",{"text":451,"config":491},{"href":456,"dataGaLocation":420,"dataGaName":492},"gitlab duo agent platform - product menu",{"text":494,"config":495},"Gestion du code source",{"href":496,"dataGaLocation":420,"dataGaName":497},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":499,"config":500},"Livraison de logiciels automatisée",{"href":483,"dataGaLocation":420,"dataGaName":501},"Automated software delivery",{"title":503,"description":504,"link":505,"items":510},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":506},{"href":507,"dataGaName":508,"dataGaLocation":420,"icon":509},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[511,515,520],{"text":512,"config":513},"Tests de sécurité des applications",{"href":507,"dataGaName":514,"dataGaLocation":420},"Application security testing",{"text":516,"config":517},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":518,"dataGaLocation":420,"dataGaName":519},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":521,"config":522},"Conformité logicielle",{"href":523,"dataGaName":524,"dataGaLocation":420},"/fr-fr/solutions/software-compliance/","software compliance",{"title":526,"link":527,"items":532},"Mesures",{"config":528},{"icon":529,"href":530,"dataGaName":531,"dataGaLocation":420},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[533,537,542],{"text":534,"config":535},"Visibilité et mesures",{"href":530,"dataGaLocation":420,"dataGaName":536},"Visibility and Measurement",{"text":538,"config":539},"Gestion de la chaîne de valeur",{"href":540,"dataGaLocation":420,"dataGaName":541},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":543,"config":544},"Analyses et informations",{"href":545,"dataGaLocation":420,"dataGaName":546},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":548,"type":471,"items":549},"GitLab",[550,556,562],{"text":551,"config":552},"Entreprises",{"icon":553,"href":554,"dataGaLocation":420,"dataGaName":555},"Building","/fr-fr/enterprise/","enterprise",{"text":557,"config":558},"Pour les PME",{"icon":559,"href":560,"dataGaLocation":420,"dataGaName":561},"Work","/fr-fr/small-business/","small business",{"text":563,"config":564},"Pour le secteur public",{"icon":565,"href":566,"dataGaLocation":420,"dataGaName":567},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":569,"config":570},"Tarifs",{"href":571,"dataGaName":572,"dataGaLocation":420,"dataNavLevelOne":572},"/fr-fr/pricing/","pricing",{"text":574,"config":575,"menu":577},"Ressources",{"dataNavLevelOne":576},"resources",{"type":471,"link":578,"columns":582,"feature":676},{"text":579,"config":580},"Afficher toutes les ressources",{"href":581,"dataGaName":576,"dataGaLocation":420},"/fr-fr/resources/",[583,616,643],{"title":584,"items":585},"Premiers pas",[586,591,596,601,606,611],{"text":587,"config":588},"Installation",{"href":589,"dataGaName":590,"dataGaLocation":420},"/fr-fr/install/","install",{"text":592,"config":593},"Guides de démarrage",{"href":594,"dataGaName":595,"dataGaLocation":420},"/fr-fr/get-started/","quick setup checklists",{"text":597,"config":598},"Apprentissage",{"href":599,"dataGaLocation":420,"dataGaName":600},"https://university.gitlab.com/","learn",{"text":602,"config":603},"Documentation",{"href":604,"dataGaName":605,"dataGaLocation":420},"https://docs.gitlab.com/","product documentation",{"text":607,"config":608},"Vidéos sur les bonnes pratiques",{"href":609,"dataGaName":610,"dataGaLocation":420},"/fr-fr/getting-started-videos/","best practice videos",{"text":612,"config":613},"Intégrations",{"href":614,"dataGaName":615,"dataGaLocation":420},"/fr-fr/integrations/","integrations",{"title":617,"items":618},"Découvrir",[619,624,629,634,638],{"text":620,"config":621},"Témoignages clients",{"href":622,"dataGaName":623,"dataGaLocation":420},"/fr-fr/customers/","customer success stories",{"text":625,"config":626},"Blog",{"href":627,"dataGaName":628,"dataGaLocation":420},"/fr-fr/blog/","blog",{"text":630,"config":631},"Demo Hub",{"href":632,"dataGaName":633,"dataGaLocation":420},"/fr-fr/demo-hub/","demo hub",{"text":635,"config":636},"The Source",{"href":637,"dataGaName":628,"dataGaLocation":420},"/fr-fr/the-source/",{"text":639,"config":640},"Travail à distance",{"href":641,"dataGaName":642,"dataGaLocation":420},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":644,"items":645},"Connecter",[646,651,656,661,666,671],{"text":647,"config":648},"Services GitLab",{"href":649,"dataGaName":650,"dataGaLocation":420},"/fr-fr/services/","services",{"text":652,"config":653},"Contribuer",{"href":654,"dataGaName":655,"dataGaLocation":420},"https://contributors.gitlab.com","contribute",{"text":657,"config":658},"Communauté",{"href":659,"dataGaName":660,"dataGaLocation":420},"/community/","community",{"text":662,"config":663},"Forum",{"href":664,"dataGaName":665,"dataGaLocation":420},"https://forum.gitlab.com/","forum",{"text":667,"config":668},"Événements",{"href":669,"dataGaName":670,"dataGaLocation":420},"/events/","events",{"text":672,"config":673},"Partenaires",{"href":674,"dataGaName":675,"dataGaLocation":420},"/fr-fr/partners/","partners",{"config":677,"title":680,"text":681,"link":682},{"background":678,"textColor":679},"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":683,"config":684},"Lire les articles les plus récents",{"href":685,"dataGaName":686,"dataGaLocation":420},"/fr-fr/whats-new/","whats new",{"text":688,"config":689,"menu":691},"Société",{"dataNavLevelOne":690},"company",{"type":471,"columns":692},[693],{"items":694},[695,700,706,708,713,718,723,728,733,738],{"text":696,"config":697},"À propos",{"href":698,"dataGaName":699,"dataGaLocation":420},"/fr-fr/company/","about",{"text":701,"config":702,"footerGa":705},"Carrières",{"href":703,"dataGaName":704,"dataGaLocation":420},"/jobs/","jobs",{"dataGaName":704},{"text":667,"config":707},{"href":669,"dataGaName":670,"dataGaLocation":420},{"text":709,"config":710},"Leadership",{"href":711,"dataGaName":712,"dataGaLocation":420},"/company/team/e-group/","leadership",{"text":714,"config":715},"Manuel",{"href":716,"dataGaName":717,"dataGaLocation":420},"https://handbook.gitlab.com/","handbook",{"text":719,"config":720},"Relations avec les investisseurs",{"href":721,"dataGaName":722,"dataGaLocation":420},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":724,"config":725},"Trust Center",{"href":726,"dataGaName":727,"dataGaLocation":420},"/fr-fr/security/","trust center",{"text":729,"config":730},"Centre pour la transparence de l'IA",{"href":731,"dataGaName":732,"dataGaLocation":420},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":734,"config":735},"Newsletter",{"href":736,"dataGaName":737,"dataGaLocation":420},"/company/contact/#contact-forms","newsletter",{"text":739,"config":740},"Presse",{"href":741,"dataGaName":742,"dataGaLocation":420},"/press/","press",{"text":744,"config":745,"menu":746},"Nous contacter",{"dataNavLevelOne":690},{"type":471,"columns":747},[748],{"items":749},[750,755,760],{"text":751,"config":752},"Contacter l'équipe commerciale",{"href":753,"dataGaName":754,"dataGaLocation":420},"/fr-fr/sales/","talk to sales",{"text":756,"config":757},"Assistance GitLab",{"href":758,"dataGaName":759,"dataGaLocation":420},"https://support.gitlab.com/hc/en-us","support portal",{"text":761,"config":762},"Portail clients GitLab",{"href":763,"dataGaName":764,"dataGaLocation":420},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":766,"login":767,"suggestions":774},"Fermer",{"text":768,"link":769},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":770,"config":771},"GitLab.com",{"href":434,"dataGaName":772,"dataGaLocation":773},"search login","search",{"text":775,"default":776},"Suggestions",[777,780,785,787,792,797],{"text":451,"config":778},{"href":456,"dataGaName":779,"dataGaLocation":773},"GitLab Duo Agent Platform",{"text":781,"config":782},"Suggestions de code (IA)",{"href":783,"dataGaName":784,"dataGaLocation":773},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":487,"config":786},{"href":489,"dataGaName":487,"dataGaLocation":773},{"text":788,"config":789},"GitLab sur AWS",{"href":790,"dataGaName":791,"dataGaLocation":773},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":793,"config":794},"GitLab sur Google Cloud",{"href":795,"dataGaName":796,"dataGaLocation":773},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":798,"config":799},"Pourquoi utiliser GitLab ?",{"href":464,"dataGaName":800,"dataGaLocation":773},"Why GitLab?",{"freeTrial":802,"mobileIcon":807,"desktopIcon":812,"secondaryButton":815},{"text":803,"config":804},"Commencer votre essai gratuit",{"href":805,"dataGaName":425,"dataGaLocation":806},"https://gitlab.com/-/trials/new/","nav",{"altText":808,"config":809},"Icône GitLab",{"src":810,"dataGaName":811,"dataGaLocation":806},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":808,"config":813},{"src":814,"dataGaName":811,"dataGaLocation":806},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":816,"config":817},"Commencer",{"href":818,"dataGaName":819,"dataGaLocation":806},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":821,"mobileIcon":825,"desktopIcon":827},{"text":822,"config":823},"En savoir plus sur GitLab Duo",{"href":456,"dataGaName":824,"dataGaLocation":806},"gitlab duo",{"altText":808,"config":826},{"src":810,"dataGaName":811,"dataGaLocation":806},{"altText":808,"config":828},{"src":814,"dataGaName":811,"dataGaLocation":806},{"button":830,"mobileIcon":835,"desktopIcon":837},{"text":831,"config":832},"/switch",{"href":833,"dataGaName":834,"dataGaLocation":806},"#contact","switch",{"altText":808,"config":836},{"src":810,"dataGaName":811,"dataGaLocation":806},{"altText":808,"config":838},{"src":839,"dataGaName":811,"dataGaLocation":806},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":841,"mobileIcon":846,"desktopIcon":848},{"text":842,"config":843},"Retour aux tarifs",{"href":571,"dataGaName":844,"dataGaLocation":806,"icon":845},"back to pricing","GoBack",{"altText":808,"config":847},{"src":810,"dataGaName":811,"dataGaLocation":806},{"altText":808,"config":849},{"src":814,"dataGaName":811,"dataGaLocation":806},{"title":851,"button":852,"config":856},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":462,"config":853},{"href":854,"dataGaName":855,"dataGaLocation":420},"/fr-fr/gitlab-orbit/","orbit",{"layout":857,"disabled":395},"release",{"data":859},{"text":860,"source":861,"edit":867,"contribute":872,"config":876,"items":881,"minimal":1088},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":862,"config":863},"Afficher le code source de la page",{"href":864,"dataGaName":865,"dataGaLocation":866},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":868,"config":869},"Modifier cette page",{"href":870,"dataGaName":871,"dataGaLocation":866},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":652,"config":873},{"href":874,"dataGaName":875,"dataGaLocation":866},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":877,"facebook":878,"youtube":879,"linkedin":880},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[882,928,980,1023,1055],{"title":569,"links":883,"subMenu":898},[884,888,893],{"text":885,"config":886},"Voir les forfaits",{"href":571,"dataGaName":887,"dataGaLocation":866},"view plans",{"text":889,"config":890},"GitLab Premium",{"href":891,"dataGaName":892,"dataGaLocation":866},"/fr-fr/pricing/premium/","why premium",{"text":894,"config":895},"GitLab Ultimate",{"href":896,"dataGaName":897,"dataGaLocation":866},"/fr-fr/pricing/ultimate/","why ultimate",[899],{"title":744,"links":900},[901,903,905,908,913,918,923],{"text":751,"config":902},{"href":753,"dataGaName":430,"dataGaLocation":866},{"text":756,"config":904},{"href":758,"dataGaName":759,"dataGaLocation":866},{"text":906,"config":907},"Portail clients",{"href":763,"dataGaName":764,"dataGaLocation":866},{"text":909,"config":910},"Statut",{"href":911,"dataGaName":912,"dataGaLocation":866},"https://status.gitlab.com/","status",{"text":914,"config":915},"Conditions d'utilisation",{"href":916,"dataGaName":917,"dataGaLocation":866},"/terms/","terms of use",{"text":919,"config":920},"Politique de confidentialité",{"href":921,"dataGaName":922,"dataGaLocation":866},"/fr-fr/privacy/","privacy statement",{"text":924,"config":925},"Gestion des cookies",{"dataGaName":926,"dataGaLocation":866,"id":927,"isOneTrustButton":398},"cookie preferences","ot-sdk-btn",{"title":467,"links":929,"subMenu":938},[930,934],{"text":931,"config":932},"Plateforme DevSecOps",{"href":449,"dataGaName":933,"dataGaLocation":866},"devsecops platform",{"text":935,"config":936},"Développement assisté par l'IA",{"href":456,"dataGaName":937,"dataGaLocation":866},"ai-assisted development",[939],{"title":940,"links":941},"Thèmes",[942,946,951,956,961,965,970,975],{"text":487,"config":943},{"href":944,"dataGaName":945,"dataGaLocation":866},"/fr-fr/topics/ci-cd/","cicd",{"text":947,"config":948},"GitOps",{"href":949,"dataGaName":950,"dataGaLocation":866},"/fr-fr/topics/gitops/","gitops",{"text":952,"config":953},"DevOps",{"href":954,"dataGaName":955,"dataGaLocation":866},"/fr-fr/topics/devops/","devops",{"text":957,"config":958},"Contrôle de version",{"href":959,"dataGaName":960,"dataGaLocation":866},"/fr-fr/topics/version-control/","version control",{"text":27,"config":962},{"href":963,"dataGaName":964,"dataGaLocation":866},"/fr-fr/topics/devsecops/","devsecops",{"text":966,"config":967},"Cloud-native",{"href":968,"dataGaName":969,"dataGaLocation":866},"/fr-fr/topics/cloud-native/","cloud native",{"text":971,"config":972},"IA pour la programmation",{"href":973,"dataGaName":974,"dataGaLocation":866},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":976,"config":977},"IA agentique",{"href":978,"dataGaName":979,"dataGaLocation":866},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":981,"links":982},"Solutions",[983,986,988,993,996,999,1002,1005,1007,1010,1013,1018],{"text":512,"config":984},{"href":507,"dataGaName":985,"dataGaLocation":866},"Application Security Testing",{"text":499,"config":987},{"href":483,"dataGaName":484,"dataGaLocation":866},{"text":989,"config":990},"Développement Agile",{"href":991,"dataGaName":992,"dataGaLocation":866},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":494,"config":994},{"href":496,"dataGaName":995,"dataGaLocation":866},"source code management",{"text":487,"config":997},{"href":489,"dataGaName":998,"dataGaLocation":866},"continuous integration & delivery",{"text":538,"config":1000},{"href":540,"dataGaName":1001,"dataGaLocation":866},"value stream management",{"text":947,"config":1003},{"href":1004,"dataGaName":950,"dataGaLocation":866},"/fr-fr/solutions/gitops/",{"text":551,"config":1006},{"href":554,"dataGaName":555,"dataGaLocation":866},{"text":1008,"config":1009},"PME",{"href":560,"dataGaName":561,"dataGaLocation":866},{"text":1011,"config":1012},"Secteur public",{"href":566,"dataGaName":567,"dataGaLocation":866},{"text":1014,"config":1015},"Éducation",{"href":1016,"dataGaName":1017,"dataGaLocation":866},"/fr-fr/solutions/education/","education",{"text":1019,"config":1020},"Services financiers",{"href":1021,"dataGaName":1022,"dataGaLocation":866},"/fr-fr/solutions/finance/","financial services",{"title":574,"links":1024},[1025,1027,1029,1031,1034,1036,1039,1041,1043,1045,1047,1049,1051,1053],{"text":587,"config":1026},{"href":589,"dataGaName":590,"dataGaLocation":866},{"text":592,"config":1028},{"href":594,"dataGaName":595,"dataGaLocation":866},{"text":597,"config":1030},{"href":599,"dataGaName":600,"dataGaLocation":866},{"text":602,"config":1032},{"href":604,"dataGaName":1033,"dataGaLocation":866},"docs",{"text":625,"config":1035},{"href":627,"dataGaName":628,"dataGaLocation":866},{"text":1037,"config":1038},"Nouveautés",{"href":685,"dataGaName":686,"dataGaLocation":866},{"text":620,"config":1040},{"href":622,"dataGaName":623,"dataGaLocation":866},{"text":639,"config":1042},{"href":641,"dataGaName":642,"dataGaLocation":866},{"text":647,"config":1044},{"href":649,"dataGaName":650,"dataGaLocation":866},{"text":652,"config":1046},{"href":654,"dataGaName":655,"dataGaLocation":866},{"text":657,"config":1048},{"href":659,"dataGaName":660,"dataGaLocation":866},{"text":662,"config":1050},{"href":664,"dataGaName":665,"dataGaLocation":866},{"text":667,"config":1052},{"href":669,"dataGaName":670,"dataGaLocation":866},{"text":672,"config":1054},{"href":674,"dataGaName":675,"dataGaLocation":866},{"title":688,"links":1056},[1057,1059,1061,1063,1065,1067,1072,1077,1079,1081,1083],{"text":696,"config":1058},{"href":698,"dataGaName":690,"dataGaLocation":866},{"text":701,"config":1060},{"href":703,"dataGaName":704,"dataGaLocation":866},{"text":709,"config":1062},{"href":711,"dataGaName":712,"dataGaLocation":866},{"text":714,"config":1064},{"href":716,"dataGaName":717,"dataGaLocation":866},{"text":719,"config":1066},{"href":721,"dataGaName":722,"dataGaLocation":866},{"text":1068,"config":1069},"Développement durable",{"href":1070,"dataGaName":1071,"dataGaLocation":866},"/sustainability/","Sustainability",{"text":1073,"config":1074},"Diversité, inclusion et appartenance (DIB)",{"href":1075,"dataGaName":1076,"dataGaLocation":866},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":724,"config":1078},{"href":726,"dataGaName":727,"dataGaLocation":866},{"text":734,"config":1080},{"href":736,"dataGaName":737,"dataGaLocation":866},{"text":739,"config":1082},{"href":741,"dataGaName":742,"dataGaLocation":866},{"text":1084,"config":1085},"Déclaration de transparence sur l'esclavage moderne",{"href":1086,"dataGaName":1087,"dataGaLocation":866},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1089},[1090,1092,1094],{"text":914,"config":1091},{"href":916,"dataGaName":917,"dataGaLocation":866},{"text":924,"config":1093},{"dataGaName":926,"dataGaLocation":866,"id":927,"isOneTrustButton":398},{"text":919,"config":1095},{"href":921,"dataGaName":922,"dataGaLocation":866},[1097],{"id":1098,"title":7,"body":394,"config":1099,"content":1101,"description":394,"extension":1105,"meta":1106,"navigation":398,"path":1107,"seo":1108,"stem":1109,"__hash__":1110},"blogAuthors/en-us/blog/authors/cesar-saavedra.yml",{"template":1100},"BlogAuthor",{"name":7,"config":1102},{"headshot":1103,"ctfId":1104},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659600/Blog/Author%20Headshots/csaavedra1-headshot.jpg","csaavedra1","yml",{},"/en-us/blog/authors/cesar-saavedra",{},"en-us/blog/authors/cesar-saavedra","SMqRf-z0W5m5GROz_dXGjmuIb3YaOwm_n_RfeK16GcA",[1112,1120,1128],{"title":1113,"description":1114,"heroImage":1115,"category":390,"date":1116,"authors":1117,"slug":1119,"externalUrl":394},"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",[1118],"Michael Friedrich","modernize-java-with-cursor-and-gitlab",{"title":1121,"description":1122,"heroImage":1123,"category":390,"date":1124,"authors":1125,"slug":1127,"externalUrl":394},"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",[1126],"Sam Wiskow","ai-agents-for-migrating-rate-limiting-system",{"title":1129,"description":1130,"heroImage":1131,"category":390,"date":1132,"authors":1133,"slug":1135,"externalUrl":394},"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",[1134],"Jessica Taylor","agentic-coding-only-as-good-as-context",{"promotions":1137},[1138,1151,1162,1174],{"id":1139,"categories":1140,"header":1141,"text":1142,"button":1143,"image":1148},"ai-modernization",[390],"L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1144,"config":1145},"Obtenez votre score de maturité IA",{"href":1146,"dataGaName":1147,"dataGaLocation":628},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1149},{"src":1150},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1152,"categories":1153,"header":1154,"text":1142,"button":1155,"image":1159},"devops-modernization",[410,964],"Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1156,"config":1157},"Obtenez votre score de maturité DevOps",{"href":1158,"dataGaName":1147,"dataGaLocation":628},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1160},{"src":1161},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1163,"categories":1164,"header":1166,"text":1142,"button":1167,"image":1171},"security-modernization",[1165],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1168,"config":1169},"Obtenez votre score de maturité en matière de sécurité",{"href":1170,"dataGaName":1147,"dataGaLocation":628},"/fr-fr/assessments/security-modernization-assessment/",{"config":1172},{"src":1173},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1175,"paths":1176,"header":1179,"text":1180,"button":1181,"image":1186},"github-azure-migration",[1177,1178],"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":1182,"config":1183},"Découvrez les différences entre GitLab et GitHub",{"href":1184,"dataGaName":1185,"dataGaLocation":628},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1187},{"src":1161},{"header":1189,"blurb":1190,"button":1191,"secondaryButton":1195},"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":422,"config":1192},{"href":1193,"dataGaName":425,"dataGaLocation":1194},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":751,"config":1196},{"href":753,"dataGaName":430,"dataGaLocation":1194},1786803764212]