[{"data":1,"prerenderedAt":1798},["ShallowReactive",2],{"/fr-fr/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab":3,"navigation-fr-fr":1015,"banner-fr-fr":1450,"footer-fr-fr":1458,"blog-post-authors-fr-fr-Regnard Raquedan":1696,"blog-related-posts-fr-fr-fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab":1711,"blog-promotions-fr-fr":1736,"next-steps-fr-fr":1789},{"id":4,"title":5,"authors":6,"body":8,"category":995,"date":996,"description":997,"extension":998,"externalUrl":999,"faq":999,"featured":1000,"heroImage":1001,"meta":1002,"navigation":331,"path":1003,"seo":1004,"slug":1007,"stem":1008,"tags":1009,"template":1013,"updatedDate":999,"__hash__":1014},"blogPosts/fr-fr/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab.md","Déployez en toute sécurité des agents d'IA sur Google Cloud avec GitLab",[7],"Regnard Raquedan",{"type":9,"value":10,"toc":988},"minimark",[11,40,53,58,61,64,68,71,74,101,104,111,115,118,140,145,154,157,195,198,203,206,237,243,246,249,267,270,470,475,478,485,831,834,867,875,880,883,900,903,926,930,933,959,963,966,975,984],[12,13,14,15,21,22,27,28,33,34,39],"p",{},"Dans un contexte où l'",[16,17,20],"a",{"href":18,"rel":19},"https://about.gitlab.com/fr-fr/topics/agentic-ai/",[],"IA agentique"," transforme notre façon de concevoir des applications intelligentes, le déploiement sécurisé et efficace d'agents d'IA peut s'avérer complexe. Dans ce tutoriel, vous apprendrez à déployer un agent d'IA développé avec l'Agent Development Kit (",[16,23,26],{"href":24,"rel":25},"https://cloud.google.com/vertex-ai/generative-ai/docs/agent-development-kit/quickstart",[],"ADK",") de Google sur Cloud Run au moyen ",[16,29,32],{"href":30,"rel":31},"https://cloud.google.com/blog/topics/partners/understand-the-google-cloud-gitlab-integration",[],"des intégrations natives"," et ",[16,35,38],{"href":36,"rel":37},"https://docs.gitlab.com/ci/components/",[],"des composants CI/CD"," de GitLab.",[41,42,43],"blockquote",{},[12,44,45],{},[46,47,48],"strong",{},[16,49,52],{"href":50,"rel":51},"https://about.gitlab.com/fr-fr/free-trial/devsecops/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr",[],"→ Essayez GitLab Ultimate et GitLab Duo Enterprise gratuitement.",[54,55,57],"h2",{"id":56},"définition-et-rôle-dun-agent-dia","Définition et rôle d'un agent d'IA",[12,59,60],{},"L'IA agentique représente une évolution majeure dans le domaine de l'intelligence artificielle. Contrairement aux outils d'IA générative traditionnels, qui nécessitent une supervision humaine constante, les agents d'IA utilisent des modèles de langage avancés et le traitement du langage naturel pour agir en toute autonomie. Ils peuvent comprendre des demandes, prendre des décisions et exécuter des plans en plusieurs étapes pour atteindre des objectifs de façon indépendante.",[12,62,63],{},"Ce tutoriel utilise l'ADK de Google, un framework flexible et modulaire pour développer et déployer des agents d'IA. Bien qu'optimisé pour Gemini et l'écosystème Google, l'ADK ne dépend pas d'un modèle ni d'un déploiement, et est conçu pour être compatible avec d'autres frameworks.",[54,65,67],{"id":66},"notre-application-de-démonstration-canada-city-advisor","Notre application de démonstration : Canada City Advisor",[12,69,70],{},"Pour illustrer le processus de déploiement, nous utiliserons un exemple concret : Canada City Advisor. Cet agent d'IA aide les utilisateurs à trouver la ville canadienne qui leur convient en fonction de leurs préférences et restrictions.",[12,72,73],{},"Voici comment l'agent fonctionne :",[75,76,77,81,98],"ul",{},[78,79,80],"li",{},"Les utilisateurs saisissent leur budget et leurs préférences en matière de style de vie.",[78,82,83,84],{},"L'agent principal coordonne deux sous-agents :",[75,85,86,89],{},[78,87,88],{},"Un agent dédié à l'analyse budgétaire qui évalue les contraintes financières. Il s'appuie sur des données obtenues auprès de la Société canadienne d'hypothèques et de logement.",[78,90,91,92,97],{},"Un agent dédié aux préférences en matière de style de vie qui associe les villes aux besoins des utilisateurs. Cet agent inclut un service météorologique qui utilise ",[16,93,96],{"href":94,"rel":95},"https://open-meteo.com/",[],"Open-Meteo"," pour obtenir des informations correctes sur les villes.",[78,99,100],{},"Le système génère des recommandations de villes personnalisées.",[12,102,103],{},"Cette architecture multi-agents illustre la puissance de l'IA agentique : différents agents spécialisés collaborent pour résoudre un problème complexe. Les sous-agents ne sont sollicités que lorsque l'agent principal détermine qu'une analyse du budget et du style de vie est nécessaire.",[12,105,106],{},[107,108],"img",{"alt":109,"src":110},"Architecture multi-agents pour développer une application de démonstration avec l'IA agentique","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751576568/obgxpxvlnxtzifddrrz1.png",[54,112,114],{"id":113},"prérequis","Prérequis",[12,116,117],{},"Avant de commencer, assurez-vous de disposer des éléments suivants :",[75,119,120,134,137],{},[78,121,122,123],{},"Un projet Google Cloud avec les API suivantes activées :",[75,124,125,128,131],{},[78,126,127],{},"API Cloud Run",[78,129,130],{},"API Artifact Registry",[78,132,133],{},"API Vertex AI",[78,135,136],{},"Un projet GitLab pour votre code source",[78,138,139],{},"Les autorisations adéquates dans GitLab et Google Cloud",[12,141,142],{},[46,143,144],{},"Étape 1 : configurer l'intégration IAM avec la fédération d'identité de charge de travail",[12,146,147,148,153],{},"La première étape consiste à établir une authentification sécurisée sans clé entre GitLab et Google Cloud à l'aide de ",[16,149,152],{"href":150,"rel":151},"https://cloud.google.com/iam/docs/workload-identity-federation",[],"la fédération d'identité de charge de travail",". Cette approche élimine le besoin de clés de compte de service et renforce la sécurité.",[12,155,156],{},"Dans votre projet GitLab :",[158,159,160,166],"ol",{},[78,161,162,163],{},"Accédez à ",[46,164,165],{},"Paramètres > Intégrations > Google Cloud IAM.",[78,167,168,169],{},"Indiquez les informations suivantes :",[75,170,171,177,183,189],{},[78,172,173,176],{},[46,174,175],{},"ID du projet"," : l'identifiant de votre projet Google Cloud",[78,178,179,182],{},[46,180,181],{},"Numéro du projet"," : disponible dans votre console Google Cloud",[78,184,185,188],{},[46,186,187],{},"ID du pool"," : un identifiant unique pour votre pool d'identité de charge de travail",[78,190,191,194],{},[46,192,193],{},"ID du fournisseur"," : un identifiant unique pour votre fournisseur d'identité",[12,196,197],{},"GitLab génère un script pour vous. Copiez-le et exécutez-le dans votre Google Cloud Shell pour créer la fédération d'identité de charge de travail.",[12,199,200],{},[46,201,202],{},"Étape 2 : configurer l'intégration Google Artifact Registry",[12,204,205],{},"Ensuite, nous allons configurer la connexion à Google Artifact Registry, où seront stockées nos images de conteneurs.",[158,207,208,214],{},[78,209,210,211],{},"Dans GitLab, accédez à ",[46,212,213],{},"Paramètres > Intégrations > Google Artifact Registry.",[78,215,216,217],{},"Indiquez les données suivantes :",[75,218,219,225,231],{},[78,220,221,224],{},[46,222,223],{},"ID du projet Google Cloud"," : identique à l'étape 1",[78,226,227,230],{},[46,228,229],{},"Nom du dépôt"," : nom d'un dépôt Artifact Registry existant",[78,232,233,236],{},[46,234,235],{},"Emplacement"," : région où se trouve votre dépôt",[12,238,239,242],{},[46,240,241],{},"Important"," : le dépôt doit déjà exister dans Artifact Registry, car GitLab ne créera pas de nouveau dépôt.",[12,244,245],{},"GitLab génère des commandes pour configurer les autorisations nécessaires. Exécutez-les dans Google Cloud Shell.",[12,247,248],{},"Ajoutez également ces rôles à l'identité du service pour le déploiement Cloud Run :",[75,250,251,257,262],{},[78,252,253],{},[254,255,256],"code",{},"roles/run.admin",[78,258,259],{},[254,260,261],{},"roles/iam.serviceAccountUser",[78,263,264],{},[254,265,266],{},"roles/cloudbuild.builds.editor",[12,268,269],{},"Vous pouvez ajouter ces rôles à l'aide des commandes gcloud suivantes :",[271,272,277],"pre",{"className":273,"code":274,"language":275,"meta":276,"style":276},"language-shell shiki shiki-themes github-light","GCP_PROJECT_ID=\"\u003Cyour-project-id>\" #replace\nGCP_PROJECT_NUMBER=\"\u003Cyour-project-number>\" #replace\nGCP_WORKLOAD_IDENTITY_POOL=\"\u003Cyour-pool-id>\" #replace\n\ngcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \\\n  --member=\"principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true\" \\\n  --role='roles/run.admin'\n\ngcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \\\n  --member=\"principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true\" \\\n  --role='roles/iam.serviceAccountUser'\n\ngcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \\\n  --member=\"principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true\" \\\n  --role='roles/cloudbuild.builds.editor'\n\n","shell","",[254,278,279,300,313,326,333,353,375,384,389,402,419,427,432,445,462],{"__ignoreMap":276},[280,281,284,288,292,296],"span",{"class":282,"line":283},"line",1,[280,285,287],{"class":286},"sgsFI","GCP_PROJECT_ID",[280,289,291],{"class":290},"sD7c4","=",[280,293,295],{"class":294},"sYBdl","\"\u003Cyour-project-id>\"",[280,297,299],{"class":298},"sAwPA"," #replace\n",[280,301,303,306,308,311],{"class":282,"line":302},2,[280,304,305],{"class":286},"GCP_PROJECT_NUMBER",[280,307,291],{"class":290},[280,309,310],{"class":294},"\"\u003Cyour-project-number>\"",[280,312,299],{"class":298},[280,314,316,319,321,324],{"class":282,"line":315},3,[280,317,318],{"class":286},"GCP_WORKLOAD_IDENTITY_POOL",[280,320,291],{"class":290},[280,322,323],{"class":294},"\"\u003Cyour-pool-id>\"",[280,325,299],{"class":298},[280,327,329],{"class":282,"line":328},4,[280,330,332],{"emptyLinePlaceholder":331},true,"\n",[280,334,336,340,343,346,349],{"class":282,"line":335},5,[280,337,339],{"class":338},"s7eDp","gcloud",[280,341,342],{"class":294}," projects",[280,344,345],{"class":294}," add-iam-policy-binding",[280,347,348],{"class":286}," ${GCP_PROJECT_ID} ",[280,350,352],{"class":351},"sYu0t","\\\n",[280,354,356,359,362,364,367,369,372],{"class":282,"line":355},6,[280,357,358],{"class":351},"  --member=",[280,360,361],{"class":294},"\"principalSet://iam.googleapis.com/projects/${",[280,363,305],{"class":286},[280,365,366],{"class":294},"}/locations/global/workloadIdentityPools/${",[280,368,318],{"class":286},[280,370,371],{"class":294},"}/attribute.developer_access/true\"",[280,373,374],{"class":351}," \\\n",[280,376,378,381],{"class":282,"line":377},7,[280,379,380],{"class":351},"  --role=",[280,382,383],{"class":294},"'roles/run.admin'\n",[280,385,387],{"class":282,"line":386},8,[280,388,332],{"emptyLinePlaceholder":331},[280,390,392,394,396,398,400],{"class":282,"line":391},9,[280,393,339],{"class":338},[280,395,342],{"class":294},[280,397,345],{"class":294},[280,399,348],{"class":286},[280,401,352],{"class":351},[280,403,405,407,409,411,413,415,417],{"class":282,"line":404},10,[280,406,358],{"class":351},[280,408,361],{"class":294},[280,410,305],{"class":286},[280,412,366],{"class":294},[280,414,318],{"class":286},[280,416,371],{"class":294},[280,418,374],{"class":351},[280,420,422,424],{"class":282,"line":421},11,[280,423,380],{"class":351},[280,425,426],{"class":294},"'roles/iam.serviceAccountUser'\n",[280,428,430],{"class":282,"line":429},12,[280,431,332],{"emptyLinePlaceholder":331},[280,433,435,437,439,441,443],{"class":282,"line":434},13,[280,436,339],{"class":338},[280,438,342],{"class":294},[280,440,345],{"class":294},[280,442,348],{"class":286},[280,444,352],{"class":351},[280,446,448,450,452,454,456,458,460],{"class":282,"line":447},14,[280,449,358],{"class":351},[280,451,361],{"class":294},[280,453,305],{"class":286},[280,455,366],{"class":294},[280,457,318],{"class":286},[280,459,371],{"class":294},[280,461,374],{"class":351},[280,463,465,467],{"class":282,"line":464},15,[280,466,380],{"class":351},[280,468,469],{"class":294},"'roles/cloudbuild.builds.editor'\n",[12,471,472],{},[46,473,474],{},"Étape 3 : créer le pipeline CI/CD",[12,476,477],{},"Passons maintenant à la partie la plus intéressante : la création de notre pipeline de déploiement, une tâche particulièrement simple grâce aux composants CI/CD de GitLab.",[12,479,480,481,484],{},"Créez un fichier ",[254,482,483],{},".gitlab-ci.yml"," à la racine de votre projet :",[271,486,490],{"className":487,"code":488,"language":489,"meta":276,"style":276},"language-yaml shiki shiki-themes github-light","stages:\n  - build\n  - test\n  - upload\n  - deploy\n\nvariables:\n  GITLAB_IMAGE: $CI_REGISTRY_IMAGE/main:$CI_COMMIT_SHORT_SHA\n  AR_IMAGE: $GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/main:$CI_COMMIT_SHORT_SHA\n\nbuild:\n  image: docker:24.0.5\n  stage: build\n  services:\n    - docker:24.0.5-dind\n  before_script:\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n  script:\n    - docker build -t $GITLAB_IMAGE .\n    - docker push $GITLAB_IMAGE\n\ninclude:\n  - template: Jobs/Dependency-Scanning.gitlab-ci.yml  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Dependency-Scanning.gitlab-ci.yml\n  - template: Jobs/SAST.gitlab-ci.yml  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml\n  - template: Jobs/Secret-Detection.gitlab-ci.yml  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml\n  - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main\n    inputs:\n      stage: upload\n      source: $GITLAB_IMAGE\n      target: $AR_IMAGE\n  - component: gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run@main\n    inputs:\n      stage: deploy\n      project_id: \"\u003Cyour-project-id>\" #replace\n      service: \"canadian-city\"\n      region: \"us-central1\"\n      image: $AR_IMAGE\n\n","yaml",[254,491,492,501,509,516,523,530,534,541,552,562,566,573,583,592,599,607,615,623,631,639,647,652,660,676,691,706,719,727,737,748,759,771,778,787,799,810,821],{"__ignoreMap":276},[280,493,494,498],{"class":282,"line":283},[280,495,497],{"class":496},"shJU0","stages",[280,499,500],{"class":286},":\n",[280,502,503,506],{"class":282,"line":302},[280,504,505],{"class":286},"  - ",[280,507,508],{"class":294},"build\n",[280,510,511,513],{"class":282,"line":315},[280,512,505],{"class":286},[280,514,515],{"class":294},"test\n",[280,517,518,520],{"class":282,"line":328},[280,519,505],{"class":286},[280,521,522],{"class":294},"upload\n",[280,524,525,527],{"class":282,"line":335},[280,526,505],{"class":286},[280,528,529],{"class":294},"deploy\n",[280,531,532],{"class":282,"line":355},[280,533,332],{"emptyLinePlaceholder":331},[280,535,536,539],{"class":282,"line":377},[280,537,538],{"class":496},"variables",[280,540,500],{"class":286},[280,542,543,546,549],{"class":282,"line":386},[280,544,545],{"class":496},"  GITLAB_IMAGE",[280,547,548],{"class":286},": ",[280,550,551],{"class":294},"$CI_REGISTRY_IMAGE/main:$CI_COMMIT_SHORT_SHA\n",[280,553,554,557,559],{"class":282,"line":391},[280,555,556],{"class":496},"  AR_IMAGE",[280,558,548],{"class":286},[280,560,561],{"class":294},"$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/main:$CI_COMMIT_SHORT_SHA\n",[280,563,564],{"class":282,"line":404},[280,565,332],{"emptyLinePlaceholder":331},[280,567,568,571],{"class":282,"line":421},[280,569,570],{"class":496},"build",[280,572,500],{"class":286},[280,574,575,578,580],{"class":282,"line":429},[280,576,577],{"class":496},"  image",[280,579,548],{"class":286},[280,581,582],{"class":294},"docker:24.0.5\n",[280,584,585,588,590],{"class":282,"line":434},[280,586,587],{"class":496},"  stage",[280,589,548],{"class":286},[280,591,508],{"class":294},[280,593,594,597],{"class":282,"line":447},[280,595,596],{"class":496},"  services",[280,598,500],{"class":286},[280,600,601,604],{"class":282,"line":464},[280,602,603],{"class":286},"    - ",[280,605,606],{"class":294},"docker:24.0.5-dind\n",[280,608,610,613],{"class":282,"line":609},16,[280,611,612],{"class":496},"  before_script",[280,614,500],{"class":286},[280,616,618,620],{"class":282,"line":617},17,[280,619,603],{"class":286},[280,621,622],{"class":294},"docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n",[280,624,626,629],{"class":282,"line":625},18,[280,627,628],{"class":496},"  script",[280,630,500],{"class":286},[280,632,634,636],{"class":282,"line":633},19,[280,635,603],{"class":286},[280,637,638],{"class":294},"docker build -t $GITLAB_IMAGE .\n",[280,640,642,644],{"class":282,"line":641},20,[280,643,603],{"class":286},[280,645,646],{"class":294},"docker push $GITLAB_IMAGE\n",[280,648,650],{"class":282,"line":649},21,[280,651,332],{"emptyLinePlaceholder":331},[280,653,655,658],{"class":282,"line":654},22,[280,656,657],{"class":496},"include",[280,659,500],{"class":286},[280,661,663,665,668,670,673],{"class":282,"line":662},23,[280,664,505],{"class":286},[280,666,667],{"class":496},"template",[280,669,548],{"class":286},[280,671,672],{"class":294},"Jobs/Dependency-Scanning.gitlab-ci.yml",[280,674,675],{"class":298},"  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Dependency-Scanning.gitlab-ci.yml\n",[280,677,679,681,683,685,688],{"class":282,"line":678},24,[280,680,505],{"class":286},[280,682,667],{"class":496},[280,684,548],{"class":286},[280,686,687],{"class":294},"Jobs/SAST.gitlab-ci.yml",[280,689,690],{"class":298},"  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml\n",[280,692,694,696,698,700,703],{"class":282,"line":693},25,[280,695,505],{"class":286},[280,697,667],{"class":496},[280,699,548],{"class":286},[280,701,702],{"class":294},"Jobs/Secret-Detection.gitlab-ci.yml",[280,704,705],{"class":298},"  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml\n",[280,707,709,711,714,716],{"class":282,"line":708},26,[280,710,505],{"class":286},[280,712,713],{"class":496},"component",[280,715,548],{"class":286},[280,717,718],{"class":294},"gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main\n",[280,720,722,725],{"class":282,"line":721},27,[280,723,724],{"class":496},"    inputs",[280,726,500],{"class":286},[280,728,730,733,735],{"class":282,"line":729},28,[280,731,732],{"class":496},"      stage",[280,734,548],{"class":286},[280,736,522],{"class":294},[280,738,740,743,745],{"class":282,"line":739},29,[280,741,742],{"class":496},"      source",[280,744,548],{"class":286},[280,746,747],{"class":294},"$GITLAB_IMAGE\n",[280,749,751,754,756],{"class":282,"line":750},30,[280,752,753],{"class":496},"      target",[280,755,548],{"class":286},[280,757,758],{"class":294},"$AR_IMAGE\n",[280,760,762,764,766,768],{"class":282,"line":761},31,[280,763,505],{"class":286},[280,765,713],{"class":496},[280,767,548],{"class":286},[280,769,770],{"class":294},"gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run@main\n",[280,772,774,776],{"class":282,"line":773},32,[280,775,724],{"class":496},[280,777,500],{"class":286},[280,779,781,783,785],{"class":282,"line":780},33,[280,782,732],{"class":496},[280,784,548],{"class":286},[280,786,529],{"class":294},[280,788,790,793,795,797],{"class":282,"line":789},34,[280,791,792],{"class":496},"      project_id",[280,794,548],{"class":286},[280,796,295],{"class":294},[280,798,299],{"class":298},[280,800,802,805,807],{"class":282,"line":801},35,[280,803,804],{"class":496},"      service",[280,806,548],{"class":286},[280,808,809],{"class":294},"\"canadian-city\"\n",[280,811,813,816,818],{"class":282,"line":812},36,[280,814,815],{"class":496},"      region",[280,817,548],{"class":286},[280,819,820],{"class":294},"\"us-central1\"\n",[280,822,824,827,829],{"class":282,"line":823},37,[280,825,826],{"class":496},"      image",[280,828,548],{"class":286},[280,830,758],{"class":294},[12,832,833],{},"Le pipeline se compose de quatre étapes :",[158,835,836,849,855,861],{},[78,837,838,841,842,848],{},[46,839,840],{},"Build"," : crée le conteneur ",[16,843,847],{"href":844,"rel":845,"title":846},"https://about.gitlab.com/fr-fr/blog/what-is-docker-comprehensive-guide/",[],"Qu'est-ce que Docker ?","Docker"," avec votre agent d'IA",[78,850,851,854],{},[46,852,853],{},"Test"," : exécute des scans de sécurité (analyse des conteneurs, analyse des dépendances, test statique de sécurité des applications)",[78,856,857,860],{},[46,858,859],{},"Importation"," : transfère le conteneur vers Artifact Registry",[78,862,863,866],{},[46,864,865],{},"Déploiement"," : déploie sur Cloud Run",[12,868,869,870,874],{},"Les ",[16,871,873],{"href":36,"rel":872},[],"composants CI/CD de GitLab"," possèdent un avantage indéniable : vous n'avez qu'à fournir quelques paramètres, et ils se chargent de gérer toute la logique complexe d'authentification et de déploiement.",[12,876,877],{},[46,878,879],{},"Étape 4 : déployer et tester",[12,881,882],{},"Une fois que tout est configuré, il est temps de déployer :",[158,884,885,891,894,897],{},[78,886,887,888,890],{},"Validez votre code et le fichier ",[254,889,483],{}," dans votre dépôt GitLab.",[78,892,893],{},"Le pipeline se déclenche automatiquement.",[78,895,896],{},"Surveillez la progression du pipeline dans l'interface CI/CD de GitLab.",[78,898,899],{},"Une fois terminé, accédez à l'URL de votre Cloud Run dans la console Google Cloud.",[12,901,902],{},"Vous y verrez chaque étape s'exécuter :",[75,904,905,911,916,921],{},[78,906,907,908,910],{},"L'étape ",[46,909,840],{}," crée votre conteneur.",[78,912,907,913,915],{},[46,914,853],{}," exécute des scans de sécurité complets.",[78,917,907,918,920],{},[46,919,859],{}," effectue un push vers Artifact Registry.",[78,922,907,923,925],{},[46,924,865],{}," crée ou met à jour votre service Cloud Run.",[54,927,929],{"id":928},"avantages-en-matière-de-sécurité","Avantages en matière de sécurité",[12,931,932],{},"Cette approche offre plusieurs avantages en matière de sécurité :",[75,934,935,941,947,953],{},[78,936,937,940],{},[46,938,939],{},"Aucun identifiant à longue durée de vie :"," la fédération d'identité de charge de travail élimine les clés de compte de service.",[78,942,943,946],{},[46,944,945],{},"Scanning de sécurité automatisé :"," chaque déploiement fait l'objet d'une analyse des vulnérabilités.",[78,948,949,952],{},[46,950,951],{},"Piste d'audit :"," vous profitez d'une visibilité complète sur qui a déployé quoi et quand.",[78,954,955,958],{},[46,956,957],{},"Principe du moindre privilège :"," des rôles Identity and Access Management (IAM) précis limitent l'accès.",[54,960,962],{"id":961},"résumé","Résumé",[12,964,965],{},"En combinant les fonctionnalités de sécurité de GitLab avec les puissantes plateformes d'IA sans serveur de Google Cloud, vous pouvez déployer des agents d'IA à la fois sécurisés et évolutifs. L'intégration entre GitLab et Google Cloud élimine une grande partie de la complexité généralement associée à ce type de déploiements.",[12,967,968,969,974],{},"Utilisez ",[16,970,973],{"href":971,"rel":972},"https://gitlab.com/gitlab-partners-public/google-cloud/demos/ai-agent-deployment",[],"l'exemple de code complet"," de ce tutoriel pour vous lancer dès maintenant.",[41,976,977],{},[12,978,979],{},[46,980,981],{},[16,982,52],{"href":50,"rel":983},[],[985,986,987],"style",{},"html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}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 .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}",{"title":276,"searchDepth":302,"depth":302,"links":989},[990,991,992,993,994],{"id":56,"depth":302,"text":57},{"id":66,"depth":302,"text":67},{"id":113,"depth":302,"text":114},{"id":928,"depth":302,"text":929},{"id":961,"depth":302,"text":962},"ai","2025-11-24","Notre guide, accompagné d'une application de démonstration, détaille comment utiliser l'IA agentique avec les intégrations natives et les composants CI/CD de GitLab.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670563/Blog/Hero%20Images/cloudcomputing.jpg",{},"/fr-fr/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab",{"noIndex":1000,"title":1005,"description":1006},"Déployez des agents d'IA sur Google Cloud avec GitLab","Notre guide, avec une application de démonstration, détaille comment utiliser l'IA agentique avec les intégrations natives et les composants CI/CD de GitLab.","fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab","fr-fr/blog/fast-and-secure-ai-agent-deployment-to-google-cloud-with-gitlab",[1010,1011,1012],"AI","google","tutorial","BlogPost","lmQ9REBfcpkDFY1Isx_AkZOl88RC9LKXROMiSEpwn88",{"logo":1016,"freeTrial":1021,"sales":1026,"login":1031,"items":1036,"search":1365,"minimal":1401,"duo":1420,"switchNav":1429,"pricingDeployment":1440},{"config":1017},{"href":1018,"dataGaName":1019,"dataGaLocation":1020},"/fr-fr/","gitlab logo","header",{"text":1022,"config":1023},"Commencer un essai gratuit",{"href":1024,"dataGaName":1025,"dataGaLocation":1020},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":1027,"config":1028},"Demander une démo",{"href":1029,"dataGaName":1030,"dataGaLocation":1020},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":1032,"config":1033},"Connexion",{"href":1034,"dataGaName":1035,"dataGaLocation":1020},"https://gitlab.com/users/sign_in/","sign in",[1037,1066,1168,1173,1287,1343],{"text":1038,"config":1039,"menu":1041},"Plateforme",{"dataNavLevelOne":1040},"platform",{"type":1042,"columns":1043},"cards",[1044,1050,1058],{"title":1038,"description":1045,"link":1046},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":1047,"config":1048},"Explorer notre plateforme",{"href":1049,"dataGaName":1040,"dataGaLocation":1020},"/fr-fr/platform/",{"title":1051,"description":1052,"link":1053},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":1054,"config":1055},"Découvrir GitLab Duo",{"href":1056,"dataGaName":1057,"dataGaLocation":1020},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1059,"description":1060,"link":1061},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":1062,"config":1063},"En savoir plus",{"href":1064,"dataGaName":1065,"dataGaLocation":1020},"/fr-fr/why-gitlab/","why gitlab",{"text":1067,"left":331,"config":1068,"menu":1070},"Produit",{"dataNavLevelOne":1069},"solutions",{"type":1071,"link":1072,"columns":1076,"feature":1147},"lists",{"text":1073,"config":1074},"Voir toutes les solutions",{"href":1075,"dataGaName":1069,"dataGaLocation":1020},"/fr-fr/solutions/",[1077,1102,1125],{"title":1078,"description":1079,"link":1080,"items":1085},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":1081},{"icon":1082,"href":1083,"dataGaName":1084,"dataGaLocation":1020},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[1086,1090,1093,1098],{"text":1087,"config":1088},"CI/CD",{"href":1089,"dataGaLocation":1020,"dataGaName":1087},"/fr-fr/solutions/continuous-integration/",{"text":1051,"config":1091},{"href":1056,"dataGaLocation":1020,"dataGaName":1092},"gitlab duo agent platform - product menu",{"text":1094,"config":1095},"Gestion du code source",{"href":1096,"dataGaLocation":1020,"dataGaName":1097},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":1099,"config":1100},"Livraison de logiciels automatisée",{"href":1083,"dataGaLocation":1020,"dataGaName":1101},"Automated software delivery",{"title":1103,"description":1104,"link":1105,"items":1110},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":1106},{"href":1107,"dataGaName":1108,"dataGaLocation":1020,"icon":1109},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1111,1115,1120],{"text":1112,"config":1113},"Tests de sécurité des applications",{"href":1107,"dataGaName":1114,"dataGaLocation":1020},"Application security testing",{"text":1116,"config":1117},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":1118,"dataGaLocation":1020,"dataGaName":1119},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":1121,"config":1122},"Conformité logicielle",{"href":1123,"dataGaName":1124,"dataGaLocation":1020},"/fr-fr/solutions/software-compliance/","software compliance",{"title":1126,"link":1127,"items":1132},"Mesures",{"config":1128},{"icon":1129,"href":1130,"dataGaName":1131,"dataGaLocation":1020},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[1133,1137,1142],{"text":1134,"config":1135},"Visibilité et mesures",{"href":1130,"dataGaLocation":1020,"dataGaName":1136},"Visibility and Measurement",{"text":1138,"config":1139},"Gestion de la chaîne de valeur",{"href":1140,"dataGaLocation":1020,"dataGaName":1141},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":1143,"config":1144},"Analyses et informations",{"href":1145,"dataGaLocation":1020,"dataGaName":1146},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":1148,"type":1071,"items":1149},"GitLab",[1150,1156,1162],{"text":1151,"config":1152},"Entreprises",{"icon":1153,"href":1154,"dataGaLocation":1020,"dataGaName":1155},"Building","/fr-fr/enterprise/","enterprise",{"text":1157,"config":1158},"Pour les PME",{"icon":1159,"href":1160,"dataGaLocation":1020,"dataGaName":1161},"Work","/fr-fr/small-business/","small business",{"text":1163,"config":1164},"Pour le secteur public",{"icon":1165,"href":1166,"dataGaLocation":1020,"dataGaName":1167},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":1169,"config":1170},"Tarifs",{"href":1171,"dataGaName":1172,"dataGaLocation":1020,"dataNavLevelOne":1172},"/fr-fr/pricing/","pricing",{"text":1174,"config":1175,"menu":1177},"Ressources",{"dataNavLevelOne":1176},"resources",{"type":1071,"link":1178,"columns":1182,"feature":1276},{"text":1179,"config":1180},"Afficher toutes les ressources",{"href":1181,"dataGaName":1176,"dataGaLocation":1020},"/fr-fr/resources/",[1183,1216,1243],{"title":1184,"items":1185},"Premiers pas",[1186,1191,1196,1201,1206,1211],{"text":1187,"config":1188},"Installation",{"href":1189,"dataGaName":1190,"dataGaLocation":1020},"/fr-fr/install/","install",{"text":1192,"config":1193},"Guides de démarrage",{"href":1194,"dataGaName":1195,"dataGaLocation":1020},"/fr-fr/get-started/","quick setup checklists",{"text":1197,"config":1198},"Apprentissage",{"href":1199,"dataGaLocation":1020,"dataGaName":1200},"https://university.gitlab.com/","learn",{"text":1202,"config":1203},"Documentation",{"href":1204,"dataGaName":1205,"dataGaLocation":1020},"https://docs.gitlab.com/","product documentation",{"text":1207,"config":1208},"Vidéos sur les bonnes pratiques",{"href":1209,"dataGaName":1210,"dataGaLocation":1020},"/fr-fr/getting-started-videos/","best practice videos",{"text":1212,"config":1213},"Intégrations",{"href":1214,"dataGaName":1215,"dataGaLocation":1020},"/fr-fr/integrations/","integrations",{"title":1217,"items":1218},"Découvrir",[1219,1224,1229,1234,1238],{"text":1220,"config":1221},"Témoignages clients",{"href":1222,"dataGaName":1223,"dataGaLocation":1020},"/fr-fr/customers/","customer success stories",{"text":1225,"config":1226},"Blog",{"href":1227,"dataGaName":1228,"dataGaLocation":1020},"/fr-fr/blog/","blog",{"text":1230,"config":1231},"Demo Hub",{"href":1232,"dataGaName":1233,"dataGaLocation":1020},"/fr-fr/demo-hub/","demo hub",{"text":1235,"config":1236},"The Source",{"href":1237,"dataGaName":1228,"dataGaLocation":1020},"/fr-fr/the-source/",{"text":1239,"config":1240},"Travail à distance",{"href":1241,"dataGaName":1242,"dataGaLocation":1020},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1244,"items":1245},"Connecter",[1246,1251,1256,1261,1266,1271],{"text":1247,"config":1248},"Services GitLab",{"href":1249,"dataGaName":1250,"dataGaLocation":1020},"/fr-fr/services/","services",{"text":1252,"config":1253},"Contribuer",{"href":1254,"dataGaName":1255,"dataGaLocation":1020},"https://contributors.gitlab.com","contribute",{"text":1257,"config":1258},"Communauté",{"href":1259,"dataGaName":1260,"dataGaLocation":1020},"/community/","community",{"text":1262,"config":1263},"Forum",{"href":1264,"dataGaName":1265,"dataGaLocation":1020},"https://forum.gitlab.com/","forum",{"text":1267,"config":1268},"Événements",{"href":1269,"dataGaName":1270,"dataGaLocation":1020},"/events/","events",{"text":1272,"config":1273},"Partenaires",{"href":1274,"dataGaName":1275,"dataGaLocation":1020},"/fr-fr/partners/","partners",{"config":1277,"title":1280,"text":1281,"link":1282},{"background":1278,"textColor":1279},"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":1283,"config":1284},"Lire les articles les plus récents",{"href":1285,"dataGaName":1286,"dataGaLocation":1020},"/fr-fr/whats-new/","whats new",{"text":1288,"config":1289,"menu":1291},"Société",{"dataNavLevelOne":1290},"company",{"type":1071,"columns":1292},[1293],{"items":1294},[1295,1300,1306,1308,1313,1318,1323,1328,1333,1338],{"text":1296,"config":1297},"À propos",{"href":1298,"dataGaName":1299,"dataGaLocation":1020},"/fr-fr/company/","about",{"text":1301,"config":1302,"footerGa":1305},"Carrières",{"href":1303,"dataGaName":1304,"dataGaLocation":1020},"/jobs/","jobs",{"dataGaName":1304},{"text":1267,"config":1307},{"href":1269,"dataGaName":1270,"dataGaLocation":1020},{"text":1309,"config":1310},"Leadership",{"href":1311,"dataGaName":1312,"dataGaLocation":1020},"/company/team/e-group/","leadership",{"text":1314,"config":1315},"Manuel",{"href":1316,"dataGaName":1317,"dataGaLocation":1020},"https://handbook.gitlab.com/","handbook",{"text":1319,"config":1320},"Relations avec les investisseurs",{"href":1321,"dataGaName":1322,"dataGaLocation":1020},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1324,"config":1325},"Trust Center",{"href":1326,"dataGaName":1327,"dataGaLocation":1020},"/fr-fr/security/","trust center",{"text":1329,"config":1330},"Centre pour la transparence de l'IA",{"href":1331,"dataGaName":1332,"dataGaLocation":1020},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1334,"config":1335},"Newsletter",{"href":1336,"dataGaName":1337,"dataGaLocation":1020},"/company/contact/#contact-forms","newsletter",{"text":1339,"config":1340},"Presse",{"href":1341,"dataGaName":1342,"dataGaLocation":1020},"/press/","press",{"text":1344,"config":1345,"menu":1346},"Nous contacter",{"dataNavLevelOne":1290},{"type":1071,"columns":1347},[1348],{"items":1349},[1350,1355,1360],{"text":1351,"config":1352},"Contacter l'équipe commerciale",{"href":1353,"dataGaName":1354,"dataGaLocation":1020},"/fr-fr/sales/","talk to sales",{"text":1356,"config":1357},"Assistance GitLab",{"href":1358,"dataGaName":1359,"dataGaLocation":1020},"https://support.gitlab.com/hc/en-us","support portal",{"text":1361,"config":1362},"Portail clients GitLab",{"href":1363,"dataGaName":1364,"dataGaLocation":1020},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1366,"login":1367,"suggestions":1374},"Fermer",{"text":1368,"link":1369},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1370,"config":1371},"GitLab.com",{"href":1034,"dataGaName":1372,"dataGaLocation":1373},"search login","search",{"text":1375,"default":1376},"Suggestions",[1377,1380,1385,1387,1392,1397],{"text":1051,"config":1378},{"href":1056,"dataGaName":1379,"dataGaLocation":1373},"GitLab Duo Agent Platform",{"text":1381,"config":1382},"Suggestions de code (IA)",{"href":1383,"dataGaName":1384,"dataGaLocation":1373},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1087,"config":1386},{"href":1089,"dataGaName":1087,"dataGaLocation":1373},{"text":1388,"config":1389},"GitLab sur AWS",{"href":1390,"dataGaName":1391,"dataGaLocation":1373},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1393,"config":1394},"GitLab sur Google Cloud",{"href":1395,"dataGaName":1396,"dataGaLocation":1373},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1398,"config":1399},"Pourquoi utiliser GitLab ?",{"href":1064,"dataGaName":1400,"dataGaLocation":1373},"Why GitLab?",{"freeTrial":1402,"mobileIcon":1407,"desktopIcon":1412,"secondaryButton":1415},{"text":1403,"config":1404},"Commencer votre essai gratuit",{"href":1405,"dataGaName":1025,"dataGaLocation":1406},"https://gitlab.com/-/trials/new/","nav",{"altText":1408,"config":1409},"Icône GitLab",{"src":1410,"dataGaName":1411,"dataGaLocation":1406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1408,"config":1413},{"src":1414,"dataGaName":1411,"dataGaLocation":1406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1416,"config":1417},"Commencer",{"href":1418,"dataGaName":1419,"dataGaLocation":1406},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1421,"mobileIcon":1425,"desktopIcon":1427},{"text":1422,"config":1423},"En savoir plus sur GitLab Duo",{"href":1056,"dataGaName":1424,"dataGaLocation":1406},"gitlab duo",{"altText":1408,"config":1426},{"src":1410,"dataGaName":1411,"dataGaLocation":1406},{"altText":1408,"config":1428},{"src":1414,"dataGaName":1411,"dataGaLocation":1406},{"button":1430,"mobileIcon":1435,"desktopIcon":1437},{"text":1431,"config":1432},"/switch",{"href":1433,"dataGaName":1434,"dataGaLocation":1406},"#contact","switch",{"altText":1408,"config":1436},{"src":1410,"dataGaName":1411,"dataGaLocation":1406},{"altText":1408,"config":1438},{"src":1439,"dataGaName":1411,"dataGaLocation":1406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1441,"mobileIcon":1446,"desktopIcon":1448},{"text":1442,"config":1443},"Retour aux tarifs",{"href":1171,"dataGaName":1444,"dataGaLocation":1406,"icon":1445},"back to pricing","GoBack",{"altText":1408,"config":1447},{"src":1410,"dataGaName":1411,"dataGaLocation":1406},{"altText":1408,"config":1449},{"src":1414,"dataGaName":1411,"dataGaLocation":1406},{"title":1451,"button":1452,"config":1456},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":1062,"config":1453},{"href":1454,"dataGaName":1455,"dataGaLocation":1020},"/fr-fr/gitlab-orbit/","orbit",{"layout":1457,"disabled":1000},"release",{"data":1459},{"text":1460,"source":1461,"edit":1467,"contribute":1472,"config":1476,"items":1481,"minimal":1688},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1462,"config":1463},"Afficher le code source de la page",{"href":1464,"dataGaName":1465,"dataGaLocation":1466},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1468,"config":1469},"Modifier cette page",{"href":1470,"dataGaName":1471,"dataGaLocation":1466},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1252,"config":1473},{"href":1474,"dataGaName":1475,"dataGaLocation":1466},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1477,"facebook":1478,"youtube":1479,"linkedin":1480},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1482,1528,1580,1623,1655],{"title":1169,"links":1483,"subMenu":1498},[1484,1488,1493],{"text":1485,"config":1486},"Voir les forfaits",{"href":1171,"dataGaName":1487,"dataGaLocation":1466},"view plans",{"text":1489,"config":1490},"GitLab Premium",{"href":1491,"dataGaName":1492,"dataGaLocation":1466},"/fr-fr/pricing/premium/","why premium",{"text":1494,"config":1495},"GitLab Ultimate",{"href":1496,"dataGaName":1497,"dataGaLocation":1466},"/fr-fr/pricing/ultimate/","why ultimate",[1499],{"title":1344,"links":1500},[1501,1503,1505,1508,1513,1518,1523],{"text":1351,"config":1502},{"href":1353,"dataGaName":1030,"dataGaLocation":1466},{"text":1356,"config":1504},{"href":1358,"dataGaName":1359,"dataGaLocation":1466},{"text":1506,"config":1507},"Portail clients",{"href":1363,"dataGaName":1364,"dataGaLocation":1466},{"text":1509,"config":1510},"Statut",{"href":1511,"dataGaName":1512,"dataGaLocation":1466},"https://status.gitlab.com/","status",{"text":1514,"config":1515},"Conditions d'utilisation",{"href":1516,"dataGaName":1517,"dataGaLocation":1466},"/terms/","terms of use",{"text":1519,"config":1520},"Politique de confidentialité",{"href":1521,"dataGaName":1522,"dataGaLocation":1466},"/fr-fr/privacy/","privacy statement",{"text":1524,"config":1525},"Gestion des cookies",{"dataGaName":1526,"dataGaLocation":1466,"id":1527,"isOneTrustButton":331},"cookie preferences","ot-sdk-btn",{"title":1067,"links":1529,"subMenu":1538},[1530,1534],{"text":1531,"config":1532},"Plateforme DevSecOps",{"href":1049,"dataGaName":1533,"dataGaLocation":1466},"devsecops platform",{"text":1535,"config":1536},"Développement assisté par l'IA",{"href":1056,"dataGaName":1537,"dataGaLocation":1466},"ai-assisted development",[1539],{"title":1540,"links":1541},"Thèmes",[1542,1546,1551,1556,1561,1566,1571,1576],{"text":1087,"config":1543},{"href":1544,"dataGaName":1545,"dataGaLocation":1466},"/fr-fr/topics/ci-cd/","cicd",{"text":1547,"config":1548},"GitOps",{"href":1549,"dataGaName":1550,"dataGaLocation":1466},"/fr-fr/topics/gitops/","gitops",{"text":1552,"config":1553},"DevOps",{"href":1554,"dataGaName":1555,"dataGaLocation":1466},"/fr-fr/topics/devops/","devops",{"text":1557,"config":1558},"Contrôle de version",{"href":1559,"dataGaName":1560,"dataGaLocation":1466},"/fr-fr/topics/version-control/","version control",{"text":1562,"config":1563},"DevSecOps",{"href":1564,"dataGaName":1565,"dataGaLocation":1466},"/fr-fr/topics/devsecops/","devsecops",{"text":1567,"config":1568},"Cloud-native",{"href":1569,"dataGaName":1570,"dataGaLocation":1466},"/fr-fr/topics/cloud-native/","cloud native",{"text":1572,"config":1573},"IA pour la programmation",{"href":1574,"dataGaName":1575,"dataGaLocation":1466},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":20,"config":1577},{"href":1578,"dataGaName":1579,"dataGaLocation":1466},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1581,"links":1582},"Solutions",[1583,1586,1588,1593,1596,1599,1602,1605,1607,1610,1613,1618],{"text":1112,"config":1584},{"href":1107,"dataGaName":1585,"dataGaLocation":1466},"Application Security Testing",{"text":1099,"config":1587},{"href":1083,"dataGaName":1084,"dataGaLocation":1466},{"text":1589,"config":1590},"Développement Agile",{"href":1591,"dataGaName":1592,"dataGaLocation":1466},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":1094,"config":1594},{"href":1096,"dataGaName":1595,"dataGaLocation":1466},"source code management",{"text":1087,"config":1597},{"href":1089,"dataGaName":1598,"dataGaLocation":1466},"continuous integration & delivery",{"text":1138,"config":1600},{"href":1140,"dataGaName":1601,"dataGaLocation":1466},"value stream management",{"text":1547,"config":1603},{"href":1604,"dataGaName":1550,"dataGaLocation":1466},"/fr-fr/solutions/gitops/",{"text":1151,"config":1606},{"href":1154,"dataGaName":1155,"dataGaLocation":1466},{"text":1608,"config":1609},"PME",{"href":1160,"dataGaName":1161,"dataGaLocation":1466},{"text":1611,"config":1612},"Secteur public",{"href":1166,"dataGaName":1167,"dataGaLocation":1466},{"text":1614,"config":1615},"Éducation",{"href":1616,"dataGaName":1617,"dataGaLocation":1466},"/fr-fr/solutions/education/","education",{"text":1619,"config":1620},"Services financiers",{"href":1621,"dataGaName":1622,"dataGaLocation":1466},"/fr-fr/solutions/finance/","financial services",{"title":1174,"links":1624},[1625,1627,1629,1631,1634,1636,1639,1641,1643,1645,1647,1649,1651,1653],{"text":1187,"config":1626},{"href":1189,"dataGaName":1190,"dataGaLocation":1466},{"text":1192,"config":1628},{"href":1194,"dataGaName":1195,"dataGaLocation":1466},{"text":1197,"config":1630},{"href":1199,"dataGaName":1200,"dataGaLocation":1466},{"text":1202,"config":1632},{"href":1204,"dataGaName":1633,"dataGaLocation":1466},"docs",{"text":1225,"config":1635},{"href":1227,"dataGaName":1228,"dataGaLocation":1466},{"text":1637,"config":1638},"Nouveautés",{"href":1285,"dataGaName":1286,"dataGaLocation":1466},{"text":1220,"config":1640},{"href":1222,"dataGaName":1223,"dataGaLocation":1466},{"text":1239,"config":1642},{"href":1241,"dataGaName":1242,"dataGaLocation":1466},{"text":1247,"config":1644},{"href":1249,"dataGaName":1250,"dataGaLocation":1466},{"text":1252,"config":1646},{"href":1254,"dataGaName":1255,"dataGaLocation":1466},{"text":1257,"config":1648},{"href":1259,"dataGaName":1260,"dataGaLocation":1466},{"text":1262,"config":1650},{"href":1264,"dataGaName":1265,"dataGaLocation":1466},{"text":1267,"config":1652},{"href":1269,"dataGaName":1270,"dataGaLocation":1466},{"text":1272,"config":1654},{"href":1274,"dataGaName":1275,"dataGaLocation":1466},{"title":1288,"links":1656},[1657,1659,1661,1663,1665,1667,1672,1677,1679,1681,1683],{"text":1296,"config":1658},{"href":1298,"dataGaName":1290,"dataGaLocation":1466},{"text":1301,"config":1660},{"href":1303,"dataGaName":1304,"dataGaLocation":1466},{"text":1309,"config":1662},{"href":1311,"dataGaName":1312,"dataGaLocation":1466},{"text":1314,"config":1664},{"href":1316,"dataGaName":1317,"dataGaLocation":1466},{"text":1319,"config":1666},{"href":1321,"dataGaName":1322,"dataGaLocation":1466},{"text":1668,"config":1669},"Développement durable",{"href":1670,"dataGaName":1671,"dataGaLocation":1466},"/sustainability/","Sustainability",{"text":1673,"config":1674},"Diversité, inclusion et appartenance (DIB)",{"href":1675,"dataGaName":1676,"dataGaLocation":1466},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1324,"config":1678},{"href":1326,"dataGaName":1327,"dataGaLocation":1466},{"text":1334,"config":1680},{"href":1336,"dataGaName":1337,"dataGaLocation":1466},{"text":1339,"config":1682},{"href":1341,"dataGaName":1342,"dataGaLocation":1466},{"text":1684,"config":1685},"Déclaration de transparence sur l'esclavage moderne",{"href":1686,"dataGaName":1687,"dataGaLocation":1466},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1689},[1690,1692,1694],{"text":1514,"config":1691},{"href":1516,"dataGaName":1517,"dataGaLocation":1466},{"text":1524,"config":1693},{"dataGaName":1526,"dataGaLocation":1466,"id":1527,"isOneTrustButton":331},{"text":1519,"config":1695},{"href":1521,"dataGaName":1522,"dataGaLocation":1466},[1697],{"id":1698,"title":7,"body":999,"config":1699,"content":1701,"description":999,"extension":1705,"meta":1706,"navigation":331,"path":1707,"seo":1708,"stem":1709,"__hash__":1710},"blogAuthors/en-us/blog/authors/regnard-raquedan.yml",{"template":1700},"BlogAuthor",{"name":7,"config":1702},{"headshot":1703,"ctfId":1704},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663118/Blog/Author%20Headshots/regnard_raquedan_headshot.png","rraquedan","yml",{},"/en-us/blog/authors/regnard-raquedan",{},"en-us/blog/authors/regnard-raquedan","1JCF9gTeSA0OaLWrorCsz7_b5_2A2kagAMVhH8r4NcM",[1712,1720,1728],{"title":1713,"description":1714,"heroImage":1715,"category":995,"date":1716,"authors":1717,"slug":1719,"externalUrl":999},"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",[1718],"Michael Friedrich","modernize-java-with-cursor-and-gitlab",{"title":1721,"description":1722,"heroImage":1723,"category":995,"date":1724,"authors":1725,"slug":1727,"externalUrl":999},"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",[1726],"Sam Wiskow","ai-agents-for-migrating-rate-limiting-system",{"title":1729,"description":1730,"heroImage":1731,"category":995,"date":1732,"authors":1733,"slug":1735,"externalUrl":999},"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",[1734],"Jessica Taylor","agentic-coding-only-as-good-as-context",{"promotions":1737},[1738,1751,1763,1775],{"id":1739,"categories":1740,"header":1741,"text":1742,"button":1743,"image":1748},"ai-modernization",[995],"L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1744,"config":1745},"Obtenez votre score de maturité IA",{"href":1746,"dataGaName":1747,"dataGaLocation":1228},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1749},{"src":1750},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1752,"categories":1753,"header":1755,"text":1742,"button":1756,"image":1760},"devops-modernization",[1754,1565],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1757,"config":1758},"Obtenez votre score de maturité DevOps",{"href":1759,"dataGaName":1747,"dataGaLocation":1228},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1761},{"src":1762},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1764,"categories":1765,"header":1767,"text":1742,"button":1768,"image":1772},"security-modernization",[1766],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1769,"config":1770},"Obtenez votre score de maturité en matière de sécurité",{"href":1771,"dataGaName":1747,"dataGaLocation":1228},"/fr-fr/assessments/security-modernization-assessment/",{"config":1773},{"src":1774},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1776,"paths":1777,"header":1780,"text":1781,"button":1782,"image":1787},"github-azure-migration",[1778,1779],"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":1783,"config":1784},"Découvrez les différences entre GitLab et GitHub",{"href":1785,"dataGaName":1786,"dataGaLocation":1228},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1788},{"src":1762},{"header":1790,"blurb":1791,"button":1792,"secondaryButton":1796},"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":1022,"config":1793},{"href":1794,"dataGaName":1025,"dataGaLocation":1795},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1351,"config":1797},{"href":1353,"dataGaName":1030,"dataGaLocation":1795},1786803763296]