[{"data":1,"prerenderedAt":710},["ShallowReactive",2],{"/fr-fr/blog/tutorial-secure-and-optimize-your-maven-repository-in-gitlab/":3,"navigation-fr-fr":39,"banner-fr-fr":458,"footer-fr-fr":471,"Tim Rizzi":682,"next-steps-fr-fr":695},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":28,"_id":32,"_type":33,"title":34,"_source":35,"_file":36,"_stem":37,"_extension":38},"/fr-fr/blog/tutorial-secure-and-optimize-your-maven-repository-in-gitlab","blog",false,"",{"title":9,"description":10,"ogTitle":9,"ogDescription":10,"noIndex":6,"ogImage":11,"ogUrl":12,"ogSiteName":13,"ogType":14,"canonicalUrls":12,"schema":15},"Comment sécuriser et optimiser votre dépôt Maven dans GitLab","Optimisez votre workflow DevSecOps en adoptant des bonnes pratiques, en maîtrisant des techniques avancées et en découvrant nos prochaines fonctionnalités.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666187/Blog/Hero%20Images/blog-image-template-1800x945__6_.png","https://about.gitlab.com/blog/tutorial-secure-and-optimize-your-maven-repository-in-gitlab","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Comment sécuriser et optimiser votre dépôt Maven dans GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tim Rizzi\"}],\n        \"datePublished\": \"2025-07-30\",\n      }",{"title":9,"description":10,"authors":17,"heroImage":11,"date":19,"body":20,"category":21,"tags":22},[18],"Tim Rizzi","2025-07-30","En tant que Product Manager chez GitLab, j'ai le plaisir de vous présenter nos solutions pour sécuriser et optimiser votre dépôt Maven. GitLab s'engage à offrir une plateforme DevSecOps complète, où la gestion des packages et la sécurisation des dépôts Maven jouent un rôle clé. Découvrez dans ce tutoriel les bonnes pratiques, les techniques avancées et les fonctionnalités à venir qui vont transformer votre workflow Maven.\n\n## Sécurisation de votre dépôt Maven : une approche globale\n\nLa sécurisation de votre chaîne d'approvisionnement logicielle est une priorité absolue. Voici les stratégies essentielles pour renforcer la sécurité de vos paquets Maven dans GitLab.\n\n### Mettre en œuvre un système d'authentification forte\n\n**Jetons d'accès personnels (PAT) :** privilégiez les PAT pour un contrôle d'accès affiné.\n\nPar exemple :\n\n```bash\nmvn deploy -s settings.xml\n```\n\nAvec la configuration suivante dans `settings.xml` :\n\n```xml\n\u003Csettings>\n  \u003Cservers>\n    \u003Cserver>\n      \u003Cid>gitlab-maven\u003C/id>\n      \u003Cconfiguration>\n        \u003ChttpHeaders>\n          \u003Cproperty>\n            \u003Cname>Private-Token\u003C/name>\n            \u003Cvalue>${env.GITLAB_PERSONAL_TOKEN}\u003C/value>\n          \u003C/property>\n        \u003C/httpHeaders>\n      \u003C/configuration>\n    \u003C/server>\n  \u003C/servers>\n\u003C/settings>\n```\n\n**Tokens de déploiement :** adaptés pour les pipelines CI/CD. Générez-les dans les paramètres de votre projet GitLab et intégrez-les dans votre fichier `.gitlab-ci.yml`.\n\n```yaml\ndeploy:\n  script:\n    - 'mvn deploy -s ci_settings.xml'\n  variables:\n    MAVEN_CLI_OPTS: \"-s ci_settings.xml --batch-mode\"\n    MAVEN_OPTS: \"-Dmaven.repo.local=.m2/repository\"\n  only:\n    - main\n```\n\nVoici le fichier `ci_settings.xml` correspondant :\n\n```xml\n\u003Csettings xmlns=\"http://maven.apache.org/SETTINGS/1.1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd\">\n  \u003Cservers>\n    \u003Cserver>\n      \u003Cid>gitlab-maven\u003C/id>\n      \u003Cconfiguration>\n        \u003ChttpHeaders>\n          \u003Cproperty>\n            \u003Cname>Deploy-Token\u003C/name>\n            \u003Cvalue>${env.CI_DEPLOY_PASSWORD}\u003C/value>\n          \u003C/property>\n        \u003C/httpHeaders>\n      \u003C/configuration>\n    \u003C/server>\n  \u003C/servers>\n\u003C/settings>\n```\n\nRemarques :\n\n* La variable `CI_DEPLOY_PASSWORD` doit être configurée comme une variable CI/CD dans les paramètres de votre projet GitLab et contenir le token de déploiement.\n* L'élément `\u003Cid>` doit correspondre à l'ID du dépôt tel qu'il est défini dans le fichier `pom.xml` de votre projet.\n\n**Rotation des tokens :** automatisez la stratégie de rotation des tokens à l'aide de l'API GitLab. Par exemple, vous pouvez planifier un pipeline mensuel qui regénère et met à jour vos tokens :\n\n```yaml\nrotate_tokens:\n  script:\n    - curl --request POST \"https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/deploy_tokens\" --header \"PRIVATE-TOKEN: ${ADMIN_TOKEN}\" --form \"name=maven-deploy-${CI_PIPELINE_ID}\" --form \"scopes[]=read_registry\" --form \"scopes[]=write_registry\"\n  only:\n    - schedules\n```\n\n### Tirer parti des fonctionnalités de sécurité intégrées de GitLab\n\n**Analyse des dépendances :** activez-la dans votre fichier `.gitlab-ci.yml`.\n\n```yaml\ninclude:\n  - template: Security/Dependency-Scanning.gitlab-ci.yml\n\nvariables:\n  DS_JAVA_VERSION: 11\n```\n\n**Analyse des conteneurs :** si vous conteneurisez vos applications Maven.\n\n```yaml\ninclude:\n  - template: Security/Container-Scanning.gitlab-ci.yml\n\nvariables:\n  CS_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA\n```\n\n**Conformité des licences :** assurez-vous que toutes les dépendances respectent les licences autorisées dans votre projet.\n\n```yaml\ninclude:\n  - template: Security/License-Scanning.gitlab-ci.yml\n```\n\n### Sécuriser votre pipeline CI/CD\n\n* **Variables CI/CD :** stockez toutes les informations contenant des données sensibles en toute sécurité.\n\n  ```yaml\n  variables:\n    MAVEN_REPO_USER: ${CI_DEPLOY_USER}\n    MAVEN_REPO_PASS: ${CI_DEPLOY_PASSWORD}\n  ```\n* **Variables masquées :** empêchez leur affichage dans les job logs et définissez-les dans vos paramètres GitLab CI/CD.\n* **Branches et tags protégés :** configurez-les dans les paramètres de votre projet GitLab pour restreindre les droits de publication des packages Maven aux utilisateurs autorisés.\n\n### Mettre en œuvre la signature de vos paquets\n\n* Utilisez le plug-in Maven GPG pour signer vos artefacts.\n\n  ```xml\n  \u003Cplugin>\n    \u003CgroupId>org.apache.maven.plugins\u003C/groupId>\n    \u003CartifactId>maven-gpg-plugin\u003C/artifactId>\n    \u003Cversion>1.6\u003C/version>\n    \u003Cexecutions>\n      \u003Cexecution>\n        \u003Cid>sign-artifacts\u003C/id>\n        \u003Cphase>verify\u003C/phase>\n        \u003Cgoals>\n          \u003Cgoal>sign\u003C/goal>\n        \u003C/goals>\n      \u003C/execution>\n    \u003C/executions>\n  \u003C/plugin>\n  ```\n\n* Stockez votre clé GPG dans des variables GitLab CI/CD sécurisées.\n\n### Contrôler les accès au registre de paquets\n\n* Configurez les paramètres du registre de paquets au niveau du projet et du groupe dans GitLab afin de restreindre les accès aux seuls utilisateurs autorisés.\n* Activez les listes d'autorisation d'IP au niveau du réseau dans les paramètres de votre instance GitLab pour restreindre l'accès réseau aux adresses approuvées.\n\n## Optimisation des performances : fluidifiez votre workflow Maven\n\nLa gestion de projets complexes ou de nombreuses dépendances exige une productivité maximale. Découvrez ci-dessous des techniques avancées pour tirer le meilleur parti de vos paquets Maven dans GitLab et accélérer vos compilations.\n\n### Maîtriser la gestion des dépendances\n\n* Centralisez vos versions dans la section `\u003CdependencyManagement>` de votre fichier POM parent.\n\n  ```xml\n  \u003CdependencyManagement>\n    \u003Cdependencies>\n      \u003Cdependency>\n        \u003CgroupId>org.springframework.boot\u003C/groupId>\n        \u003CartifactId>spring-boot-dependencies\u003C/artifactId>\n        \u003Cversion>${spring-boot.version}\u003C/version>\n        \u003Ctype>pom\u003C/type>\n        \u003Cscope>import\u003C/scope>\n      \u003C/dependency>\n    \u003C/dependencies>\n  \u003C/dependencyManagement>\n  ```\n### Tirer parti des projets multi-modules\n\n  * Structurez votre projet avec un POM parent et plusieurs modules enfants :\n\n    ```\n    my-project/\n    ├── pom.xml\n    ├── module1/\n    │   └── pom.xml\n    ├── module2/\n    │   └── pom.xml\n    └── module3/\n        └── pom.xml\n    ```\n  * Utilisez le réacteur Maven pour compiler les modules dans un ordre optimal :\n\n    ```bash\n    mvn clean install\n    ```\n\n### Mettre en œuvre les compilations parallèles\n\n* Utilisez la fonctionnalité de compilation parallèle de Maven :\n\n  ```bash\n  mvn -T 4C clean install\n  ```\n\n### Optimiser votre pipeline CI/CD\n\n* Configurez la mise en cache dans `.gitlab-ci.yml` pour accélérer les compilations :\n\n  ```yaml\n  cache:\n    paths:\n      - .m2/repository\n\n  build:\n    script:\n      - mvn clean package -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository\n  ```\n* Implémentez des compilations incrémentielles :\n\n  ```yaml\n  build:\n    script:\n      - mvn clean install -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -am -amd -fae\n  ```\n\n### Utiliser la mise en cache des compilations\n\n* Intégrez l'extension Gradle Enterprise de Maven pour une gestion avancée de la mise en cache des compilations :\n\n  ```xml\n  \u003Cbuild>\n    \u003Cplugins>\n      \u003Cplugin>\n        \u003CgroupId>com.gradle\u003C/groupId>\n        \u003CartifactId>gradle-enterprise-maven-plugin\u003C/artifactId>\n        \u003Cversion>1.9\u003C/version>\n        \u003Cconfiguration>\n          \u003CgradleEnterprise>\n            \u003Cserver>https://ge.example.com\u003C/server>\n            \u003CallowUntrusted>false\u003C/allowUntrusted>\n          \u003C/gradleEnterprise>\n        \u003C/configuration>\n      \u003C/plugin>\n    \u003C/plugins>\n  \u003C/build>\n  ```\n\n## Présentation du programme bêta du registre virtuel Maven\n\nNous avons le plaisir d'annoncer le lancement du programme bêta de notre nouvelle fonctionnalité : le registre virtuel Maven. Cet ajout à l'écosystème GitLab transformera la gestion des dépôts Maven au sein de vos projets.\n\n### Fonctionnalités phares du registre virtuel Maven\n\n1. **Agrégation de dépôts :** combinez plusieurs dépôts Maven (internes et externes) en un seul dépôt virtuel.\n2. **Proxy intelligent et mise en cache :** accélérez les compilations grâce à la mise en cache des artefacts et au routage intelligent des requêtes.\n3. **Contrôle d'accès centralisé :** améliorez la sécurité en gérant l'accès à tous vos dépôts Maven depuis un seul et même endroit.\n\n### Utilisation du registre virtuel Maven\n\n1. **Configuration :** configurez l'authentification Maven dans votre fichier `settings.xml` :\n\n```\n\u003Csettings>\n  \u003Cservers>\n    \u003Cserver>\n      \u003Cid>gitlab-maven\u003C/id>\n      \u003Cconfiguration>\n        \u003ChttpHeaders>\n          \u003Cproperty>\n            \u003Cname>Private-Token\u003C/name>\n            \u003Cvalue>${env.GITLAB_TOKEN}\u003C/value>\n          \u003C/property>\n        \u003C/httpHeaders>\n      \u003C/configuration>\n    \u003C/server>\n  \u003C/servers>\n\u003C/settings>\n```\n\nOptions d'authentification :\n\n- Jeton d'accès personnel : utilisez `Private-Token` comme nom et `${env.GITLAB_TOKEN}` comme valeur.\n\n- Token de déploiement de groupe : utilisez `Deploy-Token` comme nom et `${env.GITLAB_DEPLOY_TOKEN}` comme valeur.\n\n- Token d'accès de groupe : utilisez `Private-Token` comme nom et `${env.GITLAB_ACCESS_TOKEN}` comme valeur.\n\n- Token de job CI : utilisez `Job-Token` comme nom et `${CI_JOB_TOKEN}` comme valeur.\n\n- Configurez le registre virtuel dans votre fichier `pom.xml`.\n\nOption 1 : en tant que registre supplémentaire :\n\n```\n\u003Crepositories>\n  \u003Crepository>\n    \u003Cid>gitlab-maven\u003C/id>\n    \u003Curl>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/\u003Cvirtual registry id>\u003C/url>\n  \u003C/repository>\n\u003C/repositories>\n```\n\nOption 2 : en remplacement de Maven Central (dans votre fichier `settings.xml`) :\n\n```\n\u003Cmirrors>\n  \u003Cmirror>\n    \u003Cid>gitlab-maven\u003C/id>\n    \u003Cname>GitLab virtual registry for Maven Central\u003C/name>\n    \u003Curl>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/\u003Cvirtual registry id>\u003C/url>\n    \u003CmirrorOf>central\u003C/mirrorOf>\n  \u003C/mirror>\n\u003C/mirrors>\n```\n\n2. **Utilisation :** désormais, toutes vos opérations Maven utiliseront ce dépôt virtuel.\n\n```\n# For personal access tokens\nexport GITLAB_TOKEN=your_personal_access_token\n\n# For group deploy tokens\nexport GITLAB_DEPLOY_TOKEN=your_deploy_token\n\n# For group access tokens\nexport GITLAB_ACCESS_TOKEN=your_access_token\n\n# Then run Maven commands normally\nmvn package\n\n```\n\n3. Avantages\n\n- Gestion simplifiée des dépendances\n- Temps de compilation réduits\n- Sécurité et conformité renforcées\n- Contrôle amélioré des dépendances tierces\n\n### Rejoignez le programme bêta\n\nNous recherchons activement des participants souhaitant tester notre version bêta :\n\n* Accédez en avant-première à la fonctionnalité de registre virtuel Maven.\n* Transmettez directement vos retours à notre équipe de développement.\n* Contribuez activement à façonner l'avenir de la gestion des paquets Maven dans GitLab.\n* Participez à des webinaires et sessions de questions-réponses exclusifs animés par notre équipe produit.\n\n> Pour rejoindre le programme bêta ou en savoir plus sur le registre virtuel Maven, consultez notre page dédiée au [programme bêta du registre virtuel Maven de GitLab](https://gitlab.com/gitlab-org/gitlab/-/issues/498139) (**Remarque :** lien provisoire).\n\n## Résumé\n\nChez GitLab, nous avons à cœur de proposer des outils à la fois sécurisés, performants et évolutifs pour accompagner votre développement logiciel. Le registre virtuel Maven illustre notre volonté constante d'innover pour répondre aux besoins croissants des développeurs et ingénieurs de plateforme.\n\nEn appliquant les mesures de sécurité et les techniques d'optimisation abordées dans cet article, et en tirant parti des futures fonctionnalités telles que le registre virtuel Maven, vous renforcerez l'efficacité de votre workflow Maven dans GitLab.\n\nNous sommes impatients de voir comment ces nouvelles fonctionnalités de gestion des paquets dans GitLab contribueront à perfectionner vos processus de développement. Restez à l'écoute et bon codage !","security",[23,24,25,26,27],"sécurité","plateforme DevSecOps","fonctionnalités","produit","workflow",{"slug":29,"featured":30,"template":31},"tutorial-secure-and-optimize-your-maven-repository-in-gitlab",true,"BlogPost","content:fr-fr:blog:tutorial-secure-and-optimize-your-maven-repository-in-gitlab.yml","yaml","Tutorial Secure And Optimize Your Maven Repository In Gitlab","content","fr-fr/blog/tutorial-secure-and-optimize-your-maven-repository-in-gitlab.yml","fr-fr/blog/tutorial-secure-and-optimize-your-maven-repository-in-gitlab","yml",{"_path":40,"_dir":41,"_draft":6,"_partial":6,"_locale":7,"data":42,"_id":454,"_type":33,"title":455,"_source":35,"_file":456,"_stem":457,"_extension":38},"/shared/fr-fr/main-navigation","fr-fr",{"logo":43,"freeTrial":48,"sales":53,"login":58,"items":63,"search":395,"minimal":431,"duo":445},{"config":44},{"href":45,"dataGaName":46,"dataGaLocation":47},"/fr-fr/","gitlab logo","header",{"text":49,"config":50},"Commencer un essai gratuit",{"href":51,"dataGaName":52,"dataGaLocation":47},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":54,"config":55},"Contacter l'équipe commerciale",{"href":56,"dataGaName":57,"dataGaLocation":47},"/fr-fr/sales/","sales",{"text":59,"config":60},"Connexion",{"href":61,"dataGaName":62,"dataGaLocation":47},"https://gitlab.com/users/sign_in/","sign in",[64,108,206,211,316,376],{"text":65,"config":66,"cards":68,"footer":91},"Plateforme",{"dataNavLevelOne":67},"platform",[69,75,83],{"title":65,"description":70,"link":71},"La plateforme DevSecOps alimentée par l'IA la plus complète",{"text":72,"config":73},"Découvrir notre plateforme",{"href":74,"dataGaName":67,"dataGaLocation":47},"/fr-fr/platform/",{"title":76,"description":77,"link":78},"GitLab Duo (IA)","Créez des logiciels plus rapidement en tirant parti de l'IA à chaque étape du développement",{"text":79,"config":80},"Découvrez GitLab Duo",{"href":81,"dataGaName":82,"dataGaLocation":47},"/fr-fr/gitlab-duo/","gitlab duo ai",{"title":84,"description":85,"link":86},"Choisir GitLab","10 raisons pour lesquelles les entreprises choisissent GitLab",{"text":87,"config":88},"En savoir plus",{"href":89,"dataGaName":90,"dataGaLocation":47},"/fr-fr/why-gitlab/","why gitlab",{"title":92,"items":93},"Démarrer avec",[94,99,104],{"text":95,"config":96},"Ingénierie de plateforme",{"href":97,"dataGaName":98,"dataGaLocation":47},"/fr-fr/solutions/platform-engineering/","platform engineering",{"text":100,"config":101},"Expérience développeur",{"href":102,"dataGaName":103,"dataGaLocation":47},"/fr-fr/developer-experience/","Developer experience",{"text":105,"config":106},"MLOps",{"href":107,"dataGaName":105,"dataGaLocation":47},"/fr-fr/topics/devops/the-role-of-ai-in-devops/",{"text":109,"left":30,"config":110,"link":112,"lists":116,"footer":188},"Produit",{"dataNavLevelOne":111},"solutions",{"text":113,"config":114},"Voir toutes les solutions",{"href":115,"dataGaName":111,"dataGaLocation":47},"/fr-fr/solutions/",[117,143,166],{"title":118,"description":119,"link":120,"items":125},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":121},{"icon":122,"href":123,"dataGaName":124,"dataGaLocation":47},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[126,130,134,139],{"text":127,"config":128},"CI/CD",{"href":129,"dataGaLocation":47,"dataGaName":127},"/fr-fr/solutions/continuous-integration/",{"text":131,"config":132},"Développement assisté par l'IA",{"href":81,"dataGaLocation":47,"dataGaName":133},"AI assisted development",{"text":135,"config":136},"Gestion du code source",{"href":137,"dataGaLocation":47,"dataGaName":138},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":140,"config":141},"Livraison de logiciels automatisée",{"href":123,"dataGaLocation":47,"dataGaName":142},"Automated software delivery",{"title":144,"description":145,"link":146,"items":151},"Securité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":147},{"href":148,"dataGaName":149,"dataGaLocation":47,"icon":150},"/fr-fr/solutions/security-compliance/","security and compliance","ShieldCheckLight",[152,157,162],{"text":153,"config":154},"Application Security Testing",{"href":155,"dataGaName":156,"dataGaLocation":47},"/solutions/application-security-testing/","Application security testing",{"text":158,"config":159},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":160,"dataGaLocation":47,"dataGaName":161},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":163,"config":164},"Software Compliance",{"href":165,"dataGaName":163,"dataGaLocation":47},"/solutions/software-compliance/",{"title":167,"link":168,"items":173},"Mesures",{"config":169},{"icon":170,"href":171,"dataGaName":172,"dataGaLocation":47},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[174,178,183],{"text":175,"config":176},"Visibilité et mesures",{"href":171,"dataGaLocation":47,"dataGaName":177},"Visibility and Measurement",{"text":179,"config":180},"Gestion de la chaîne de valeur",{"href":181,"dataGaLocation":47,"dataGaName":182},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":184,"config":185},"Données d'analyse et informations clés",{"href":186,"dataGaLocation":47,"dataGaName":187},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":189,"items":190},"GitLab pour",[191,196,201],{"text":192,"config":193},"Entreprises",{"href":194,"dataGaLocation":47,"dataGaName":195},"/fr-fr/enterprise/","enterprise",{"text":197,"config":198},"PME",{"href":199,"dataGaLocation":47,"dataGaName":200},"/fr-fr/small-business/","small business",{"text":202,"config":203},"Secteur public",{"href":204,"dataGaLocation":47,"dataGaName":205},"/fr-fr/solutions/public-sector/","public sector",{"text":207,"config":208},"Tarifs",{"href":209,"dataGaName":210,"dataGaLocation":47,"dataNavLevelOne":210},"/fr-fr/pricing/","pricing",{"text":212,"config":213,"link":215,"lists":219,"feature":303},"Ressources",{"dataNavLevelOne":214},"resources",{"text":216,"config":217},"Afficher toutes les ressources",{"href":218,"dataGaName":214,"dataGaLocation":47},"/fr-fr/resources/",[220,253,275],{"title":221,"items":222},"Premiers pas",[223,228,233,238,243,248],{"text":224,"config":225},"Installation",{"href":226,"dataGaName":227,"dataGaLocation":47},"/fr-fr/install/","install",{"text":229,"config":230},"Guides de démarrage rapide",{"href":231,"dataGaName":232,"dataGaLocation":47},"/fr-fr/get-started/","quick setup checklists",{"text":234,"config":235},"Apprentissage",{"href":236,"dataGaLocation":47,"dataGaName":237},"https://university.gitlab.com/","learn",{"text":239,"config":240},"Documentation sur le produit",{"href":241,"dataGaName":242,"dataGaLocation":47},"https://docs.gitlab.com/","product documentation",{"text":244,"config":245},"Vidéos sur les bonnes pratiques",{"href":246,"dataGaName":247,"dataGaLocation":47},"/fr-fr/getting-started-videos/","best practice videos",{"text":249,"config":250},"Intégrations",{"href":251,"dataGaName":252,"dataGaLocation":47},"/fr-fr/integrations/","integrations",{"title":254,"items":255},"Découvrir",[256,261,265,270],{"text":257,"config":258},"Histoires de succès client",{"href":259,"dataGaName":260,"dataGaLocation":47},"/fr-fr/customers/","customer success stories",{"text":262,"config":263},"Blog",{"href":264,"dataGaName":5,"dataGaLocation":47},"/fr-fr/blog/",{"text":266,"config":267},"Travail à distance",{"href":268,"dataGaName":269,"dataGaLocation":47},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":271,"config":272},"TeamOps",{"href":273,"dataGaName":274,"dataGaLocation":47},"/fr-fr/teamops/","teamops",{"title":276,"items":277},"Connecter",[278,283,288,293,298],{"text":279,"config":280},"Services GitLab",{"href":281,"dataGaName":282,"dataGaLocation":47},"/fr-fr/services/","services",{"text":284,"config":285},"Communauté",{"href":286,"dataGaName":287,"dataGaLocation":47},"/community/","community",{"text":289,"config":290},"Forum",{"href":291,"dataGaName":292,"dataGaLocation":47},"https://forum.gitlab.com/","forum",{"text":294,"config":295},"Événements",{"href":296,"dataGaName":297,"dataGaLocation":47},"/events/","events",{"text":299,"config":300},"Partenaires",{"href":301,"dataGaName":302,"dataGaLocation":47},"/partners/","partners",{"backgroundColor":304,"textColor":305,"text":306,"image":307,"link":311},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":308,"config":309},"carte promo The Source",{"src":310},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":312,"config":313},"Lire les articles les plus récents",{"href":314,"dataGaName":315,"dataGaLocation":47},"/fr-fr/the-source/","the source",{"text":317,"config":318,"lists":320},"Société",{"dataNavLevelOne":319},"company",[321],{"items":322},[323,328,334,336,341,346,351,356,361,366,371],{"text":324,"config":325},"À propos",{"href":326,"dataGaName":327,"dataGaLocation":47},"/fr-fr/company/","about",{"text":329,"config":330,"footerGa":333},"Emplois",{"href":331,"dataGaName":332,"dataGaLocation":47},"/jobs/","jobs",{"dataGaName":332},{"text":294,"config":335},{"href":296,"dataGaName":297,"dataGaLocation":47},{"text":337,"config":338},"Leadership",{"href":339,"dataGaName":340,"dataGaLocation":47},"/company/team/e-group/","leadership",{"text":342,"config":343},"Équipe",{"href":344,"dataGaName":345,"dataGaLocation":47},"/company/team/","team",{"text":347,"config":348},"Manuel",{"href":349,"dataGaName":350,"dataGaLocation":47},"https://handbook.gitlab.com/","handbook",{"text":352,"config":353},"Relations avec les investisseurs",{"href":354,"dataGaName":355,"dataGaLocation":47},"https://ir.gitlab.com/","investor relations",{"text":357,"config":358},"Centre de confiance",{"href":359,"dataGaName":360,"dataGaLocation":47},"/fr-fr/security/","trust center",{"text":362,"config":363},"Centre pour la transparence de l'IA",{"href":364,"dataGaName":365,"dataGaLocation":47},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":367,"config":368},"Newsletter",{"href":369,"dataGaName":370,"dataGaLocation":47},"/company/contact/","newsletter",{"text":372,"config":373},"Presse",{"href":374,"dataGaName":375,"dataGaLocation":47},"/press/","press",{"text":377,"config":378,"lists":379},"Nous contacter",{"dataNavLevelOne":319},[380],{"items":381},[382,385,390],{"text":54,"config":383},{"href":56,"dataGaName":384,"dataGaLocation":47},"talk to sales",{"text":386,"config":387},"Aide",{"href":388,"dataGaName":389,"dataGaLocation":47},"/support/","get help",{"text":391,"config":392},"Portail clients GitLab",{"href":393,"dataGaName":394,"dataGaLocation":47},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":396,"login":397,"suggestions":404},"Fermer",{"text":398,"link":399},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":400,"config":401},"gitlab.com",{"href":61,"dataGaName":402,"dataGaLocation":403},"search login","search",{"text":405,"default":406},"Suggestions",[407,410,415,417,422,427],{"text":76,"config":408},{"href":81,"dataGaName":409,"dataGaLocation":403},"GitLab Duo (AI)",{"text":411,"config":412},"Suggestions de code (IA)",{"href":413,"dataGaName":414,"dataGaLocation":403},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":127,"config":416},{"href":129,"dataGaName":127,"dataGaLocation":403},{"text":418,"config":419},"GitLab sur AWS",{"href":420,"dataGaName":421,"dataGaLocation":403},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":423,"config":424},"GitLab sur Google Cloud ",{"href":425,"dataGaName":426,"dataGaLocation":403},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":428,"config":429},"Pourquoi utiliser GitLab ?",{"href":89,"dataGaName":430,"dataGaLocation":403},"Why GitLab?",{"freeTrial":432,"mobileIcon":437,"desktopIcon":442},{"text":433,"config":434},"Commencer votre essai gratuit",{"href":435,"dataGaName":52,"dataGaLocation":436},"https://gitlab.com/-/trials/new/","nav",{"altText":438,"config":439},"Icône GitLab",{"src":440,"dataGaName":441,"dataGaLocation":436},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":438,"config":443},{"src":444,"dataGaName":441,"dataGaLocation":436},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":446,"mobileIcon":450,"desktopIcon":452},{"text":447,"config":448},"En savoir plus sur GitLab Duo",{"href":81,"dataGaName":449,"dataGaLocation":436},"gitlab duo",{"altText":438,"config":451},{"src":440,"dataGaName":441,"dataGaLocation":436},{"altText":438,"config":453},{"src":444,"dataGaName":441,"dataGaLocation":436},"content:shared:fr-fr:main-navigation.yml","Main Navigation","shared/fr-fr/main-navigation.yml","shared/fr-fr/main-navigation",{"_path":459,"_dir":41,"_draft":6,"_partial":6,"_locale":7,"title":460,"titleMobile":460,"button":461,"config":466,"_id":468,"_type":33,"_source":35,"_file":469,"_stem":470,"_extension":38},"/shared/fr-fr/banner","La plateforme GitLab Duo Agent est maintenant disponible en version bêta publique !",{"text":462,"config":463},"Essayer la version bêta",{"href":464,"dataGaName":465,"dataGaLocation":47},"/fr-fr/gitlab-duo/agent-platform/","duo banner",{"layout":467},"release","content:shared:fr-fr:banner.yml","shared/fr-fr/banner.yml","shared/fr-fr/banner",{"_path":472,"_dir":41,"_draft":6,"_partial":6,"_locale":7,"data":473,"_id":678,"_type":33,"title":679,"_source":35,"_file":680,"_stem":681,"_extension":38},"/shared/fr-fr/main-footer",{"text":474,"source":475,"edit":481,"contribute":486,"config":491,"items":496,"minimal":669},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":476,"config":477},"Afficher le code source de la page",{"href":478,"dataGaName":479,"dataGaLocation":480},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":482,"config":483},"Modifier cette page",{"href":484,"dataGaName":485,"dataGaLocation":480},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":487,"config":488},"Veuillez contribuer",{"href":489,"dataGaName":490,"dataGaLocation":480},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":492,"facebook":493,"youtube":494,"linkedin":495},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[497,520,574,606,640],{"title":65,"links":498,"subMenu":503},[499],{"text":500,"config":501},"Plateforme DevSecOps",{"href":74,"dataGaName":502,"dataGaLocation":480},"devsecops platform",[504],{"title":207,"links":505},[506,510,515],{"text":507,"config":508},"Voir les forfaits",{"href":209,"dataGaName":509,"dataGaLocation":480},"view plans",{"text":511,"config":512},"Pourquoi choisir GitLab Premium ?",{"href":513,"dataGaName":514,"dataGaLocation":480},"/fr-fr/pricing/premium/","why premium",{"text":516,"config":517},"Pourquoi choisir GitLab Ultimate ?",{"href":518,"dataGaName":519,"dataGaLocation":480},"/fr-fr/pricing/ultimate/","why ultimate",{"title":521,"links":522},"Solutions",[523,528,531,533,538,543,547,550,553,558,560,562,564,569],{"text":524,"config":525},"Transformation digitale",{"href":526,"dataGaName":527,"dataGaLocation":480},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":529,"config":530},"Sécurité et conformité",{"href":155,"dataGaName":156,"dataGaLocation":480},{"text":140,"config":532},{"href":123,"dataGaName":124,"dataGaLocation":480},{"text":534,"config":535},"Développement agile",{"href":536,"dataGaName":537,"dataGaLocation":480},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":539,"config":540},"Transformation cloud",{"href":541,"dataGaName":542,"dataGaLocation":480},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":544,"config":545},"SCM",{"href":137,"dataGaName":546,"dataGaLocation":480},"source code management",{"text":127,"config":548},{"href":129,"dataGaName":549,"dataGaLocation":480},"continuous integration & delivery",{"text":179,"config":551},{"href":181,"dataGaName":552,"dataGaLocation":480},"value stream management",{"text":554,"config":555},"GitOps",{"href":556,"dataGaName":557,"dataGaLocation":480},"/fr-fr/solutions/gitops/","gitops",{"text":192,"config":559},{"href":194,"dataGaName":195,"dataGaLocation":480},{"text":197,"config":561},{"href":199,"dataGaName":200,"dataGaLocation":480},{"text":202,"config":563},{"href":204,"dataGaName":205,"dataGaLocation":480},{"text":565,"config":566},"Formation",{"href":567,"dataGaName":568,"dataGaLocation":480},"/fr-fr/solutions/education/","education",{"text":570,"config":571},"Services financiers",{"href":572,"dataGaName":573,"dataGaLocation":480},"/fr-fr/solutions/finance/","financial services",{"title":212,"links":575},[576,578,580,582,585,587,590,592,594,596,598,600,602,604],{"text":224,"config":577},{"href":226,"dataGaName":227,"dataGaLocation":480},{"text":229,"config":579},{"href":231,"dataGaName":232,"dataGaLocation":480},{"text":234,"config":581},{"href":236,"dataGaName":237,"dataGaLocation":480},{"text":239,"config":583},{"href":241,"dataGaName":584,"dataGaLocation":480},"docs",{"text":262,"config":586},{"href":264,"dataGaName":5},{"text":588,"config":589},"Histoires de réussite client",{"href":259,"dataGaLocation":480},{"text":257,"config":591},{"href":259,"dataGaName":260,"dataGaLocation":480},{"text":266,"config":593},{"href":268,"dataGaName":269,"dataGaLocation":480},{"text":279,"config":595},{"href":281,"dataGaName":282,"dataGaLocation":480},{"text":271,"config":597},{"href":273,"dataGaName":274,"dataGaLocation":480},{"text":284,"config":599},{"href":286,"dataGaName":287,"dataGaLocation":480},{"text":289,"config":601},{"href":291,"dataGaName":292,"dataGaLocation":480},{"text":294,"config":603},{"href":296,"dataGaName":297,"dataGaLocation":480},{"text":299,"config":605},{"href":301,"dataGaName":302,"dataGaLocation":480},{"title":317,"links":607},[608,610,612,614,616,618,620,624,629,631,633,635],{"text":324,"config":609},{"href":326,"dataGaName":319,"dataGaLocation":480},{"text":329,"config":611},{"href":331,"dataGaName":332,"dataGaLocation":480},{"text":337,"config":613},{"href":339,"dataGaName":340,"dataGaLocation":480},{"text":342,"config":615},{"href":344,"dataGaName":345,"dataGaLocation":480},{"text":347,"config":617},{"href":349,"dataGaName":350,"dataGaLocation":480},{"text":352,"config":619},{"href":354,"dataGaName":355,"dataGaLocation":480},{"text":621,"config":622},"Sustainability",{"href":623,"dataGaName":621,"dataGaLocation":480},"/sustainability/",{"text":625,"config":626},"Diversité, inclusion et appartenance (DIB)",{"href":627,"dataGaName":628,"dataGaLocation":480},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":357,"config":630},{"href":359,"dataGaName":360,"dataGaLocation":480},{"text":367,"config":632},{"href":369,"dataGaName":370,"dataGaLocation":480},{"text":372,"config":634},{"href":374,"dataGaName":375,"dataGaLocation":480},{"text":636,"config":637},"Déclaration de transparence sur l'esclavage moderne",{"href":638,"dataGaName":639,"dataGaLocation":480},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":377,"links":641},[642,645,647,649,654,659,664],{"text":643,"config":644},"Échanger avec un expert",{"href":56,"dataGaName":57,"dataGaLocation":480},{"text":386,"config":646},{"href":388,"dataGaName":389,"dataGaLocation":480},{"text":391,"config":648},{"href":393,"dataGaName":394,"dataGaLocation":480},{"text":650,"config":651},"Statut",{"href":652,"dataGaName":653,"dataGaLocation":480},"https://status.gitlab.com/","status",{"text":655,"config":656},"Conditions d'utilisation",{"href":657,"dataGaName":658},"/terms/","terms of use",{"text":660,"config":661},"Déclaration de confidentialité",{"href":662,"dataGaName":663,"dataGaLocation":480},"/fr-fr/privacy/","privacy statement",{"text":665,"config":666},"Préférences en matière de cookies",{"dataGaName":667,"dataGaLocation":480,"id":668,"isOneTrustButton":30},"cookie preferences","ot-sdk-btn",{"items":670},[671,673,676],{"text":655,"config":672},{"href":657,"dataGaName":658,"dataGaLocation":480},{"text":674,"config":675},"Politique de confidentialité",{"href":662,"dataGaName":663,"dataGaLocation":480},{"text":665,"config":677},{"dataGaName":667,"dataGaLocation":480,"id":668,"isOneTrustButton":30},"content:shared:fr-fr:main-footer.yml","Main Footer","shared/fr-fr/main-footer.yml","shared/fr-fr/main-footer",[683],{"_path":684,"_dir":685,"_draft":6,"_partial":6,"_locale":7,"content":686,"config":690,"_id":692,"_type":33,"title":18,"_source":35,"_file":693,"_stem":694,"_extension":38},"/en-us/blog/authors/tim-rizzi","authors",{"name":18,"config":687},{"headshot":688,"ctfId":689},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661866/Blog/Author%20Headshots/trizzi-headshot.jpg","trizzi",{"template":691},"BlogAuthor","content:en-us:blog:authors:tim-rizzi.yml","en-us/blog/authors/tim-rizzi.yml","en-us/blog/authors/tim-rizzi",{"_path":696,"_dir":41,"_draft":6,"_partial":6,"_locale":7,"header":697,"eyebrow":698,"blurb":699,"button":700,"secondaryButton":704,"_id":706,"_type":33,"title":707,"_source":35,"_file":708,"_stem":709,"_extension":38},"/shared/fr-fr/next-steps","Commencez à livrer des logiciels de meilleurs qualité plus rapidement","Plus de 50 % des entreprises du classement Fortune 100 font confiance à GitLab","Découvrez comment la plateforme DevSecOps intelligente\n\n\npeut aider votre équipe.\n",{"text":49,"config":701},{"href":702,"dataGaName":52,"dataGaLocation":703},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":54,"config":705},{"href":56,"dataGaName":57,"dataGaLocation":703},"content:shared:fr-fr:next-steps.yml","Next Steps","shared/fr-fr/next-steps.yml","shared/fr-fr/next-steps",1759347887703]