[{"data":1,"prerenderedAt":712},["ShallowReactive",2],{"/fr-fr/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab/":3,"navigation-fr-fr":41,"banner-fr-fr":459,"footer-fr-fr":472,"Tim Rizzi":684,"next-steps-fr-fr":697},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":16,"config":30,"_id":34,"_type":35,"title":36,"_source":37,"_file":38,"_stem":39,"_extension":40},"/fr-fr/blog/automating-container-image-migration-from-amazon-ecr-to-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 automatiser la migration des images de conteneurs d'Amazon ECR vers GitLab","Suivez ce guide étape par étape pour automatiser le processus de migration de vos images de conteneurs d’Amazon ECR vers GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663129/Blog/Hero%20Images/blog-image-template-1800x945__28_.png","https://about.gitlab.com/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab","https://about.gitlab.com","article","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Comment automatiser la migration des images de conteneurs d'Amazon ECR vers GitLab\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Tim Rizzi\"}],\n        \"datePublished\": \"2025-02-13\",\n      }\n                  ",{"title":9,"description":10,"authors":17,"heroImage":11,"date":19,"body":20,"category":21,"tags":22,"updatedDate":29},[18],"Tim Rizzi","2025-02-13","« Nous devons migrer des centaines d'images de conteneurs d'Amazon Elastic Container Registry (ECR) vers GitLab. Pouvez-vous nous aider ? » Cette question revenait sans cesse lors de nos échanges avec des ingénieurs de plateforme. En pleine modernisation de leur chaîne d'outils DevSecOps avec GitLab, ils se retrouvaient bloqués au moment de déplacer leurs images de conteneurs. D’un point de vue technique, chaque transfert est simple. Mais, l'opération était longue et fastidieuse en raison du volume considérable d'images.\n\nUn ingénieur de plateforme a parfaitement résumé la situation : « Je connais parfaitement le processus : effectuer un pull, retagger, effectuer un push. Le problème, c'est que je gère 200 microservices, chacun contenant plusieurs tags. Je ne peux pas passer plusieurs semaines sur cette migration alors que j'ai des tâches critiques à effectuer au niveau de l'infrastructure. »\n\n## Le défi\n\nCette conversation nous a fait réfléchir et a donné naissance à une idée. Et si nous pouvions automatiser l'ensemble du processus ? Lorsqu'une équipe de plateforme DevOps transfère ses [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\") vers GitLab, la migration des images de conteneurs ne devrait pas poser de difficulté particulière. Le processus manuel est rudimentaire, mais répétitif : il s'agit d'effectuer un pull de chaque image, de la retagger et d'effectuer un push pour la migrer vers le registre de conteneurs de GitLab. Réaliser cette même opération pour des dizaines de dépôts et plusieurs tags par image requiert des jours ou des semaines de travail chronophage.\n\n## La solution\n\nNous avons donc entrepris de créer un pipeline GitLab qui effectuerait automatiquement cette lourde tâche. L'objectif était clair : fournir aux ingénieurs de plateforme un outil qu'ils pourraient configurer en quelques minutes et qui, en une seule nuit, parviendrait à migrer toutes leurs images.\n\n### Configuration des accès\n\nCommençons par l'essentiel : les aspects liés à la sécurité. Nous voulions nous assurer que les équipes puissent exécuter cette migration avec un minimum d'autorisations sur AWS. Voici la politique de gestion des identités et des accès (IAM) en lecture seule dont vous avez besoin :\n\n```json\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"ecr:GetAuthorizationToken\",\n                \"ecr:BatchCheckLayerAvailability\",\n                \"ecr:GetDownloadUrlForLayer\",\n                \"ecr:DescribeRepositories\",\n                \"ecr:ListImages\",\n                \"ecr:DescribeImages\",\n                \"ecr:BatchGetImage\"\n            ],\n            \"Resource\": \"*\"\n        }\n    ]\n}\n```\n\n### Configuration de GitLab\n\nUne fois la sécurité en place, l'étape suivante consiste à configurer GitLab. Nous avons volontairement réduit cela au strict minimum : il vous suffit de configurer les variables suivantes dans les paramètres CI/CD de votre projet :\n\n```\nAWS_ACCOUNT_ID: Your AWS account number\nAWS_DEFAULT_REGION: Your ECR region\nAWS_ACCESS_KEY_ID: [Masked]\nAWS_SECRET_ACCESS_KEY: [Masked]\nBULK_MIGRATE: true\n```\n\n### Le pipeline de migration \n\nPassons maintenant à la partie la plus intéressante. Nous avons créé le pipeline en utilisant Docker-in-Docker pour gérer toutes les opérations liées aux images de manière fiable :\n\n```yaml\nimage: docker:20.10\nservices:\n  - docker:20.10-dind\n\nbefore_script:\n  - apk add --no-cache aws-cli jq\n  - aws sts get-caller-identity\n  - aws ecr get-login-password | docker login --username AWS --password-stdin\n  - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}\n```\n\nLe pipeline fonctionne en trois phases, chacune s'appuyant sur la précédente :\n\n1. Identification\n\nDans un premier temps, il détecte l'ensemble de vos dépôts :\n\n```bash\nREPOS=$(aws ecr describe-repositories --query 'repositories[*].repositoryName' --output text)\n```\n\n2. Énumération des tags\n\nEnsuite, pour chaque dépôt, il récupère l'ensemble des tags :\n\n```bash\nTAGS=$(aws ecr describe-images --repository-name $repo --query 'imageDetails[*].imageTags[]' --output text)\n```\n\n3. Transfert\n\nEnfin, il gère la migration proprement dite :\n\n```bash\ndocker pull ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${repo}:${tag}\ndocker tag ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${repo}:${tag} ${CI_REGISTRY_IMAGE}/${repo}:${tag}\ndocker push ${CI_REGISTRY_IMAGE}/${repo}:${tag}\n```\n\n## Résultats\n\nVoici ce que cette solution offre comme avantages aux ingénieurs de plateforme qui ne veulent pas passer plusieurs semaines sur la migration :\n\n- Identification et migration automatisées de l'ensemble des dépôts et tags\n- Dénomination cohérente des images entre ECR et GitLab\n- Gestion des échecs de transferts\n- Journalisation claire pour suivre la progression\n\nAu lieu d'écrire des scripts et de surveiller la migration, l'ingénieur de plateforme peut se concentrer sur des tâches à plus grande valeur ajoutée.\n\n## Utilisation\n\nLa première étape est très simple :\n\n1. Copiez le fichier `.gitlab-ci.yml` dans votre dépôt.\n2. Configurez les variables AWS et GitLab.\n3. Définissez `BULK_MIGRATE` sur « true » pour déclencher la migration.\n\n## Bonnes pratiques\n\nEn accompagnant plusieurs équipes dans leur migration, nous avons tiré quelques enseignements pratiques :\n\n- Exécutez la migration en dehors des heures de pointe pour réduire au maximum l'impact sur votre équipe.\n- Consultez les logs de pipeline qui vous indiqueront si un élément nécessite votre attention.\n- Ne désactivez pas votre registre ECR avant d'avoir vérifié que toutes les images ont bien été transférées.\n- Pour les migrations à grande échelle, envisagez d'ajouter une limite de débit pour éviter de saturer votre réseau.\n\nNous mettons ce pipeline à disposition en open source dans notre dépôt GitLab public, car nous sommes convaincus que les ingénieurs de plateforme devraient passer leur temps à créer de la valeur, plutôt qu'à copier des images de conteneurs. N'hésitez pas à l'adapter à vos besoins ou à poser vos questions sur sa mise en œuvre. Consultez notre documentation pour en savoir plus sur les [catalogues CI/CD](https://gitlab.com/explore/catalog/components/package \"Catalogues CI/CD\"). ","engineering",[23,24,25,26,27,28],"CI/CD","AWS","tutorial","DevSecOps platform","product","solutions architecture","2025-04-07",{"slug":31,"featured":32,"template":33},"automating-container-image-migration-from-amazon-ecr-to-gitlab",true,"BlogPost","content:fr-fr:blog:automating-container-image-migration-from-amazon-ecr-to-gitlab.yml","yaml","Automating Container Image Migration From Amazon Ecr To Gitlab","content","fr-fr/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab.yml","fr-fr/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab","yml",{"_path":42,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":44,"_id":455,"_type":35,"title":456,"_source":37,"_file":457,"_stem":458,"_extension":40},"/shared/fr-fr/main-navigation","fr-fr",{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":396,"minimal":432,"duo":446},{"config":46},{"href":47,"dataGaName":48,"dataGaLocation":49},"/fr-fr/","gitlab logo","header",{"text":51,"config":52},"Commencer un essai gratuit",{"href":53,"dataGaName":54,"dataGaLocation":49},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":56,"config":57},"Contacter l'équipe commerciale",{"href":58,"dataGaName":59,"dataGaLocation":49},"/fr-fr/sales/","sales",{"text":61,"config":62},"Connexion",{"href":63,"dataGaName":64,"dataGaLocation":49},"https://gitlab.com/users/sign_in/","sign in",[66,110,207,212,317,377],{"text":67,"config":68,"cards":70,"footer":93},"Plateforme",{"dataNavLevelOne":69},"platform",[71,77,85],{"title":67,"description":72,"link":73},"La plateforme DevSecOps alimentée par l'IA la plus complète",{"text":74,"config":75},"Découvrir notre plateforme",{"href":76,"dataGaName":69,"dataGaLocation":49},"/fr-fr/platform/",{"title":78,"description":79,"link":80},"GitLab Duo (IA)","Créez des logiciels plus rapidement en tirant parti de l'IA à chaque étape du développement",{"text":81,"config":82},"Découvrez GitLab Duo",{"href":83,"dataGaName":84,"dataGaLocation":49},"/fr-fr/gitlab-duo/","gitlab duo ai",{"title":86,"description":87,"link":88},"Choisir GitLab","10 raisons pour lesquelles les entreprises choisissent GitLab",{"text":89,"config":90},"En savoir plus",{"href":91,"dataGaName":92,"dataGaLocation":49},"/fr-fr/why-gitlab/","why gitlab",{"title":94,"items":95},"Démarrer avec",[96,101,106],{"text":97,"config":98},"Ingénierie de plateforme",{"href":99,"dataGaName":100,"dataGaLocation":49},"/fr-fr/solutions/platform-engineering/","platform engineering",{"text":102,"config":103},"Expérience développeur",{"href":104,"dataGaName":105,"dataGaLocation":49},"/fr-fr/developer-experience/","Developer experience",{"text":107,"config":108},"MLOps",{"href":109,"dataGaName":107,"dataGaLocation":49},"/fr-fr/topics/devops/the-role-of-ai-in-devops/",{"text":111,"left":32,"config":112,"link":114,"lists":118,"footer":189},"Produit",{"dataNavLevelOne":113},"solutions",{"text":115,"config":116},"Voir toutes les solutions",{"href":117,"dataGaName":113,"dataGaLocation":49},"/fr-fr/solutions/",[119,144,167],{"title":120,"description":121,"link":122,"items":127},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":123},{"icon":124,"href":125,"dataGaName":126,"dataGaLocation":49},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[128,131,135,140],{"text":23,"config":129},{"href":130,"dataGaLocation":49,"dataGaName":23},"/fr-fr/solutions/continuous-integration/",{"text":132,"config":133},"Développement assisté par l'IA",{"href":83,"dataGaLocation":49,"dataGaName":134},"AI assisted development",{"text":136,"config":137},"Gestion du code source",{"href":138,"dataGaLocation":49,"dataGaName":139},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":141,"config":142},"Livraison de logiciels automatisée",{"href":125,"dataGaLocation":49,"dataGaName":143},"Automated software delivery",{"title":145,"description":146,"link":147,"items":152},"Securité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":148},{"href":149,"dataGaName":150,"dataGaLocation":49,"icon":151},"/fr-fr/solutions/security-compliance/","security and compliance","ShieldCheckLight",[153,158,163],{"text":154,"config":155},"Application Security Testing",{"href":156,"dataGaName":157,"dataGaLocation":49},"/solutions/application-security-testing/","Application security testing",{"text":159,"config":160},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":161,"dataGaLocation":49,"dataGaName":162},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":164,"config":165},"Software Compliance",{"href":166,"dataGaName":164,"dataGaLocation":49},"/solutions/software-compliance/",{"title":168,"link":169,"items":174},"Mesures",{"config":170},{"icon":171,"href":172,"dataGaName":173,"dataGaLocation":49},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[175,179,184],{"text":176,"config":177},"Visibilité et mesures",{"href":172,"dataGaLocation":49,"dataGaName":178},"Visibility and Measurement",{"text":180,"config":181},"Gestion de la chaîne de valeur",{"href":182,"dataGaLocation":49,"dataGaName":183},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":185,"config":186},"Données d'analyse et informations clés",{"href":187,"dataGaLocation":49,"dataGaName":188},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":190,"items":191},"GitLab pour",[192,197,202],{"text":193,"config":194},"Entreprises",{"href":195,"dataGaLocation":49,"dataGaName":196},"/fr-fr/enterprise/","enterprise",{"text":198,"config":199},"PME",{"href":200,"dataGaLocation":49,"dataGaName":201},"/fr-fr/small-business/","small business",{"text":203,"config":204},"Secteur public",{"href":205,"dataGaLocation":49,"dataGaName":206},"/fr-fr/solutions/public-sector/","public sector",{"text":208,"config":209},"Tarifs",{"href":210,"dataGaName":211,"dataGaLocation":49,"dataNavLevelOne":211},"/fr-fr/pricing/","pricing",{"text":213,"config":214,"link":216,"lists":220,"feature":304},"Ressources",{"dataNavLevelOne":215},"resources",{"text":217,"config":218},"Afficher toutes les ressources",{"href":219,"dataGaName":215,"dataGaLocation":49},"/fr-fr/resources/",[221,254,276],{"title":222,"items":223},"Premiers pas",[224,229,234,239,244,249],{"text":225,"config":226},"Installation",{"href":227,"dataGaName":228,"dataGaLocation":49},"/fr-fr/install/","install",{"text":230,"config":231},"Guides de démarrage rapide",{"href":232,"dataGaName":233,"dataGaLocation":49},"/fr-fr/get-started/","quick setup checklists",{"text":235,"config":236},"Apprentissage",{"href":237,"dataGaLocation":49,"dataGaName":238},"https://university.gitlab.com/","learn",{"text":240,"config":241},"Documentation sur le produit",{"href":242,"dataGaName":243,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":245,"config":246},"Vidéos sur les bonnes pratiques",{"href":247,"dataGaName":248,"dataGaLocation":49},"/fr-fr/getting-started-videos/","best practice videos",{"text":250,"config":251},"Intégrations",{"href":252,"dataGaName":253,"dataGaLocation":49},"/fr-fr/integrations/","integrations",{"title":255,"items":256},"Découvrir",[257,262,266,271],{"text":258,"config":259},"Histoires de succès client",{"href":260,"dataGaName":261,"dataGaLocation":49},"/fr-fr/customers/","customer success stories",{"text":263,"config":264},"Blog",{"href":265,"dataGaName":5,"dataGaLocation":49},"/fr-fr/blog/",{"text":267,"config":268},"Travail à distance",{"href":269,"dataGaName":270,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":272,"config":273},"TeamOps",{"href":274,"dataGaName":275,"dataGaLocation":49},"/fr-fr/teamops/","teamops",{"title":277,"items":278},"Connecter",[279,284,289,294,299],{"text":280,"config":281},"Services GitLab",{"href":282,"dataGaName":283,"dataGaLocation":49},"/fr-fr/services/","services",{"text":285,"config":286},"Communauté",{"href":287,"dataGaName":288,"dataGaLocation":49},"/community/","community",{"text":290,"config":291},"Forum",{"href":292,"dataGaName":293,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":295,"config":296},"Événements",{"href":297,"dataGaName":298,"dataGaLocation":49},"/events/","events",{"text":300,"config":301},"Partenaires",{"href":302,"dataGaName":303,"dataGaLocation":49},"/fr-fr/partners/","partners",{"backgroundColor":305,"textColor":306,"text":307,"image":308,"link":312},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":309,"config":310},"carte promo The Source",{"src":311},"/images/navigation/the-source-promo-card.svg",{"text":313,"config":314},"Lire les articles les plus récents",{"href":315,"dataGaName":316,"dataGaLocation":49},"/fr-fr/the-source/","the source",{"text":318,"config":319,"lists":321},"Société",{"dataNavLevelOne":320},"company",[322],{"items":323},[324,329,335,337,342,347,352,357,362,367,372],{"text":325,"config":326},"À propos",{"href":327,"dataGaName":328,"dataGaLocation":49},"/fr-fr/company/","about",{"text":330,"config":331,"footerGa":334},"Emplois",{"href":332,"dataGaName":333,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":333},{"text":295,"config":336},{"href":297,"dataGaName":298,"dataGaLocation":49},{"text":338,"config":339},"Leadership",{"href":340,"dataGaName":341,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":343,"config":344},"Équipe",{"href":345,"dataGaName":346,"dataGaLocation":49},"/company/team/","team",{"text":348,"config":349},"Manuel",{"href":350,"dataGaName":351,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":353,"config":354},"Relations avec les investisseurs",{"href":355,"dataGaName":356,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":358,"config":359},"Centre de confiance",{"href":360,"dataGaName":361,"dataGaLocation":49},"/fr-fr/security/","trust center",{"text":363,"config":364},"Centre pour la transparence de l'IA",{"href":365,"dataGaName":366,"dataGaLocation":49},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":368,"config":369},"Newsletter",{"href":370,"dataGaName":371,"dataGaLocation":49},"/company/contact/","newsletter",{"text":373,"config":374},"Presse",{"href":375,"dataGaName":376,"dataGaLocation":49},"/press/","press",{"text":378,"config":379,"lists":380},"Nous contacter",{"dataNavLevelOne":320},[381],{"items":382},[383,386,391],{"text":56,"config":384},{"href":58,"dataGaName":385,"dataGaLocation":49},"talk to sales",{"text":387,"config":388},"Aide",{"href":389,"dataGaName":390,"dataGaLocation":49},"/support/","get help",{"text":392,"config":393},"Portail clients GitLab",{"href":394,"dataGaName":395,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":397,"login":398,"suggestions":405},"Fermer",{"text":399,"link":400},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":401,"config":402},"gitlab.com",{"href":63,"dataGaName":403,"dataGaLocation":404},"search login","search",{"text":406,"default":407},"Suggestions",[408,411,416,418,423,428],{"text":78,"config":409},{"href":83,"dataGaName":410,"dataGaLocation":404},"GitLab Duo (AI)",{"text":412,"config":413},"Suggestions de code (IA)",{"href":414,"dataGaName":415,"dataGaLocation":404},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":23,"config":417},{"href":130,"dataGaName":23,"dataGaLocation":404},{"text":419,"config":420},"GitLab sur AWS",{"href":421,"dataGaName":422,"dataGaLocation":404},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":424,"config":425},"GitLab sur Google Cloud ",{"href":426,"dataGaName":427,"dataGaLocation":404},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":429,"config":430},"Pourquoi utiliser GitLab ?",{"href":91,"dataGaName":431,"dataGaLocation":404},"Why GitLab?",{"freeTrial":433,"mobileIcon":438,"desktopIcon":443},{"text":434,"config":435},"Commencer votre essai gratuit",{"href":436,"dataGaName":54,"dataGaLocation":437},"https://gitlab.com/-/trials/new/","nav",{"altText":439,"config":440},"Icône GitLab",{"src":441,"dataGaName":442,"dataGaLocation":437},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":439,"config":444},{"src":445,"dataGaName":442,"dataGaLocation":437},"/images/brand/gitlab-logo-type.svg",{"freeTrial":447,"mobileIcon":451,"desktopIcon":453},{"text":448,"config":449},"En savoir plus sur GitLab Duo",{"href":83,"dataGaName":450,"dataGaLocation":437},"gitlab duo",{"altText":439,"config":452},{"src":441,"dataGaName":442,"dataGaLocation":437},{"altText":439,"config":454},{"src":445,"dataGaName":442,"dataGaLocation":437},"content:shared:fr-fr:main-navigation.yml","Main Navigation","shared/fr-fr/main-navigation.yml","shared/fr-fr/main-navigation",{"_path":460,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"title":461,"titleMobile":461,"button":462,"config":467,"_id":469,"_type":35,"_source":37,"_file":470,"_stem":471,"_extension":40},"/shared/fr-fr/banner","La plateforme GitLab Duo Agent est maintenant disponible en version bêta publique !",{"text":463,"config":464},"Essayer la version bêta",{"href":465,"dataGaName":466,"dataGaLocation":49},"/fr-fr/gitlab-duo/agent-platform/","duo banner",{"layout":468},"release","content:shared:fr-fr:banner.yml","shared/fr-fr/banner.yml","shared/fr-fr/banner",{"_path":473,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":474,"_id":680,"_type":35,"title":681,"_source":37,"_file":682,"_stem":683,"_extension":40},"/shared/fr-fr/main-footer",{"text":475,"source":476,"edit":482,"contribute":487,"config":492,"items":497,"minimal":671},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":477,"config":478},"Afficher le code source de la page",{"href":479,"dataGaName":480,"dataGaLocation":481},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":483,"config":484},"Modifier cette page",{"href":485,"dataGaName":486,"dataGaLocation":481},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":488,"config":489},"Veuillez contribuer",{"href":490,"dataGaName":491,"dataGaLocation":481},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":493,"facebook":494,"youtube":495,"linkedin":496},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[498,521,575,608,642],{"title":67,"links":499,"subMenu":504},[500],{"text":501,"config":502},"Plateforme DevSecOps",{"href":76,"dataGaName":503,"dataGaLocation":481},"devsecops platform",[505],{"title":208,"links":506},[507,511,516],{"text":508,"config":509},"Voir les forfaits",{"href":210,"dataGaName":510,"dataGaLocation":481},"view plans",{"text":512,"config":513},"Pourquoi choisir GitLab Premium ?",{"href":514,"dataGaName":515,"dataGaLocation":481},"/fr-fr/pricing/premium/","why premium",{"text":517,"config":518},"Pourquoi choisir GitLab Ultimate ?",{"href":519,"dataGaName":520,"dataGaLocation":481},"/fr-fr/pricing/ultimate/","why ultimate",{"title":522,"links":523},"Solutions",[524,529,532,534,539,544,548,551,554,559,561,563,565,570],{"text":525,"config":526},"Transformation digitale",{"href":527,"dataGaName":528,"dataGaLocation":481},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":530,"config":531},"Sécurité et conformité",{"href":156,"dataGaName":157,"dataGaLocation":481},{"text":141,"config":533},{"href":125,"dataGaName":126,"dataGaLocation":481},{"text":535,"config":536},"Développement agile",{"href":537,"dataGaName":538,"dataGaLocation":481},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":540,"config":541},"Transformation cloud",{"href":542,"dataGaName":543,"dataGaLocation":481},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":545,"config":546},"SCM",{"href":138,"dataGaName":547,"dataGaLocation":481},"source code management",{"text":23,"config":549},{"href":130,"dataGaName":550,"dataGaLocation":481},"continuous integration & delivery",{"text":180,"config":552},{"href":182,"dataGaName":553,"dataGaLocation":481},"value stream management",{"text":555,"config":556},"GitOps",{"href":557,"dataGaName":558,"dataGaLocation":481},"/fr-fr/solutions/gitops/","gitops",{"text":193,"config":560},{"href":195,"dataGaName":196,"dataGaLocation":481},{"text":198,"config":562},{"href":200,"dataGaName":201,"dataGaLocation":481},{"text":203,"config":564},{"href":205,"dataGaName":206,"dataGaLocation":481},{"text":566,"config":567},"Formation",{"href":568,"dataGaName":569,"dataGaLocation":481},"/fr-fr/solutions/education/","education",{"text":571,"config":572},"Services financiers",{"href":573,"dataGaName":574,"dataGaLocation":481},"/fr-fr/solutions/finance/","financial services",{"title":213,"links":576},[577,579,581,583,586,588,592,594,596,598,600,602,604,606],{"text":225,"config":578},{"href":227,"dataGaName":228,"dataGaLocation":481},{"text":230,"config":580},{"href":232,"dataGaName":233,"dataGaLocation":481},{"text":235,"config":582},{"href":237,"dataGaName":238,"dataGaLocation":481},{"text":240,"config":584},{"href":242,"dataGaName":585,"dataGaLocation":481},"docs",{"text":263,"config":587},{"href":265,"dataGaName":5},{"text":589,"config":590},"Histoires de réussite client",{"href":591,"dataGaLocation":481},"/customers/",{"text":258,"config":593},{"href":260,"dataGaName":261,"dataGaLocation":481},{"text":267,"config":595},{"href":269,"dataGaName":270,"dataGaLocation":481},{"text":280,"config":597},{"href":282,"dataGaName":283,"dataGaLocation":481},{"text":272,"config":599},{"href":274,"dataGaName":275,"dataGaLocation":481},{"text":285,"config":601},{"href":287,"dataGaName":288,"dataGaLocation":481},{"text":290,"config":603},{"href":292,"dataGaName":293,"dataGaLocation":481},{"text":295,"config":605},{"href":297,"dataGaName":298,"dataGaLocation":481},{"text":300,"config":607},{"href":302,"dataGaName":303,"dataGaLocation":481},{"title":318,"links":609},[610,612,614,616,618,620,622,626,631,633,635,637],{"text":325,"config":611},{"href":327,"dataGaName":320,"dataGaLocation":481},{"text":330,"config":613},{"href":332,"dataGaName":333,"dataGaLocation":481},{"text":338,"config":615},{"href":340,"dataGaName":341,"dataGaLocation":481},{"text":343,"config":617},{"href":345,"dataGaName":346,"dataGaLocation":481},{"text":348,"config":619},{"href":350,"dataGaName":351,"dataGaLocation":481},{"text":353,"config":621},{"href":355,"dataGaName":356,"dataGaLocation":481},{"text":623,"config":624},"Sustainability",{"href":625,"dataGaName":623,"dataGaLocation":481},"/sustainability/",{"text":627,"config":628},"Diversité, inclusion et appartenance (DIB)",{"href":629,"dataGaName":630,"dataGaLocation":481},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":358,"config":632},{"href":360,"dataGaName":361,"dataGaLocation":481},{"text":368,"config":634},{"href":370,"dataGaName":371,"dataGaLocation":481},{"text":373,"config":636},{"href":375,"dataGaName":376,"dataGaLocation":481},{"text":638,"config":639},"Déclaration de transparence sur l'esclavage moderne",{"href":640,"dataGaName":641,"dataGaLocation":481},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":378,"links":643},[644,647,649,651,656,661,666],{"text":645,"config":646},"Échanger avec un expert",{"href":58,"dataGaName":59,"dataGaLocation":481},{"text":387,"config":648},{"href":389,"dataGaName":390,"dataGaLocation":481},{"text":392,"config":650},{"href":394,"dataGaName":395,"dataGaLocation":481},{"text":652,"config":653},"Statut",{"href":654,"dataGaName":655,"dataGaLocation":481},"https://status.gitlab.com/","status",{"text":657,"config":658},"Conditions d'utilisation",{"href":659,"dataGaName":660},"/terms/","terms of use",{"text":662,"config":663},"Déclaration de confidentialité",{"href":664,"dataGaName":665,"dataGaLocation":481},"/fr-fr/privacy/","privacy statement",{"text":667,"config":668},"Préférences en matière de cookies",{"dataGaName":669,"dataGaLocation":481,"id":670,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":672},[673,675,678],{"text":657,"config":674},{"href":659,"dataGaName":660,"dataGaLocation":481},{"text":676,"config":677},"Politique de confidentialité",{"href":664,"dataGaName":665,"dataGaLocation":481},{"text":667,"config":679},{"dataGaName":669,"dataGaLocation":481,"id":670,"isOneTrustButton":32},"content:shared:fr-fr:main-footer.yml","Main Footer","shared/fr-fr/main-footer.yml","shared/fr-fr/main-footer",[685],{"_path":686,"_dir":687,"_draft":6,"_partial":6,"_locale":7,"content":688,"config":692,"_id":694,"_type":35,"title":18,"_source":37,"_file":695,"_stem":696,"_extension":40},"/en-us/blog/authors/tim-rizzi","authors",{"name":18,"config":689},{"headshot":690,"ctfId":691},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661866/Blog/Author%20Headshots/trizzi-headshot.jpg","trizzi",{"template":693},"BlogAuthor","content:en-us:blog:authors:tim-rizzi.yml","en-us/blog/authors/tim-rizzi.yml","en-us/blog/authors/tim-rizzi",{"_path":698,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"header":699,"eyebrow":700,"blurb":701,"button":702,"secondaryButton":706,"_id":708,"_type":35,"title":709,"_source":37,"_file":710,"_stem":711,"_extension":40},"/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":51,"config":703},{"href":704,"dataGaName":54,"dataGaLocation":705},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":707},{"href":58,"dataGaName":59,"dataGaLocation":705},"content:shared:fr-fr:next-steps.yml","Next Steps","shared/fr-fr/next-steps.yml","shared/fr-fr/next-steps",1758521561273]