[{"data":1,"prerenderedAt":1893},["ShallowReactive",2],{"/fr-fr/blog/claude-code-and-gitlab":3,"navigation-fr-fr":1135,"banner-fr-fr":1561,"footer-fr-fr":1570,"blog-post-authors-fr-fr-Michael Friedrich":1815,"blog-related-posts-fr-fr-claude-code-and-gitlab":1830,"blog-promotions-fr-fr":1831,"next-steps-fr-fr":1884},{"id":4,"title":5,"authors":6,"body":8,"category":1114,"date":1115,"description":1116,"extension":1117,"externalUrl":1118,"featured":1119,"heroImage":1120,"meta":1121,"navigation":147,"path":1122,"seo":1123,"slug":1127,"stem":1128,"tags":1129,"template":1133,"updatedDate":1118,"__hash__":1134},"blogPosts/fr-fr/blog/claude-code-and-gitlab.md","Claude Code et GitLab : trois workflows du code à la production",[7],"Michael Friedrich",{"type":9,"value":10,"toc":1099},"minimark",[11,15,18,21,24,37,42,80,85,88,107,155,158,170,174,181,188,201,214,220,229,353,356,365,375,378,381,411,420,426,432,435,448,452,455,462,466,475,485,496,523,533,551,554,573,579,588,591,595,602,611,618,624,627,636,643,649,652,673,676,682,685,694,701,707,710,716,720,729,735,743,758,772,778,781,790,793,799,802,826,832,835,841,845,849,861,1007,1016,1025,1034,1038,1041,1044,1047,1058,1061,1095],[12,13,14],"p",{},"Les équipes de développement apprécient Claude Code parce qu'il offre une expérience comparable à une programmation en binôme avec un ingénieur senior, directement dans le terminal ou l'IDE : il aide à comprendre du code peu connu, à proposer des correctifs et à structurer rapidement de nouvelles fonctionnalités.",[12,16,17],{},"Mais un phénomène mérite notre attention : plus les outils de codage agentiques deviennent performants pour écrire du code, plus le reste du cycle de vie logiciel peine à suivre le rythme. Les backlogs de bogues s'allongent. Les taux d'échec des pipelines augmentent. Les vulnérabilités de sécurité s'accumulent plus vite que les équipes ne peuvent les classer. Écrire du code et livrer du logiciel sont deux étapes distinctes : l'écart entre les deux est bien réel.",[12,19,20],{},"Après Claude Code, GitLab accélère toutes les étapes restantes du cycle de vie logiciel : CI/CD, scans de sécurité, revue de code et approbations, le tout au même endroit, avec une piste d'audit complète.",[12,22,23],{},"Ce tutoriel vous guide à travers trois scénarios dans lesquels Claude Code avance rapidement dans le code source, tandis que GitLab prend en charge tout ce qui transforme ce code en un changement certifié et livré :",[25,26,27,31,34],"ul",{},[28,29,30],"li",{},"Corriger un bogue C++ avec Claude Code, puis laisser GitLab CI/CD, les scans de sécurité et le flow Code Review de GitLab Duo faire le reste.",[28,32,33],{},"Ajouter le contexte au MCP de GitLab pour que Claude travaille à partir du véritable ticket, et pas seulement des fichiers locaux.",[28,35,36],{},"Utiliser un agent externe alimenté par Claude dans GitLab Duo Agent Platform pour traiter les retours de revue de code directement dans la merge request.",[38,39,41],"h2",{"id":40},"prérequis","Prérequis",[43,44,45,54,63,77],"ol",{},[28,46,47,53],{},[48,49,52],"a",{"href":50,"rel":51},"https://code.claude.com/docs/en/overview",[],"Claude Code"," dans le terminal, configuré et opérationnel.",[28,55,56,57,62],{},"Un projet GitLab avec des rapports de bogues et des tickets de proposition de fonctionnalités, par exemple le ",[48,58,61],{"href":59,"rel":60},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform",[],"projet Tanuki IoT Platform",".",[28,64,65,66,71,72,62],{},"Pour des cas d'utilisation spécifiques : le ",[48,67,70],{"href":68,"rel":69},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/",[],"serveur MCP de GitLab"," et GitLab Duo Agent Platform avec les ",[48,73,76],{"href":74,"rel":75},"https://docs.gitlab.com/user/duo_agent_platform/agents/external/",[],"agents externes",[28,78,79],{},"Pour le code : CMake, Make, gcc/clang++ pour C++, Maven pour Java.",[81,82,84],"h3",{"id":83},"préparer-le-projet-gitlab","Préparer le projet GitLab",[12,86,87],{},"Si vous souhaitez suivre ce tutoriel, vous pouvez reproduire l'ensemble des étapes dans votre propre environnement de développement. Pour cela :",[25,89,90,97,100],{},[28,91,92,93,96],{},"Importez le ",[48,94,61],{"href":59,"rel":95},[]," dans votre environnement GitLab, y compris tous les tickets ouverts.",[28,98,99],{},"Clonez le projet dans votre environnement local, puis accédez au répertoire.",[28,101,102,103,62],{},"Ouvrez un terminal et lancez Claude Code avec ",[104,105,106],"code",{},"claude",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-shell shiki shiki-themes github-light","git clone https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\ncd tanuki-iot-platform\n\nclaude\n","shell","",[104,115,116,132,142,149],{"__ignoreMap":113},[117,118,121,125,129],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"s7eDp","git",[117,126,128],{"class":127},"sYBdl"," clone",[117,130,131],{"class":127}," https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\n",[117,133,135,139],{"class":119,"line":134},2,[117,136,138],{"class":137},"sYu0t","cd",[117,140,141],{"class":127}," tanuki-iot-platform\n",[117,143,145],{"class":119,"line":144},3,[117,146,148],{"emptyLinePlaceholder":147},true,"\n",[117,150,152],{"class":119,"line":151},4,[117,153,154],{"class":123},"claude\n",[12,156,157],{},"Saisissez une question dans le prompt pour en savoir plus sur la finalité du projet.",[108,159,163],{"className":160,"code":161,"language":162,"meta":113,"style":113},"language-markdown shiki shiki-themes github-light","What is this project about?\n","markdown",[104,164,165],{"__ignoreMap":113},[117,166,167],{"class":119,"line":120},[117,168,161],{"class":169},"sgsFI",[38,171,173],{"id":172},"premiers-pas-avec-claude-code-et-gitlab","Premiers pas avec Claude Code et GitLab",[12,175,176,177,180],{},"Dans notre premier scénario, nous devons corriger un capteur matériel écrit en C++. Le collecteur Arduino lit des indicateurs depuis la carte Arduino Uno R4 connectée en USB et plante lorsque le périphérique ",[104,178,179],{},"/dev/ttyACM0"," n'est pas connecté.",[12,182,183],{},[184,185],"img",{"alt":186,"src":187,"title":186},"Ticket GitLab montrant le rapport de bogue du plantage du collecteur Arduino IoT","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/itfnec4qrlldxfftwnig.png",[12,189,190,191,196,197,200],{},"Après avoir lu le rapport de bogue dans le ",[48,192,195],{"href":193,"rel":194},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/4",[],"Ticket 4",", inspectez le code dans le fichier ",[104,198,199],{},"main.cpp",", par exemple avec vim :",[108,202,204],{"className":110,"code":203,"language":112,"meta":113,"style":113},"vim sensors/arduino-iot-collector/src/main.cpp\n",[104,205,206],{"__ignoreMap":113},[117,207,208,211],{"class":119,"line":120},[117,209,210],{"class":123},"vim",[117,212,213],{"class":127}," sensors/arduino-iot-collector/src/main.cpp\n",[12,215,216],{},[184,217],{"alt":218,"src":219,"title":218},"Code source du collecteur Arduino IoT ouvert dans vim","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/mjof3rgdlxjy2trmgehq.png",[12,221,222,223,228],{},"Compilez et exécutez le binaire du collecteur avec ",[48,224,227],{"href":225,"rel":226},"https://cmake.org/",[],"CMake"," pour reproduire le problème.",[108,230,232],{"className":110,"code":231,"language":112,"meta":113,"style":113},"cmake -S . -B build\ncmake --build build\n\n./build/arduino_iot_collector\nStarting Arduino IoT Collector Application...\nlibc++abi: terminating due to uncaught exception of type std::runtime_error: Failed to initialize Arduino temperature sensor: Arduino port not found: /dev/ttyACM0\n[1]    85289 abort      ./build/arduino_iot_collector\n",[104,233,234,251,260,264,269,287,347],{"__ignoreMap":113},[117,235,236,239,242,245,248],{"class":119,"line":120},[117,237,238],{"class":123},"cmake",[117,240,241],{"class":137}," -S",[117,243,244],{"class":127}," .",[117,246,247],{"class":137}," -B",[117,249,250],{"class":127}," build\n",[117,252,253,255,258],{"class":119,"line":134},[117,254,238],{"class":123},[117,256,257],{"class":137}," --build",[117,259,250],{"class":127},[117,261,262],{"class":119,"line":144},[117,263,148],{"emptyLinePlaceholder":147},[117,265,266],{"class":119,"line":151},[117,267,268],{"class":123},"./build/arduino_iot_collector\n",[117,270,272,275,278,281,284],{"class":119,"line":271},5,[117,273,274],{"class":123},"Starting",[117,276,277],{"class":127}," Arduino",[117,279,280],{"class":127}," IoT",[117,282,283],{"class":127}," Collector",[117,285,286],{"class":127}," Application...\n",[117,288,290,293,296,299,302,305,308,311,314,317,320,322,325,327,330,333,335,338,341,344],{"class":119,"line":289},6,[117,291,292],{"class":123},"libc++abi:",[117,294,295],{"class":127}," terminating",[117,297,298],{"class":127}," due",[117,300,301],{"class":127}," to",[117,303,304],{"class":127}," uncaught",[117,306,307],{"class":127}," exception",[117,309,310],{"class":127}," of",[117,312,313],{"class":127}," type",[117,315,316],{"class":127}," std::runtime_error:",[117,318,319],{"class":127}," Failed",[117,321,301],{"class":127},[117,323,324],{"class":127}," initialize",[117,326,277],{"class":127},[117,328,329],{"class":127}," temperature",[117,331,332],{"class":127}," sensor:",[117,334,277],{"class":127},[117,336,337],{"class":127}," port",[117,339,340],{"class":127}," not",[117,342,343],{"class":127}," found:",[117,345,346],{"class":127}," /dev/ttyACM0\n",[117,348,350],{"class":119,"line":349},7,[117,351,352],{"class":169},"[1]    85289 abort      ./build/arduino_iot_collector\n",[12,354,355],{},"Ouvrez Claude Code et soumettez la requête suivante :",[108,357,359],{"className":160,"code":358,"language":162,"meta":113,"style":113},"Please help me fix the Arduino IoT Collector sensor - it crashes.\n",[104,360,361],{"__ignoreMap":113},[117,362,363],{"class":119,"line":120},[117,364,358],{"class":169},[12,366,367,368,370,371,374],{},"Claude Code parcourt le code source et identifie le problème dans le fichier ",[104,369,199],{},", qui lève une exception ",[104,372,373],{},"std::runtime_error()"," provoquant le plantage immédiat de l'application. Le comportement attendu est d'enregistrer une erreur de configuration lisible et de continuer l'exécution de l'application.",[12,376,377],{},"Après la correction du code source et un build réussi, nous devons créer une branche Git, un commit et une merge request pour déclencher les pipelines CI/CD, les scans de sécurité et les workflows de revue de code.",[12,379,380],{},"Vous pouvez utiliser différentes méthodes pour travailler avec Git dans Claude Code :",[25,382,383,389],{},[28,384,385,386],{},"Utiliser un prompt : ",[104,387,388],{},"Please help me create a Git branch and commit and push the changes.",[28,390,391,392,395,396,399,400,403,404,407,408,410],{},"Exécuter les commandes shell : ouvrez le prompt de commande avec ",[104,393,394],{},"!",", suivi des commandes ",[104,397,398],{},"git checkout -b fix-arduino-sensor",", ",[104,401,402],{},"git commit -avm “...”"," et ",[104,405,406],{},"git push",". Les données de sortie de ",[104,409,406],{}," génèrent une URL de création de merge request. Cliquez dessus pour ouvrir le navigateur et remplir le formulaire.",[12,412,413,414,419],{},"La création de la merge request déclenche les pipelines CI/CD qui vérifient que le build et les tests fonctionnent. Les scans de sécurité s'assurent qu'aucune nouvelle vulnérabilité n'est introduite. La nouvelle merge request déclenche automatiquement le ",[48,415,418],{"href":416,"rel":417},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/",[],"flow Code Review de GitLab Duo",", qui évalue la pertinence du correctif en suivant les guides de style de développement et les instructions de revue personnalisées.",[12,421,422],{},[184,423],{"alt":424,"src":425,"title":424},"Instructions de revue personnalisées du flow Code Review de GitLab Duo pour C++","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/wasta2rqivrvrsjtw1jv.png",[12,427,428],{},[184,429],{"alt":430,"src":431,"title":430},"Commentaire du flow Code Review de GitLab Duo","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/r2oalo1xwkpbmeispflo.png",[12,433,434],{},"Voici un enregistrement rapide de Claude Code, GitLab CI/CD et GitLab Duo Agent Platform en action :",[436,437,440,441],"figure",{"className":438},[439],"video_container","\n  ",[442,443,447],"iframe",{"src":444,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/JH4Sae3eDpw","0","true"," ",[38,449,451],{"id":450},"corriger-un-bogue-c-avec-le-mcp-de-gitlab-dans-claude-code","Corriger un bogue C++ avec le MCP de GitLab dans Claude Code",[12,453,454],{},"Le scénario précédent a conduit Claude Code à parcourir le dépôt de code local, et il a formulé des hypothèses sur un correctif potentiel à partir du contexte disponible. Mais il ne disposait pas du contexte du ticket GitLab décrivant le bogue, ni des discussions de débogage, ni des pistes proposées pour corriger et résoudre le problème à long terme. Il ne prenait pas non plus en compte l'historique des modifications de code passées enregistrées dans les merge requests et les tickets similaires, qui constituent un contexte précieux du cycle de développement logiciel (SDLC).",[12,456,457,458,461],{},"Pour intégrer ce riche contexte du SDLC issu de GitLab, nous pouvons intégrer le ",[48,459,70],{"href":68,"rel":460},[]," à Claude Code.",[81,463,465],{"id":464},"configurer-le-serveur-mcp-de-gitlab","Configurer le serveur MCP de GitLab",[12,467,468,469,474],{},"Assurez-vous que le serveur MCP de GitLab est ",[48,470,473],{"href":471,"rel":472},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/#prerequisites",[],"activé"," sur l'instance ou le groupe principal.",[12,476,477,478,481,482,62],{},"Ouvrez un nouveau terminal et ajoutez le ",[48,479,70],{"href":68,"rel":480},[]," à Claude Code en utilisant le type de transport ",[104,483,484],{},"http",[12,486,487,488,491,492,495],{},"Remplacez ",[104,489,490],{},"gitlab.example.com"," par votre instance GitLab, ou utilisez ",[104,493,494],{},"GitLab.com"," :",[108,497,499],{"className":110,"code":498,"language":112,"meta":113,"style":113},"claude mcp add --transport http GitLab https://gitlab.example.com/api/v4/mcp\n",[104,500,501],{"__ignoreMap":113},[117,502,503,505,508,511,514,517,520],{"class":119,"line":120},[117,504,106],{"class":123},[117,506,507],{"class":127}," mcp",[117,509,510],{"class":127}," add",[117,512,513],{"class":137}," --transport",[117,515,516],{"class":127}," http",[117,518,519],{"class":127}," GitLab",[117,521,522],{"class":127}," https://gitlab.example.com/api/v4/mcp\n",[12,524,525,526,528,529,532],{},"Lancez ",[104,527,106],{}," dans une nouvelle session de terminal et tapez ",[104,530,531],{},"/mcp"," pour vous authentifier auprès du serveur MCP de GitLab via OAuth dans la page de navigateur qui s'ouvre.",[108,534,536],{"className":110,"code":535,"language":112,"meta":113,"style":113},"claude\n\n/mcp\n",[104,537,538,542,546],{"__ignoreMap":113},[117,539,540],{"class":119,"line":120},[117,541,154],{"class":123},[117,543,544],{"class":119,"line":134},[117,545,148],{"emptyLinePlaceholder":147},[117,547,548],{"class":119,"line":144},[117,549,550],{"class":123},"/mcp\n",[12,552,553],{},"Pour vérifier la connexion, demandez à Claude :",[108,555,557],{"className":160,"code":556,"language":162,"meta":113,"style":113},"Which GitLab MCP tools are available to you?\n\nShow the GitLab MCP Server version\n",[104,558,559,564,568],{"__ignoreMap":113},[117,560,561],{"class":119,"line":120},[117,562,563],{"class":169},"Which GitLab MCP tools are available to you?\n",[117,565,566],{"class":119,"line":134},[117,567,148],{"emptyLinePlaceholder":147},[117,569,570],{"class":119,"line":144},[117,571,572],{"class":169},"Show the GitLab MCP Server version\n",[12,574,575],{},[184,576],{"alt":577,"src":578,"title":577},"Claude Code analyse de la version du serveur MCP de GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/f2ygt6wuuvxxbpticcgt.png",[12,580,581,582,587],{},"Lorsque vous authentifiez Claude Code avec le serveur MCP de GitLab, la connexion s'établit via ",[48,583,586],{"href":584,"rel":585},"https://datatracker.ietf.org/doc/html/rfc7591",[],"OAuth"," et agit avec votre identité GitLab existante, sans permissions élevées ni séparées. Concrètement, cela signifie que Claude Code ne peut voir que les projets, tickets, merge requests et autres données GitLab auxquels vous avez déjà accès via votre compte et vos projets et groupes. C'est un garde-fou important : le MCP enrichit le contexte au sein de l'outil d'IA, mais il ne contourne pas les contrôles de visibilité de GitLab et ne crée pas d'accès plus large de son propre chef.",[12,589,590],{},"L'approbation par l'utilisateur représente un second garde-fou. Dans ce flow, Claude Code identifie l'outil MCP qu'il souhaite appeler et demande l'autorisation avant de poursuivre, de sorte que les développeurs gardent le contrôle lorsque du contexte externe est récupéré. Pour les environnements sensibles en termes de sécurité, il est également judicieux de préciser que les équipes doivent rester attentives aux données exposées dans les prompts et utiliser le MCP principalement avec du contenu GitLab de confiance.",[81,592,594],{"id":593},"travailler-sur-un-ticket-de-rapport-de-bogue","Travailler sur un ticket de rapport de bogue",[12,596,597,598,601],{},"Récupérons le contexte du ticket dans Claude Code en faisant référence au ",[48,599,195],{"href":193,"rel":600},[]," dans le prompt. Si vous n'avez pas de ticket dans votre projet, clonez ou copiez le Ticket 4, puis ajustez le numéro dans le prompt.",[108,603,605],{"className":160,"code":604,"language":162,"meta":113,"style":113},"Please help me fix issue 4\n",[104,606,607],{"__ignoreMap":113},[117,608,609],{"class":119,"line":120},[117,610,604],{"class":169},[12,612,613,614,617],{},"Claude Code identifie la nécessité d'appeler l'outil MCP ",[104,615,616],{},"get_issue"," et demande l'autorisation. Vous pouvez également autoriser automatiquement les utilisations futures.",[12,619,620],{},[184,621],{"alt":622,"src":623,"title":622},"Claude Code récupère le contexte du ticket avec les outils du MCP","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/tj6dpxbemvvgqnbifzjy.png",[12,625,626],{},"Une fois que Claude Code a récupéré le contexte nécessaire depuis le ticket, il commence à analyser directement le code source C++ du capteur. Après avoir créé et vérifié un correctif, vous pouvez demander la création d'une nouvelle branche Git, d'un commit et d'une merge request si Claude Code ne le fait pas déjà de lui-même.",[108,628,630],{"className":160,"code":629,"language":162,"meta":113,"style":113},"Please create a new Git branch, commit the changes, and create a new merge request\n",[104,631,632],{"__ignoreMap":113},[117,633,634],{"class":119,"line":120},[117,635,629],{"class":169},[12,637,638,639,642],{},"Claude Code trouve l'outil du MCP ",[104,640,641],{},"create_merge_request"," et gère la création de la merge request directement, sans basculer vers le navigateur.",[12,644,645],{},[184,646],{"alt":647,"src":648,"title":647},"Claude Code a créé une merge request avec les outils du MCP, liée au Ticket 4","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/bo41ti93yonvsy9q2gbw.png",[12,650,651],{},"Dans GitLab, l'événement de création de la merge request déclenche automatiquement plusieurs workflows en parallèle :",[25,653,654,657,665],{},[28,655,656],{},"Le pipeline CI/CD pour les builds et tests automatisés",[28,658,659,660],{},"Les scans de sécurité avec ",[48,661,664],{"href":662,"rel":663},"https://docs.gitlab.com/user/application_security/sast/advanced_sast_cpp/",[],"l'analyseur Advanced de test statique de sécurité des applications (SAST) pour C++",[28,666,667,668,672],{},"Un ",[48,669,671],{"href":416,"rel":670},[],"flow Code Review"," par GitLab Duo Agent Platform",[12,674,675],{},"Ces workflows automatisés et agentiques au sein de GitLab accélèrent la livraison logicielle autant que Claude Code accélère le codage assisté par l'IA pour la résolution de tickets.",[12,677,678],{},[184,679],{"alt":680,"src":681,"title":680},"Statut du pipeline CI/CD dans la merge request – tests et scans de sécurité","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/yd3kzf9yp4usdldovs1a.png",[12,683,684],{},"Vous pouvez soit ouvrir la merge request dans le navigateur, soit rester dans le terminal et soumettre la requête suivante à Claude Code :",[108,686,688],{"className":160,"code":687,"language":162,"meta":113,"style":113},"Is the Merge Request running OK?\n",[104,689,690],{"__ignoreMap":113},[117,691,692],{"class":119,"line":120},[117,693,687],{"class":169},[12,695,696,697,700],{},"Il utilisera l'outil MCP ",[104,698,699],{},"get_merge_request_pipelines"," pour récupérer le statut du pipeline de la merge request, confirmer qu'il est au vert et prêt à fusionner.",[12,702,703],{},[184,704],{"alt":705,"src":706,"title":705},"Claude Code récupérant le statut du pipeline de la merge request avec les outils du MCP","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/s8cwcvc3r5moui2twjpd.png",[12,708,709],{},"Regardez la vidéo ci-dessous pour découvrir comment Claude Code corrige le problème avec l'aide du serveur MCP de GitLab :",[436,711,440,713],{"className":712},[439],[442,714,447],{"src":715,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/q8XWnmdIaI0",[38,717,719],{"id":718},"claude-code-en-tant-quagent-externe-pour-la-revue","Claude Code en tant qu'agent externe pour la revue",[12,721,722,723,728],{},"Dans ce dernier scénario, Claude Code a aidé à implémenter une nouvelle fonctionnalité basée sur les exigences du ",[48,724,727],{"href":725,"rel":726},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/24",[],"Ticket 24"," : un serveur API Spring Boot avec un backend REST/WebSocket. Les pipelines CI/CD et les scans de sécurité sont au vert, mais des retours de revue de code attendent dans la merge request.",[12,730,731],{},[184,732],{"alt":733,"src":734,"title":733},"Retours du flow Code Review de GitLab Duo sur la merge request du serveur API Spring Boot","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/to7zvyrarrvcnyuuzldi.png",[12,736,737,738,742],{},"Vous pouvez ajouter Claude Code en tant que partenaire de collaboration dans les tickets, les epics et les merge requests, et travailler ensemble sur les tâches. Consultez la ",[48,739,741],{"href":74,"rel":740},[],"documentation des agents externes"," pour connaître les prérequis.",[12,744,745,746,749,750,754,755,62],{},"Activez l'agent ",[104,747,748],{},"Claude Agent by GitLab"," dans le menu du projet sous ",[751,752,753],"strong",{},"IA > Agents",". Notez le nom du compte de service pour mentionner ou assigner l'agent ultérieurement ; il suit le format : ",[104,756,757],{},"@ai-\u003Cagent-name>-\u003Ctop-level-group-name>",[12,759,760,761,766,767,62],{},"Ensuite, ouvrez la merge request contenant les retours de revue de code et inspectez les modifications demandées. La capture d'écran utilise la ",[48,762,765],{"href":763,"rel":764},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/merge_requests/78",[],"merge request 78",", et le flow Code Review de GitLab Duo suit les ",[48,768,771],{"href":769,"rel":770},"https://docs.gitlab.com/user/duo_agent_platform/customize/review_instructions/?tab=Java",[],"instructions de revue personnalisées pour Java",[12,773,774],{},[184,775],{"alt":776,"src":777,"title":776},"Retour du flow Code Review de GitLab Duo sur les AllowedOriginPatterns non sécurisés pour les points de terminaison des API introduits dans la merge request","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/gvgqmcnijllptvnnyyjc.png",[12,779,780],{},"Créez un nouveau commentaire mentionnant l'agent Claude Code :",[108,782,784],{"className":160,"code":783,"language":162,"meta":113,"style":113},"@ai-claude-agent-by-gitlab-\u003Ctop-level-groupname> Can you help me address the review feedback?\n",[104,785,786],{"__ignoreMap":113},[117,787,788],{"class":119,"line":120},[117,789,783],{"class":169},[12,791,792],{},"Cette mention crée une nouvelle session d'agent en arrière-plan, qui lance l'agent Claude Code et commence à travailler sur les retours de revue. Une fois terminé, il suit les instructions pour créer un commit Git et un commentaire de synthèse dans la merge request.",[12,794,795],{},[184,796],{"alt":797,"src":798,"title":797},"Retour du flow Code Review de GitLab Duo résolu par l'agent Claude","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079038/pqy8f4xo8n0i7yvkajso.png",[12,800,801],{},"Vos prochaines étapes pour garantir que le développement logiciel reste conforme aux garde-fous de votre organisation seraient les suivantes :",[25,803,804,807,810,818],{},[28,805,806],{},"Traiter les retours de revue restants.",[28,808,809],{},"Examiner les avertissements dans les jobs du pipeline CI/CD.",[28,811,812,813,62],{},"Examiner les vulnérabilités de sécurité potentielles, par exemple en utilisant la ",[48,814,817],{"href":815,"rel":816},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/agentic_sast_vulnerability_resolution/",[],"résolution agentique des vulnérabilités SAST",[28,819,820,821,62],{},"Obtenir l'approbation de la merge request auprès d'un développeur éligible, configuré en tant que ",[48,822,825],{"href":823,"rel":824},"https://docs.gitlab.com/user/project/codeowners/",[],"propriétaire du code",[12,827,828],{},[184,829],{"alt":830,"src":831,"title":830},"Widgets de la merge request avec le pipeline CI/CD, les approbations requises, les résultats de sécurité et le statut de merge","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/uzegwykldauzuxucrpjf.png",[12,833,834],{},"Regardez cette vidéo pour découvrir comment Claude Code peut contribuer aux revues en tant qu'agent externe dans GitLab Duo Agent Platform :",[436,836,440,838],{"className":837},[439],[442,839,447],{"src":840,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/Tw0wNet1HCc",[38,842,844],{"id":843},"conseils-pour-claude-code-et-gitlab","Conseils pour Claude Code et GitLab",[81,846,848],{"id":847},"instructions-personnalisées","Instructions personnalisées",[12,850,851,852,855,856,495],{},"Vous pouvez donner des instructions aux agents pour compiler et tester le code avant les commits, limiter les modifications au strict nécessaire ou mieux comprendre l'architecture du projet avec une entrée dans le fichier ",[104,853,854],{},"AGENTS.md",". Le projet Tanuki IoT Platform utilise ",[48,857,860],{"href":858,"rel":859},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/blob/main/AGENTS.md?ref_type=heads&plain=1",[],"l'exemple en production suivant",[108,862,864],{"className":160,"code":863,"language":162,"meta":113,"style":113},"## Working with sensors\n\n### Before editing\n1. Identify the sensor directory you're working with\n2. Check for an `AGENTS.md` file in that directory\n3. Read sensor-specific instructions before making changes\n4. Follow language-specific style guides\n\n### Making changes\n- Keep changes minimal and focused on the user request\n- Do not refactor existing code unless specifically instructed\n- Preserve original code formatting\n- Only modify code necessary to solve the specific request\n\n### Creating MRs\n- Always run local builds and tests first\n- Create a new branch for changes\n- Automatically create a merge request after successful commits\n- Reference relevant issues or tasks in the MR description\n",[104,865,866,872,876,881,890,904,912,920,925,931,940,948,956,964,969,975,983,991,999],{"__ignoreMap":113},[117,867,868],{"class":119,"line":120},[117,869,871],{"class":870},"surfw","## Working with sensors\n",[117,873,874],{"class":119,"line":134},[117,875,148],{"emptyLinePlaceholder":147},[117,877,878],{"class":119,"line":144},[117,879,880],{"class":870},"### Before editing\n",[117,882,883,887],{"class":119,"line":151},[117,884,886],{"class":885},"sqxcx","1.",[117,888,889],{"class":169}," Identify the sensor directory you're working with\n",[117,891,892,895,898,901],{"class":119,"line":271},[117,893,894],{"class":885},"2.",[117,896,897],{"class":169}," Check for an ",[117,899,900],{"class":137},"`AGENTS.md`",[117,902,903],{"class":169}," file in that directory\n",[117,905,906,909],{"class":119,"line":289},[117,907,908],{"class":885},"3.",[117,910,911],{"class":169}," Read sensor-specific instructions before making changes\n",[117,913,914,917],{"class":119,"line":349},[117,915,916],{"class":885},"4.",[117,918,919],{"class":169}," Follow language-specific style guides\n",[117,921,923],{"class":119,"line":922},8,[117,924,148],{"emptyLinePlaceholder":147},[117,926,928],{"class":119,"line":927},9,[117,929,930],{"class":870},"### Making changes\n",[117,932,934,937],{"class":119,"line":933},10,[117,935,936],{"class":885},"-",[117,938,939],{"class":169}," Keep changes minimal and focused on the user request\n",[117,941,943,945],{"class":119,"line":942},11,[117,944,936],{"class":885},[117,946,947],{"class":169}," Do not refactor existing code unless specifically instructed\n",[117,949,951,953],{"class":119,"line":950},12,[117,952,936],{"class":885},[117,954,955],{"class":169}," Preserve original code formatting\n",[117,957,959,961],{"class":119,"line":958},13,[117,960,936],{"class":885},[117,962,963],{"class":169}," Only modify code necessary to solve the specific request\n",[117,965,967],{"class":119,"line":966},14,[117,968,148],{"emptyLinePlaceholder":147},[117,970,972],{"class":119,"line":971},15,[117,973,974],{"class":870},"### Creating MRs\n",[117,976,978,980],{"class":119,"line":977},16,[117,979,936],{"class":885},[117,981,982],{"class":169}," Always run local builds and tests first\n",[117,984,986,988],{"class":119,"line":985},17,[117,987,936],{"class":885},[117,989,990],{"class":169}," Create a new branch for changes\n",[117,992,994,996],{"class":119,"line":993},18,[117,995,936],{"class":885},[117,997,998],{"class":169}," Automatically create a merge request after successful commits\n",[117,1000,1002,1004],{"class":119,"line":1001},19,[117,1003,936],{"class":885},[117,1005,1006],{"class":169}," Reference relevant issues or tasks in the MR description\n",[12,1008,1009,1010,1015],{},"Ces ",[48,1011,1014],{"href":1012,"rel":1013},"https://docs.gitlab.com/user/duo_agent_platform/customize/agents_md/",[],"instructions personnalisées"," sont également traitées par les agents et les flows sur GitLab Duo Agent Platform.",[12,1017,1018,1019,1022,1023,495],{},"Claude Code préfère le fichier ",[104,1020,1021],{},"CLAUDE.md",", qui peut également rediriger vers ",[104,1024,854],{},[108,1026,1028],{"className":160,"code":1027,"language":162,"meta":113,"style":113},"@AGENTS.md\n",[104,1029,1030],{"__ignoreMap":113},[117,1031,1032],{"class":119,"line":120},[117,1033,1027],{"class":169},[38,1035,1037],{"id":1036},"résumé","Résumé",[12,1039,1040],{},"Les outils de codage par IA accélèrent l'écriture de code pour les équipes de développement. Mais écrire du code et livrer des logiciels sont deux étapes distinctes. L'écart entre les deux se creuse précisément parce que ces outils excellent dans la première étape : davantage de code est écrit, les backlogs de bogues s'allongent, les taux d'échec des pipelines augmentent et les vulnérabilités de sécurité s'accumulent.",[12,1042,1043],{},"Claude Code renforce votre productivité là où le code se trouve : il comprend du code source inconnu, propose des correctifs et structure des fonctionnalités rapidement. Pour de nombreux développeurs au sein d'équipes logicielles de grandes entreprises, GitLab Duo Agent Platform transforme cette vélocité en logiciel sécurisé que vous pouvez réellement livrer et certifier à travers de nombreux jalons de release et de nombreux projets. Avec GitLab, le reste du cycle de vie logiciel (corrections de pipelines CI/CD, scans de sécurité, remédiation automatisée, revue de code et bien plus avec des workflows intégrant l'humain dans la boucle) offre une traçabilité complète de chaque action agentique, configurable selon les garde-fous et les politiques de sécurité de votre organisation.",[12,1045,1046],{},"Dans ce tutoriel, vous avez découvert trois manières de combiner Claude Code et GitLab Duo Agent Platform :",[25,1048,1049,1052,1055],{},[28,1050,1051],{},"Corriger un bogue avec Claude Code et laisser GitLab CI/CD, les scans de sécurité et le flow Code Review de GitLab Duo faire le reste.",[28,1053,1054],{},"Ajouter le contexte du MCP de GitLab pour que Claude travaille à partir du véritable contexte enregistré dans le ticket GitLab, et pas seulement des fichiers locaux.",[28,1056,1057],{},"Utiliser un agent externe alimenté par Claude dans GitLab Duo Agent Platform pour traiter les retours de revue directement dans la merge request.",[12,1059,1060],{},"Le principe reste le même dans les trois cas : Claude avance rapidement pendant que GitLab certifie le travail.",[1062,1063,1064,1072,1080],"blockquote",{},[12,1065,1066,1067,62],{},"Si vous n'utilisez pas encore GitLab Duo Agent Platform, commencez ",[48,1068,1071],{"href":1069,"rel":1070},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr",[],"un essai gratuit",[12,1073,1074,1075,62],{},"Si vous utilisez déjà GitLab dans l'offre gratuite, vous pouvez vous inscrire à GitLab Duo Agent Platform en ",[48,1076,1079],{"href":1077,"rel":1078},"https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom",[],"suivant quelques étapes simples",[12,1081,1082,1083,1088,1089,1094],{},"Et si vous êtes déjà abonné à GitLab Premium ou GitLab Ultimate, il vous suffit ",[48,1084,1087],{"href":1085,"rel":1086},"https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/",[],"d'activer GitLab Duo Agent Platform"," et de commencer à utiliser les GitLab Credits ",[48,1090,1093],{"href":1091,"rel":1092},"https://docs.gitlab.com/subscriptions/gitlab_credits/#included-credits",[],"inclus"," dans votre abonnement.",[1096,1097,1098],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .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);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .surfw, html code.shiki .surfw{--shiki-default:#005CC5;--shiki-default-font-weight:bold}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}",{"title":113,"searchDepth":134,"depth":134,"links":1100},[1101,1104,1105,1109,1110,1113],{"id":40,"depth":134,"text":41,"children":1102},[1103],{"id":83,"depth":144,"text":84},{"id":172,"depth":134,"text":173},{"id":450,"depth":134,"text":451,"children":1106},[1107,1108],{"id":464,"depth":144,"text":465},{"id":593,"depth":144,"text":594},{"id":718,"depth":134,"text":719},{"id":843,"depth":134,"text":844,"children":1111},[1112],{"id":847,"depth":144,"text":848},{"id":1036,"depth":134,"text":1037},"ai-ml","2026-05-11","Les outils de codage agentiques écrivent du code rapidement. Mais qui le livre ? Découvrez comment Claude Code et GitLab Duo Agent Platform transforment un rapport de bogues en correctifs en production.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1778087000/qdfsf8kz6ebfnopx9v2e.png",{},"/fr-fr/blog/claude-code-and-gitlab",{"config":1124,"title":1125,"description":1126},{"noIndex":1119},"Claude Code et GitLab : trois workflows efficaces","Découvrez comment Claude Code et GitLab Duo Agent Platform transforment un rapport de bogues en correctifs en production grâce à des workflows agentiques.","claude-code-and-gitlab","fr-fr/blog/claude-code-and-gitlab",[1130,1131,1132],"AI/ML","tutorial","product","BlogPost","gzkH9AzMaOsV6D0__6-Zxox4GwYJGOExwKYDI1SwXBk",{"logo":1136,"freeTrial":1141,"sales":1146,"login":1151,"items":1156,"search":1477,"minimal":1512,"duo":1531,"switchNav":1540,"pricingDeployment":1551},{"config":1137},{"href":1138,"dataGaName":1139,"dataGaLocation":1140},"/fr-fr/","gitlab logo","header",{"text":1142,"config":1143},"Commencer un essai gratuit",{"href":1144,"dataGaName":1145,"dataGaLocation":1140},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":1147,"config":1148},"Contacter l’équipe commerciale",{"href":1149,"dataGaName":1150,"dataGaLocation":1140},"/fr-fr/sales/","sales",{"text":1152,"config":1153},"Connexion",{"href":1154,"dataGaName":1155,"dataGaLocation":1140},"https://gitlab.com/users/sign_in/","sign in",[1157,1186,1288,1293,1396,1457],{"text":1158,"config":1159,"menu":1161},"Plateforme",{"dataNavLevelOne":1160},"platform",{"type":1162,"columns":1163},"cards",[1164,1170,1178],{"title":1158,"description":1165,"link":1166},"La plateforme d’orchestration intelligente pour le DevSecOps",{"text":1167,"config":1168},"Explorer notre plateforme",{"href":1169,"dataGaName":1160,"dataGaLocation":1140},"/fr-fr/platform/",{"title":1171,"description":1172,"link":1173},"GitLab Duo Agent Platform","L’IA agentique pour l’ensemble du cycle de développement logiciel",{"text":1174,"config":1175},"Découvrir GitLab Duo",{"href":1176,"dataGaName":1177,"dataGaLocation":1140},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1179,"description":1180,"link":1181},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":1182,"config":1183},"En savoir plus",{"href":1184,"dataGaName":1185,"dataGaLocation":1140},"/fr-fr/why-gitlab/","why gitlab",{"text":1187,"left":147,"config":1188,"menu":1190},"Produit",{"dataNavLevelOne":1189},"solutions",{"type":1191,"link":1192,"columns":1196,"feature":1267},"lists",{"text":1193,"config":1194},"Voir toutes les solutions",{"href":1195,"dataGaName":1189,"dataGaLocation":1140},"/fr-fr/solutions/",[1197,1222,1245],{"title":1198,"description":1199,"link":1200,"items":1205},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":1201},{"icon":1202,"href":1203,"dataGaName":1204,"dataGaLocation":1140},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[1206,1210,1213,1218],{"text":1207,"config":1208},"CI/CD",{"href":1209,"dataGaLocation":1140,"dataGaName":1207},"/fr-fr/solutions/continuous-integration/",{"text":1171,"config":1211},{"href":1176,"dataGaLocation":1140,"dataGaName":1212},"gitlab duo agent platform - product menu",{"text":1214,"config":1215},"Gestion du code source",{"href":1216,"dataGaLocation":1140,"dataGaName":1217},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":1219,"config":1220},"Livraison de logiciels automatisée",{"href":1203,"dataGaLocation":1140,"dataGaName":1221},"Automated software delivery",{"title":1223,"description":1224,"link":1225,"items":1230},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":1226},{"href":1227,"dataGaName":1228,"dataGaLocation":1140,"icon":1229},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1231,1235,1240],{"text":1232,"config":1233},"Tests de sécurité des applications",{"href":1227,"dataGaName":1234,"dataGaLocation":1140},"Application security testing",{"text":1236,"config":1237},"Sécurité de la chaîne d’approvisionnement logicielle",{"href":1238,"dataGaLocation":1140,"dataGaName":1239},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":1241,"config":1242},"Conformité logicielle",{"href":1243,"dataGaName":1244,"dataGaLocation":1140},"/fr-fr/solutions/software-compliance/","software compliance",{"title":1246,"link":1247,"items":1252},"Mesures",{"config":1248},{"icon":1249,"href":1250,"dataGaName":1251,"dataGaLocation":1140},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[1253,1257,1262],{"text":1254,"config":1255},"Visibilité et mesures",{"href":1250,"dataGaLocation":1140,"dataGaName":1256},"Visibility and Measurement",{"text":1258,"config":1259},"Gestion de la chaîne de valeur",{"href":1260,"dataGaLocation":1140,"dataGaName":1261},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":1263,"config":1264},"Analyses et informations",{"href":1265,"dataGaLocation":1140,"dataGaName":1266},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":1268,"type":1191,"items":1269},"GitLab",[1270,1276,1282],{"text":1271,"config":1272},"Pour les entreprises",{"icon":1273,"href":1274,"dataGaLocation":1140,"dataGaName":1275},"Building","/fr-fr/enterprise/","enterprise",{"text":1277,"config":1278},"Pour les PME",{"icon":1279,"href":1280,"dataGaLocation":1140,"dataGaName":1281},"Work","/fr-fr/small-business/","small business",{"text":1283,"config":1284},"Pour le secteur public",{"icon":1285,"href":1286,"dataGaLocation":1140,"dataGaName":1287},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":1289,"config":1290},"Tarifs",{"href":1291,"dataGaName":1292,"dataGaLocation":1140,"dataNavLevelOne":1292},"/fr-fr/pricing/","pricing",{"text":1294,"config":1295,"menu":1297},"Ressources",{"dataNavLevelOne":1296},"resources",{"type":1191,"link":1298,"columns":1302,"feature":1386},{"text":1299,"config":1300},"Afficher toutes les ressources",{"href":1301,"dataGaName":1296,"dataGaLocation":1140},"/fr-fr/resources/",[1303,1336,1358],{"title":1304,"items":1305},"Premiers pas",[1306,1311,1316,1321,1326,1331],{"text":1307,"config":1308},"Installation",{"href":1309,"dataGaName":1310,"dataGaLocation":1140},"/fr-fr/install/","install",{"text":1312,"config":1313},"Guides de démarrage",{"href":1314,"dataGaName":1315,"dataGaLocation":1140},"/fr-fr/get-started/","quick setup checklists",{"text":1317,"config":1318},"Apprentissage",{"href":1319,"dataGaLocation":1140,"dataGaName":1320},"https://university.gitlab.com/","learn",{"text":1322,"config":1323},"Documentation",{"href":1324,"dataGaName":1325,"dataGaLocation":1140},"https://docs.gitlab.com/","product documentation",{"text":1327,"config":1328},"Vidéos sur les bonnes pratiques",{"href":1329,"dataGaName":1330,"dataGaLocation":1140},"/fr-fr/getting-started-videos/","best practice videos",{"text":1332,"config":1333},"Intégrations",{"href":1334,"dataGaName":1335,"dataGaLocation":1140},"/fr-fr/integrations/","integrations",{"title":1337,"items":1338},"Découvrir",[1339,1344,1349,1353],{"text":1340,"config":1341},"Témoignages clients",{"href":1342,"dataGaName":1343,"dataGaLocation":1140},"/fr-fr/customers/","customer success stories",{"text":1345,"config":1346},"Blog",{"href":1347,"dataGaName":1348,"dataGaLocation":1140},"/fr-fr/blog/","blog",{"text":1350,"config":1351},"The Source",{"href":1352,"dataGaName":1348,"dataGaLocation":1140},"/fr-fr/the-source/",{"text":1354,"config":1355},"Travail à distance",{"href":1356,"dataGaName":1357,"dataGaLocation":1140},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1359,"items":1360},"Connecter",[1361,1366,1371,1376,1381],{"text":1362,"config":1363},"Services GitLab",{"href":1364,"dataGaName":1365,"dataGaLocation":1140},"/fr-fr/services/","services",{"text":1367,"config":1368},"Communauté",{"href":1369,"dataGaName":1370,"dataGaLocation":1140},"/community/","community",{"text":1372,"config":1373},"Forum",{"href":1374,"dataGaName":1375,"dataGaLocation":1140},"https://forum.gitlab.com/","forum",{"text":1377,"config":1378},"Événements",{"href":1379,"dataGaName":1380,"dataGaLocation":1140},"/events/","events",{"text":1382,"config":1383},"Partenaires",{"href":1384,"dataGaName":1385,"dataGaLocation":1140},"/fr-fr/partners/","partners",{"config":1387,"title":1390,"text":1391,"link":1392},{"background":1388,"textColor":1389},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Restez informé des dernières fonctionnalités et améliorations.",{"text":1393,"config":1394},"Lire les articles les plus récents",{"href":1352,"dataGaName":1395,"dataGaLocation":1140},"the source",{"text":1397,"config":1398,"menu":1400},"Société",{"dataNavLevelOne":1399},"company",{"type":1191,"columns":1401},[1402],{"items":1403},[1404,1409,1415,1417,1422,1427,1432,1437,1442,1447,1452],{"text":1405,"config":1406},"À propos",{"href":1407,"dataGaName":1408,"dataGaLocation":1140},"/fr-fr/company/","about",{"text":1410,"config":1411,"footerGa":1414},"Carrières",{"href":1412,"dataGaName":1413,"dataGaLocation":1140},"/jobs/","jobs",{"dataGaName":1413},{"text":1377,"config":1416},{"href":1379,"dataGaName":1380,"dataGaLocation":1140},{"text":1418,"config":1419},"Leadership",{"href":1420,"dataGaName":1421,"dataGaLocation":1140},"/company/team/e-group/","leadership",{"text":1423,"config":1424},"Équipe",{"href":1425,"dataGaName":1426,"dataGaLocation":1140},"/company/team/","team",{"text":1428,"config":1429},"Manuel",{"href":1430,"dataGaName":1431,"dataGaLocation":1140},"https://handbook.gitlab.com/","handbook",{"text":1433,"config":1434},"Relations avec les investisseurs",{"href":1435,"dataGaName":1436,"dataGaLocation":1140},"https://ir.gitlab.com/","investor relations",{"text":1438,"config":1439},"Trust Center",{"href":1440,"dataGaName":1441,"dataGaLocation":1140},"/fr-fr/security/","trust center",{"text":1443,"config":1444},"Centre pour la transparence de l’IA",{"href":1445,"dataGaName":1446,"dataGaLocation":1140},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1448,"config":1449},"Newsletter",{"href":1450,"dataGaName":1451,"dataGaLocation":1140},"/company/contact/#contact-forms","newsletter",{"text":1453,"config":1454},"Presse",{"href":1455,"dataGaName":1456,"dataGaLocation":1140},"/press/","press",{"text":1458,"config":1459,"menu":1460},"Nous contacter",{"dataNavLevelOne":1399},{"type":1191,"columns":1461},[1462],{"items":1463},[1464,1467,1472],{"text":1147,"config":1465},{"href":1149,"dataGaName":1466,"dataGaLocation":1140},"talk to sales",{"text":1468,"config":1469},"Portail d'assistance",{"href":1470,"dataGaName":1471,"dataGaLocation":1140},"https://support.gitlab.com","support portal",{"text":1473,"config":1474},"Portail clients GitLab",{"href":1475,"dataGaName":1476,"dataGaLocation":1140},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1478,"login":1479,"suggestions":1485},"Fermer",{"text":1480,"link":1481},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":494,"config":1482},{"href":1154,"dataGaName":1483,"dataGaLocation":1484},"search login","search",{"text":1486,"default":1487},"Suggestions",[1488,1491,1496,1498,1503,1508],{"text":1171,"config":1489},{"href":1176,"dataGaName":1490,"dataGaLocation":1484},"GitLab Duo Agent Platform",{"text":1492,"config":1493},"Suggestions de code (IA)",{"href":1494,"dataGaName":1495,"dataGaLocation":1484},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1207,"config":1497},{"href":1209,"dataGaName":1207,"dataGaLocation":1484},{"text":1499,"config":1500},"GitLab sur AWS",{"href":1501,"dataGaName":1502,"dataGaLocation":1484},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1504,"config":1505},"GitLab sur Google Cloud",{"href":1506,"dataGaName":1507,"dataGaLocation":1484},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1509,"config":1510},"Pourquoi utiliser GitLab ?",{"href":1184,"dataGaName":1511,"dataGaLocation":1484},"Why GitLab?",{"freeTrial":1513,"mobileIcon":1518,"desktopIcon":1523,"secondaryButton":1526},{"text":1514,"config":1515},"Commencer votre essai gratuit",{"href":1516,"dataGaName":1145,"dataGaLocation":1517},"https://gitlab.com/-/trials/new/","nav",{"altText":1519,"config":1520},"Icône GitLab",{"src":1521,"dataGaName":1522,"dataGaLocation":1517},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1519,"config":1524},{"src":1525,"dataGaName":1522,"dataGaLocation":1517},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1527,"config":1528},"Commencer",{"href":1529,"dataGaName":1530,"dataGaLocation":1517},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1532,"mobileIcon":1536,"desktopIcon":1538},{"text":1533,"config":1534},"En savoir plus sur GitLab Duo",{"href":1176,"dataGaName":1535,"dataGaLocation":1517},"gitlab duo",{"altText":1519,"config":1537},{"src":1521,"dataGaName":1522,"dataGaLocation":1517},{"altText":1519,"config":1539},{"src":1525,"dataGaName":1522,"dataGaLocation":1517},{"button":1541,"mobileIcon":1546,"desktopIcon":1548},{"text":1542,"config":1543},"/switch",{"href":1544,"dataGaName":1545,"dataGaLocation":1517},"#contact","switch",{"altText":1519,"config":1547},{"src":1521,"dataGaName":1522,"dataGaLocation":1517},{"altText":1519,"config":1549},{"src":1550,"dataGaName":1522,"dataGaLocation":1517},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1552,"mobileIcon":1557,"desktopIcon":1559},{"text":1553,"config":1554},"Retour aux tarifs",{"href":1291,"dataGaName":1555,"dataGaLocation":1517,"icon":1556},"back to pricing","GoBack",{"altText":1519,"config":1558},{"src":1521,"dataGaName":1522,"dataGaLocation":1517},{"altText":1519,"config":1560},{"src":1525,"dataGaName":1522,"dataGaLocation":1517},{"title":1562,"button":1563,"config":1568},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":1564,"config":1565},"S'inscrire à GitLab Transcend le 10 juin",{"href":1566,"dataGaName":1567,"dataGaLocation":1140},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":1569,"disabled":1119},"release",{"data":1571},{"text":1572,"source":1573,"edit":1579,"contribute":1584,"config":1589,"items":1594,"minimal":1806},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1574,"config":1575},"Afficher le code source de la page",{"href":1576,"dataGaName":1577,"dataGaLocation":1578},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1580,"config":1581},"Modifier cette page",{"href":1582,"dataGaName":1583,"dataGaLocation":1578},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1585,"config":1586},"Veuillez contribuer",{"href":1587,"dataGaName":1588,"dataGaLocation":1578},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1590,"facebook":1591,"youtube":1592,"linkedin":1593},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1595,1642,1695,1739,1771],{"title":1289,"links":1596,"subMenu":1611},[1597,1601,1606],{"text":1598,"config":1599},"Voir les forfaits",{"href":1291,"dataGaName":1600,"dataGaLocation":1578},"view plans",{"text":1602,"config":1603},"GitLab Premium",{"href":1604,"dataGaName":1605,"dataGaLocation":1578},"/fr-fr/pricing/premium/","why premium",{"text":1607,"config":1608},"GitLab Ultimate",{"href":1609,"dataGaName":1610,"dataGaLocation":1578},"/fr-fr/pricing/ultimate/","why ultimate",[1612],{"title":1458,"links":1613},[1614,1617,1620,1622,1627,1632,1637],{"text":1615,"config":1616},"Contacter l'équipe commerciale",{"href":1149,"dataGaName":1150,"dataGaLocation":1578},{"text":1618,"config":1619},"Assistance GitLab",{"href":1470,"dataGaName":1471,"dataGaLocation":1578},{"text":1473,"config":1621},{"href":1475,"dataGaName":1476,"dataGaLocation":1578},{"text":1623,"config":1624},"Statut",{"href":1625,"dataGaName":1626,"dataGaLocation":1578},"https://status.gitlab.com/","status",{"text":1628,"config":1629},"Conditions d'utilisation",{"href":1630,"dataGaName":1631,"dataGaLocation":1578},"/terms/","terms of use",{"text":1633,"config":1634},"Politique de confidentialité",{"href":1635,"dataGaName":1636,"dataGaLocation":1578},"/fr-fr/privacy/","privacy statement",{"text":1638,"config":1639},"Gérer vos cookies",{"dataGaName":1640,"dataGaLocation":1578,"id":1641,"isOneTrustButton":147},"cookie preferences","ot-sdk-btn",{"title":1187,"links":1643,"subMenu":1652},[1644,1648],{"text":1645,"config":1646},"Plateforme DevSecOps",{"href":1169,"dataGaName":1647,"dataGaLocation":1578},"devsecops platform",{"text":1649,"config":1650},"Développement assisté par l'IA",{"href":1176,"dataGaName":1651,"dataGaLocation":1578},"ai-assisted development",[1653],{"title":1654,"links":1655},"Thèmes",[1656,1660,1665,1670,1675,1680,1685,1690],{"text":1207,"config":1657},{"href":1658,"dataGaName":1659,"dataGaLocation":1578},"/fr-fr/topics/ci-cd/","cicd",{"text":1661,"config":1662},"GitOps",{"href":1663,"dataGaName":1664,"dataGaLocation":1578},"/fr-fr/topics/gitops/","gitops",{"text":1666,"config":1667},"DevOps",{"href":1668,"dataGaName":1669,"dataGaLocation":1578},"/fr-fr/topics/devops/","devops",{"text":1671,"config":1672},"Contrôle de version",{"href":1673,"dataGaName":1674,"dataGaLocation":1578},"/fr-fr/topics/version-control/","version control",{"text":1676,"config":1677},"DevSecOps",{"href":1678,"dataGaName":1679,"dataGaLocation":1578},"/fr-fr/topics/devsecops/","devsecops",{"text":1681,"config":1682},"Cloud-native",{"href":1683,"dataGaName":1684,"dataGaLocation":1578},"/fr-fr/topics/cloud-native/","cloud native",{"text":1686,"config":1687},"IA pour la programmation",{"href":1688,"dataGaName":1689,"dataGaLocation":1578},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1691,"config":1692},"IA agentique",{"href":1693,"dataGaName":1694,"dataGaLocation":1578},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1696,"links":1697},"Solutions",[1698,1701,1703,1708,1711,1714,1717,1720,1723,1726,1729,1734],{"text":1232,"config":1699},{"href":1227,"dataGaName":1700,"dataGaLocation":1578},"Application Security Testing",{"text":1219,"config":1702},{"href":1203,"dataGaName":1204,"dataGaLocation":1578},{"text":1704,"config":1705},"Développement Agile",{"href":1706,"dataGaName":1707,"dataGaLocation":1578},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":1214,"config":1709},{"href":1216,"dataGaName":1710,"dataGaLocation":1578},"source code management",{"text":1207,"config":1712},{"href":1209,"dataGaName":1713,"dataGaLocation":1578},"continuous integration & delivery",{"text":1258,"config":1715},{"href":1260,"dataGaName":1716,"dataGaLocation":1578},"value stream management",{"text":1661,"config":1718},{"href":1719,"dataGaName":1664,"dataGaLocation":1578},"/fr-fr/solutions/gitops/",{"text":1721,"config":1722},"Entreprises",{"href":1274,"dataGaName":1275,"dataGaLocation":1578},{"text":1724,"config":1725},"PME",{"href":1280,"dataGaName":1281,"dataGaLocation":1578},{"text":1727,"config":1728},"Secteur public",{"href":1286,"dataGaName":1287,"dataGaLocation":1578},{"text":1730,"config":1731},"Éducation",{"href":1732,"dataGaName":1733,"dataGaLocation":1578},"/fr-fr/solutions/education/","education",{"text":1735,"config":1736},"Services financiers",{"href":1737,"dataGaName":1738,"dataGaLocation":1578},"/fr-fr/solutions/finance/","financial services",{"title":1294,"links":1740},[1741,1743,1745,1747,1750,1752,1757,1759,1761,1763,1765,1767,1769],{"text":1307,"config":1742},{"href":1309,"dataGaName":1310,"dataGaLocation":1578},{"text":1312,"config":1744},{"href":1314,"dataGaName":1315,"dataGaLocation":1578},{"text":1317,"config":1746},{"href":1319,"dataGaName":1320,"dataGaLocation":1578},{"text":1322,"config":1748},{"href":1324,"dataGaName":1749,"dataGaLocation":1578},"docs",{"text":1345,"config":1751},{"href":1347,"dataGaName":1348,"dataGaLocation":1578},{"text":1753,"config":1754},"Quoi de neuf",{"href":1755,"dataGaName":1756,"dataGaLocation":1578},"/fr-fr/whats-new/","whats new",{"text":1340,"config":1758},{"href":1342,"dataGaName":1343,"dataGaLocation":1578},{"text":1354,"config":1760},{"href":1356,"dataGaName":1357,"dataGaLocation":1578},{"text":1362,"config":1762},{"href":1364,"dataGaName":1365,"dataGaLocation":1578},{"text":1367,"config":1764},{"href":1369,"dataGaName":1370,"dataGaLocation":1578},{"text":1372,"config":1766},{"href":1374,"dataGaName":1375,"dataGaLocation":1578},{"text":1377,"config":1768},{"href":1379,"dataGaName":1380,"dataGaLocation":1578},{"text":1382,"config":1770},{"href":1384,"dataGaName":1385,"dataGaLocation":1578},{"title":1397,"links":1772},[1773,1775,1777,1779,1781,1783,1785,1790,1795,1797,1799,1801],{"text":1405,"config":1774},{"href":1407,"dataGaName":1399,"dataGaLocation":1578},{"text":1410,"config":1776},{"href":1412,"dataGaName":1413,"dataGaLocation":1578},{"text":1418,"config":1778},{"href":1420,"dataGaName":1421,"dataGaLocation":1578},{"text":1423,"config":1780},{"href":1425,"dataGaName":1426,"dataGaLocation":1578},{"text":1428,"config":1782},{"href":1430,"dataGaName":1431,"dataGaLocation":1578},{"text":1433,"config":1784},{"href":1435,"dataGaName":1436,"dataGaLocation":1578},{"text":1786,"config":1787},"Développement durable",{"href":1788,"dataGaName":1789,"dataGaLocation":1578},"/sustainability/","Sustainability",{"text":1791,"config":1792},"Diversité, inclusion et appartenance (DIB)",{"href":1793,"dataGaName":1794,"dataGaLocation":1578},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1438,"config":1796},{"href":1440,"dataGaName":1441,"dataGaLocation":1578},{"text":1448,"config":1798},{"href":1450,"dataGaName":1451,"dataGaLocation":1578},{"text":1453,"config":1800},{"href":1455,"dataGaName":1456,"dataGaLocation":1578},{"text":1802,"config":1803},"Déclaration de transparence sur l'esclavage moderne",{"href":1804,"dataGaName":1805,"dataGaLocation":1578},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1807},[1808,1810,1813],{"text":1628,"config":1809},{"href":1630,"dataGaName":1631,"dataGaLocation":1578},{"text":1811,"config":1812},"Gestion des cookies",{"dataGaName":1640,"dataGaLocation":1578,"id":1641,"isOneTrustButton":147},{"text":1633,"config":1814},{"href":1635,"dataGaName":1636,"dataGaLocation":1578},[1816],{"id":1817,"title":7,"body":1118,"config":1818,"content":1820,"description":1118,"extension":1824,"meta":1825,"navigation":147,"path":1826,"seo":1827,"stem":1828,"__hash__":1829},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":1819},"BlogAuthor",{"name":7,"config":1821},{"headshot":1822,"ctfId":1823},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[],{"promotions":1832},[1833,1847,1858,1870],{"id":1834,"categories":1835,"header":1837,"text":1838,"button":1839,"image":1844},"ai-modernization",[1836],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1840,"config":1841},"Obtenez votre score de maturité IA",{"href":1842,"dataGaName":1843,"dataGaLocation":1348},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1845},{"src":1846},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1848,"categories":1849,"header":1850,"text":1838,"button":1851,"image":1855},"devops-modernization",[1132,1679],"Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1852,"config":1853},"Obtenez votre score de maturité DevOps",{"href":1854,"dataGaName":1843,"dataGaLocation":1348},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1856},{"src":1857},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1859,"categories":1860,"header":1862,"text":1838,"button":1863,"image":1867},"security-modernization",[1861],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1864,"config":1865},"Obtenez votre score de maturité en matière de sécurité",{"href":1866,"dataGaName":1843,"dataGaLocation":1348},"/fr-fr/assessments/security-modernization-assessment/",{"config":1868},{"src":1869},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1871,"paths":1872,"header":1875,"text":1876,"button":1877,"image":1882},"github-azure-migration",[1873,1874],"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":1878,"config":1879},"Découvrez les différences entre GitLab et GitHub",{"href":1880,"dataGaName":1881,"dataGaLocation":1348},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1883},{"src":1857},{"header":1885,"blurb":1886,"button":1887,"secondaryButton":1891},"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":1142,"config":1888},{"href":1889,"dataGaName":1145,"dataGaLocation":1890},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1615,"config":1892},{"href":1149,"dataGaName":1150,"dataGaLocation":1890},1778879980815]