[{"data":1,"prerenderedAt":710},["ShallowReactive",2],{"/de-de/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab/":3,"navigation-de-de":41,"banner-de-de":459,"footer-de-de":472,"Tim Rizzi":682,"next-steps-de-de":695},{"_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},"/de-de/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},"Automatisierung der Migration von Container-Images von Amazon ECR zu GitLab","Wenn Plattformteams ihre CI/CD zu GitLab verschieben, sollte die Migration von Container-Images kein Engpass sein. Befolge diese Schritt-für-Schritt-Anleitung, um den Pipeline-Migrationsprozess zu automatisieren.","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\": \"Automatisierung der Migration von Container-Images von Amazon ECR zu 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","„Wir müssen Hunderte von Container-Images von Amazon Elastic Container Registry (ECR) zu GitLab migrieren. Könnt ihr uns helfen?“ Diese Frage taucht immer wieder in Gesprächen mit Platform Engineers auf. Sie modernisierten also ihre DevSecOps-Toolchain mit GitLab, kamen aber beim Verschieben ihrer Container-Images nicht weiter. Während ein einzelner Image-Transfer einfach ist, erscheint das schiere Volumen überwältigend.\n\nEin Platform Engineer brachte es auf den Punkt: „Ich weiß genau, was zu tun ist – pullen, neu kennzeichnen, pushen. Aber ich habe 200 Microservices mit jeweils mehreren Tags. Ich kann es nicht rechtfertigen, Wochen für diese Migration aufzuwenden, während wichtige Infrastrukturarbeiten anstehen.“\n\n## Die Herausforderung\n\nDieses Gespräch führte zu einer Idee. Was wäre, wenn wir den gesamten Prozess automatisieren könnten? Wenn Plattformteams ihre [CI/CD](https://about.gitlab.com/de-de/topics/ci-cd/) zu GitLab verschieben, sollte die Migration von Container-Images kein Engpass sein. Der manuelle Prozess ist einfach, aber repetitiv: Jedes Image pullen, neu kennzeichnen und in die Container-Registry von GitLab pushen. Angesichts dutzender Repositories und mehrerer Tags pro Image, bedeutet dies Tage oder Wochen langwieriger Arbeit.\n\n## Die Lösung\n\nWir haben uns daran gemacht, eine GitLab-Pipeline zu erstellen, die all diese schwierigen Aufgaben automatisch erledigt. Das Ziel war einfach: Wir wollten Platform Engineers ein Tool zur Verfügung stellen, das sie in wenigen Minuten einrichten und über Nacht ausführen können, sodass am nächsten Morgen alle ihre Images erfolgreich migriert wurden.\n\n### Einrichten des Zugriffs\n\nDas Wichtigste zuerst: die Sicherheit. Teams sollen diese Migration mit minimalen AWS-Berechtigungen durchführen können. Hier ist die schreibgeschützte Identitäts- und Zugriffsmanagement (IAM)-Richtlinie dafür:\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### GitLab-Konfiguration\n\nNachdem die Sicherheit gewährleistet ist, ist der nächste Schritt die Einrichtung von GitLab. Wir haben uns auf das Wesentliche beschränkt. Du musst diese Variablen in deinen CI/CD-Einstellungen konfigurieren:\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### Die Migrationspipeline\n\nJetzt wird es interessant. Wir haben die Pipeline mit Docker-in-Docker erstellt, um alle Image-Vorgänge zuverlässig zu verarbeiten:\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\nDie Pipeline hat drei Phasen, die jeweils auf der letzten aufbauen:\n\n1. Entdeckung\n\nZuerst findet sie alle deine Repositories:\n\n```bash\nREPOS=$(aws ecr describe-repositories --query 'repositories[*].repositoryName' --output text)\n```\n\n2. Tag-Auflistung\n\nDann ruft sie für jedes Repository alle Tags ab:\n\n```bash\nTAGS=$(aws ecr describe-images --repository-name $repo --query 'imageDetails[*].imageTags[]' --output text)\n```\n\n3. Übertragung\n\nSchließlich übernimmt sie die eigentliche Migration:\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## Das Ergebnis\n\nErinnerst du dich an den Platform Engineer, der nicht wochenlang mit der Migration verbringen wollte? Diese Lösung bietet Folgendes:\n\n- automatisierte Erkennung und Migration aller Repositories und Tags\n- konsistente Image-Benennung zwischen ECR und GitLab\n- Fehlerbehandlung für fehlgeschlagene Übertragungen\n- klare Protokollierung zur Verfolgung des Fortschritts\n\nAnstatt Skripte zu schreiben und die Migration zu überwachen, konnte sich der Plattform Engineer auf wertvollere Arbeit konzentrieren.\n\n## Verwendung\n\nDie ersten Schritte sind einfach:\n\n1. Kopiere die Datei `.gitlab-ci.yml` in dein Repository.\n2. Konfiguriere die AWS- und GitLab-Variablen.\n3. Setze `BULK_MIGRATE` auf „true“, um die Migration zu starten.\n\n## Best Practices\n\nBei der Unterstützung von Teams bei ihren Migrationen haben wir einige Dinge gelernt:\n\n- Der Prozess sollte außerhalb der Stoßzeiten durchgeführt werden, um die Auswirkungen auf dein Team zu minimieren.\n- Die Pipeline-Protokolle sind wichtig – darin findest du Informationen, wenn es ein Problem gibt.\n- Die Elastic Container Registry (ECR) sollte erst deaktiviert werden, wenn du überprüft hast, dass alle Images erfolgreich übertragen wurden.\n- Bei sehr großen Migrationen solltest du eine Ratenbegrenzung in Betracht ziehen, um eine Überlastung deines Netzwerks zu vermeiden.\n\nWir haben diese Pipeline in unserem öffentlichen GitLab-Repository quelloffen verfügbar gemacht, weil wir der Meinung sind, dass Plattform Engineers Zeit damit verbringen sollten, wertvolle Infrastrukturen aufzubauen, anstatt Container-Images zu kopieren. Passe sie an deine Bedürfnisse an und stelle Fragen zur Implementierung, wenn etwas unklar ist.\n\n> #### Informationen dazu und zu anderen Paketkomponenten findest du in unserer [CI/CD-Katalog-Dokumentation](https://gitlab.com/explore/catalog/components/package).","engineering",[23,24,25,26,27,28],"CI/CD","AWS","tutorial","DevSecOps platform","product","solutions architecture","2025-04-10",{"slug":31,"featured":32,"template":33},"automating-container-image-migration-from-amazon-ecr-to-gitlab",true,"BlogPost","content:de-de:blog:automating-container-image-migration-from-amazon-ecr-to-gitlab.yml","yaml","Automating Container Image Migration From Amazon Ecr To Gitlab","content","de-de/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab.yml","de-de/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/de-de/main-navigation","de-de",{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":396,"minimal":432,"duo":446},{"config":46},{"href":47,"dataGaName":48,"dataGaLocation":49},"/de-de/","gitlab logo","header",{"text":51,"config":52},"Kostenlose Testversion anfordern",{"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},"Vertrieb kontaktieren",{"href":58,"dataGaName":59,"dataGaLocation":49},"/de-de/sales/","sales",{"text":61,"config":62},"Anmelden",{"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},"Plattform",{"dataNavLevelOne":69},"platform",[71,77,85],{"title":67,"description":72,"link":73},"Die umfassendste KI-basierte DevSecOps-Plattform",{"text":74,"config":75},"Erkunde unsere Plattform",{"href":76,"dataGaName":69,"dataGaLocation":49},"/de-de/platform/",{"title":78,"description":79,"link":80},"GitLab Duo (KI)","Entwickle Software schneller mit KI in jeder Phase der Entwicklung",{"text":81,"config":82},"Lerne GitLab Duo kennen",{"href":83,"dataGaName":84,"dataGaLocation":49},"/de-de/gitlab-duo/","gitlab duo ai",{"title":86,"description":87,"link":88},"Gründe, die für GitLab sprechen","10 Gründe, warum Unternehmen sich für GitLab entscheiden",{"text":89,"config":90},"Mehr erfahren",{"href":91,"dataGaName":92,"dataGaLocation":49},"/de-de/why-gitlab/","why gitlab",{"title":94,"items":95},"Erste Schritte mit",[96,101,106],{"text":97,"config":98},"Platform Engineering",{"href":99,"dataGaName":100,"dataGaLocation":49},"/de-de/solutions/platform-engineering/","platform engineering",{"text":102,"config":103},"Entwicklererfahrung",{"href":104,"dataGaName":105,"dataGaLocation":49},"/de-de/developer-experience/","Developer experience",{"text":107,"config":108},"MLOps",{"href":109,"dataGaName":107,"dataGaLocation":49},"/de-de/topics/devops/the-role-of-ai-in-devops/",{"text":111,"left":32,"config":112,"link":114,"lists":118,"footer":189},"Produkt",{"dataNavLevelOne":113},"solutions",{"text":115,"config":116},"Alle Lösungen anzeigen",{"href":117,"dataGaName":113,"dataGaLocation":49},"/de-de/solutions/",[119,144,167],{"title":120,"description":121,"link":122,"items":127},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":123},{"icon":124,"href":125,"dataGaName":126,"dataGaLocation":49},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[128,131,135,140],{"text":23,"config":129},{"href":130,"dataGaLocation":49,"dataGaName":23},"/de-de/solutions/continuous-integration/",{"text":132,"config":133},"KI-unterstützte Entwicklung",{"href":83,"dataGaLocation":49,"dataGaName":134},"AI assisted development",{"text":136,"config":137},"Quellcodeverwaltung",{"href":138,"dataGaLocation":49,"dataGaName":139},"/de-de/solutions/source-code-management/","Source Code Management",{"text":141,"config":142},"Automatisierte Softwarebereitstellung",{"href":125,"dataGaLocation":49,"dataGaName":143},"Automated software delivery",{"title":145,"description":146,"link":147,"items":152},"Sicherheit","Entwickle schneller, ohne die Sicherheit zu gefährden",{"config":148},{"href":149,"dataGaName":150,"dataGaLocation":49,"icon":151},"/de-de/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},"Schutz der Software-Lieferkette",{"href":161,"dataGaLocation":49,"dataGaName":162},"/de-de/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},"Bewertung",{"config":170},{"icon":171,"href":172,"dataGaName":173,"dataGaLocation":49},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[175,179,184],{"text":176,"config":177},"Sichtbarkeit und Bewertung",{"href":172,"dataGaLocation":49,"dataGaName":178},"Visibility and Measurement",{"text":180,"config":181},"Wertstrommanagement",{"href":182,"dataGaLocation":49,"dataGaName":183},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":185,"config":186},"Analysen und Einblicke",{"href":187,"dataGaLocation":49,"dataGaName":188},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":190,"items":191},"GitLab für",[192,197,202],{"text":193,"config":194},"Enterprise",{"href":195,"dataGaLocation":49,"dataGaName":196},"/de-de/enterprise/","enterprise",{"text":198,"config":199},"Kleinunternehmen",{"href":200,"dataGaLocation":49,"dataGaName":201},"/de-de/small-business/","small business",{"text":203,"config":204},"den öffentlichen Sektor",{"href":205,"dataGaLocation":49,"dataGaName":206},"/de-de/solutions/public-sector/","public sector",{"text":208,"config":209},"Preise",{"href":210,"dataGaName":211,"dataGaLocation":49,"dataNavLevelOne":211},"/de-de/pricing/","pricing",{"text":213,"config":214,"link":216,"lists":220,"feature":304},"Ressourcen",{"dataNavLevelOne":215},"resources",{"text":217,"config":218},"Alle Ressourcen anzeigen",{"href":219,"dataGaName":215,"dataGaLocation":49},"/de-de/resources/",[221,254,276],{"title":222,"items":223},"Erste Schritte",[224,229,234,239,244,249],{"text":225,"config":226},"Installieren",{"href":227,"dataGaName":228,"dataGaLocation":49},"/de-de/install/","install",{"text":230,"config":231},"Kurzanleitungen",{"href":232,"dataGaName":233,"dataGaLocation":49},"/de-de/get-started/","quick setup checklists",{"text":235,"config":236},"Lernen",{"href":237,"dataGaLocation":49,"dataGaName":238},"https://university.gitlab.com/","learn",{"text":240,"config":241},"Produktdokumentation",{"href":242,"dataGaName":243,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":245,"config":246},"Best-Practice-Videos",{"href":247,"dataGaName":248,"dataGaLocation":49},"/de-de/getting-started-videos/","best practice videos",{"text":250,"config":251},"Integrationen",{"href":252,"dataGaName":253,"dataGaLocation":49},"/de-de/integrations/","integrations",{"title":255,"items":256},"Entdecken",[257,262,266,271],{"text":258,"config":259},"Kundenerfolge",{"href":260,"dataGaName":261,"dataGaLocation":49},"/de-de/customers/","customer success stories",{"text":263,"config":264},"Blog",{"href":265,"dataGaName":5,"dataGaLocation":49},"/de-de/blog/",{"text":267,"config":268},"Remote",{"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},"/de-de/teamops/","teamops",{"title":277,"items":278},"Vernetzen",[279,284,289,294,299],{"text":280,"config":281},"GitLab-Services",{"href":282,"dataGaName":283,"dataGaLocation":49},"/de-de/services/","services",{"text":285,"config":286},"Community",{"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},"Veranstaltungen",{"href":297,"dataGaName":298,"dataGaLocation":49},"/events/","events",{"text":300,"config":301},"Partner",{"href":302,"dataGaName":303,"dataGaLocation":49},"/de-de/partners/","partners",{"backgroundColor":305,"textColor":306,"text":307,"image":308,"link":312},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":309,"config":310},"the source promo card",{"src":311},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":313,"config":314},"Lies die News",{"href":315,"dataGaName":316,"dataGaLocation":49},"/de-de/the-source/","the source",{"text":318,"config":319,"lists":321},"Unternehmen",{"dataNavLevelOne":320},"company",[322],{"items":323},[324,329,335,337,342,347,352,357,362,367,372],{"text":325,"config":326},"Über",{"href":327,"dataGaName":328,"dataGaLocation":49},"/de-de/company/","about",{"text":330,"config":331,"footerGa":334},"Karriere",{"href":332,"dataGaName":333,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":333},{"text":295,"config":336},{"href":297,"dataGaName":298,"dataGaLocation":49},{"text":338,"config":339},"Geschäftsführung",{"href":340,"dataGaName":341,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":343,"config":344},"Team",{"href":345,"dataGaName":346,"dataGaLocation":49},"/company/team/","team",{"text":348,"config":349},"Handbuch",{"href":350,"dataGaName":351,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":353,"config":354},"Investor Relations",{"href":355,"dataGaName":356,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":358,"config":359},"Trust Center",{"href":360,"dataGaName":361,"dataGaLocation":49},"/de-de/security/","trust center",{"text":363,"config":364},"AI Transparency Center",{"href":365,"dataGaName":366,"dataGaLocation":49},"/de-de/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},"Kontakt",{"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},"Support",{"href":389,"dataGaName":390,"dataGaLocation":49},"/support/","get help",{"text":392,"config":393},"Kundenportal",{"href":394,"dataGaName":395,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":397,"login":398,"suggestions":405},"Schließen",{"text":399,"link":400},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":401,"config":402},"gitlab.com",{"href":63,"dataGaName":403,"dataGaLocation":404},"search login","search",{"text":406,"default":407},"Vorschläge",[408,411,416,418,423,428],{"text":78,"config":409},{"href":83,"dataGaName":410,"dataGaLocation":404},"GitLab Duo (AI)",{"text":412,"config":413},"Code Suggestions (KI)",{"href":414,"dataGaName":415,"dataGaLocation":404},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":23,"config":417},{"href":130,"dataGaName":23,"dataGaLocation":404},{"text":419,"config":420},"GitLab auf AWS",{"href":421,"dataGaName":422,"dataGaLocation":404},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":424,"config":425},"GitLab auf Google Cloud",{"href":426,"dataGaName":427,"dataGaLocation":404},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":429,"config":430},"Warum GitLab?",{"href":91,"dataGaName":431,"dataGaLocation":404},"Why GitLab?",{"freeTrial":433,"mobileIcon":438,"desktopIcon":443},{"text":434,"config":435},"Kostenlos testen",{"href":436,"dataGaName":54,"dataGaLocation":437},"https://gitlab.com/-/trials/new/","nav",{"altText":439,"config":440},"GitLab-Symbol",{"src":441,"dataGaName":442,"dataGaLocation":437},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":439,"config":444},{"src":445,"dataGaName":442,"dataGaLocation":437},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":447,"mobileIcon":451,"desktopIcon":453},{"text":448,"config":449},"Erfahre mehr über 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:de-de:main-navigation.yml","Main Navigation","shared/de-de/main-navigation.yml","shared/de-de/main-navigation",{"_path":460,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"title":461,"button":462,"config":467,"_id":469,"_type":35,"_source":37,"_file":470,"_stem":471,"_extension":40},"/shared/de-de/banner","GitLab Duo Agent Platform ist jetzt in öffentlicher Beta!",{"text":463,"config":464},"Beta testen",{"href":465,"dataGaName":466,"dataGaLocation":49},"/de-de/gitlab-duo/agent-platform/","duo banner",{"layout":468},"release","content:shared:de-de:banner.yml","shared/de-de/banner.yml","shared/de-de/banner",{"_path":473,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":474,"_id":678,"_type":35,"title":679,"_source":37,"_file":680,"_stem":681,"_extension":40},"/shared/de-de/main-footer",{"text":475,"source":476,"edit":482,"contribute":487,"config":492,"items":497,"minimal":670},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":477,"config":478},"Quelltext der Seite anzeigen",{"href":479,"dataGaName":480,"dataGaLocation":481},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":483,"config":484},"Diese Seite bearbeiten",{"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},"Beteilige dich",{"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://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[498,521,576,606,640],{"title":67,"links":499,"subMenu":504},[500],{"text":501,"config":502},"DevSecOps-Plattform",{"href":76,"dataGaName":503,"dataGaLocation":481},"devsecops platform",[505],{"title":208,"links":506},[507,511,516],{"text":508,"config":509},"Tarife anzeigen",{"href":210,"dataGaName":510,"dataGaLocation":481},"view plans",{"text":512,"config":513},"Vorteile von Premium",{"href":514,"dataGaName":515,"dataGaLocation":481},"/de-de/pricing/premium/","why premium",{"text":517,"config":518},"Vorteile von Ultimate",{"href":519,"dataGaName":520,"dataGaLocation":481},"/de-de/pricing/ultimate/","why ultimate",{"title":522,"links":523},"Lösungen",[524,529,532,534,539,544,548,551,554,559,561,563,566,571],{"text":525,"config":526},"Digitale Transformation",{"href":527,"dataGaName":528,"dataGaLocation":481},"/de-de/topics/digital-transformation/","digital transformation",{"text":530,"config":531},"Sicherheit und Compliance",{"href":156,"dataGaName":157,"dataGaLocation":481},{"text":141,"config":533},{"href":125,"dataGaName":126,"dataGaLocation":481},{"text":535,"config":536},"Agile Entwicklung",{"href":537,"dataGaName":538,"dataGaLocation":481},"/de-de/solutions/agile-delivery/","agile delivery",{"text":540,"config":541},"Cloud-Transformation",{"href":542,"dataGaName":543,"dataGaLocation":481},"/de-de/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},"/de-de/solutions/gitops/","gitops",{"text":193,"config":560},{"href":195,"dataGaName":196,"dataGaLocation":481},{"text":198,"config":562},{"href":200,"dataGaName":201,"dataGaLocation":481},{"text":564,"config":565},"Öffentlicher Sektor",{"href":205,"dataGaName":206,"dataGaLocation":481},{"text":567,"config":568},"Bildungswesen",{"href":569,"dataGaName":570,"dataGaLocation":481},"/de-de/solutions/education/","education",{"text":572,"config":573},"Finanzdienstleistungen",{"href":574,"dataGaName":575,"dataGaLocation":481},"/de-de/solutions/finance/","financial services",{"title":213,"links":577},[578,580,582,584,587,589,592,594,596,598,600,602,604],{"text":225,"config":579},{"href":227,"dataGaName":228,"dataGaLocation":481},{"text":230,"config":581},{"href":232,"dataGaName":233,"dataGaLocation":481},{"text":235,"config":583},{"href":237,"dataGaName":238,"dataGaLocation":481},{"text":240,"config":585},{"href":242,"dataGaName":586,"dataGaLocation":481},"docs",{"text":263,"config":588},{"href":265,"dataGaName":5,"dataGaLocation":481},{"text":258,"config":590},{"href":591,"dataGaName":261,"dataGaLocation":481},"/customers/",{"text":267,"config":593},{"href":269,"dataGaName":270,"dataGaLocation":481},{"text":280,"config":595},{"href":282,"dataGaName":283,"dataGaLocation":481},{"text":272,"config":597},{"href":274,"dataGaName":275,"dataGaLocation":481},{"text":285,"config":599},{"href":287,"dataGaName":288,"dataGaLocation":481},{"text":290,"config":601},{"href":292,"dataGaName":293,"dataGaLocation":481},{"text":295,"config":603},{"href":297,"dataGaName":298,"dataGaLocation":481},{"text":300,"config":605},{"href":302,"dataGaName":303,"dataGaLocation":481},{"title":318,"links":607},[608,610,612,614,616,618,620,624,629,631,633,635],{"text":325,"config":609},{"href":327,"dataGaName":320,"dataGaLocation":481},{"text":330,"config":611},{"href":332,"dataGaName":333,"dataGaLocation":481},{"text":338,"config":613},{"href":340,"dataGaName":341,"dataGaLocation":481},{"text":343,"config":615},{"href":345,"dataGaName":346,"dataGaLocation":481},{"text":348,"config":617},{"href":350,"dataGaName":351,"dataGaLocation":481},{"text":353,"config":619},{"href":355,"dataGaName":356,"dataGaLocation":481},{"text":621,"config":622},"Sustainability",{"href":623,"dataGaName":621,"dataGaLocation":481},"/sustainability/",{"text":625,"config":626},"Vielfalt, Inklusion und Zugehörigkeit",{"href":627,"dataGaName":628,"dataGaLocation":481},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":358,"config":630},{"href":360,"dataGaName":361,"dataGaLocation":481},{"text":368,"config":632},{"href":370,"dataGaName":371,"dataGaLocation":481},{"text":373,"config":634},{"href":375,"dataGaName":376,"dataGaLocation":481},{"text":636,"config":637},"Transparenzerklärung zu moderner Sklaverei",{"href":638,"dataGaName":639,"dataGaLocation":481},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":641,"links":642},"Nimm Kontakt auf",[643,646,648,650,655,660,665],{"text":644,"config":645},"Sprich mit einem Experten/einer Expertin",{"href":58,"dataGaName":59,"dataGaLocation":481},{"text":387,"config":647},{"href":389,"dataGaName":390,"dataGaLocation":481},{"text":392,"config":649},{"href":394,"dataGaName":395,"dataGaLocation":481},{"text":651,"config":652},"Status",{"href":653,"dataGaName":654,"dataGaLocation":481},"https://status.gitlab.com/","status",{"text":656,"config":657},"Nutzungsbedingungen",{"href":658,"dataGaName":659,"dataGaLocation":481},"/terms/","terms of use",{"text":661,"config":662},"Datenschutzerklärung",{"href":663,"dataGaName":664,"dataGaLocation":481},"/de-de/privacy/","privacy statement",{"text":666,"config":667},"Cookie-Einstellungen",{"dataGaName":668,"dataGaLocation":481,"id":669,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":671},[672,674,676],{"text":656,"config":673},{"href":658,"dataGaName":659,"dataGaLocation":481},{"text":661,"config":675},{"href":663,"dataGaName":664,"dataGaLocation":481},{"text":666,"config":677},{"dataGaName":668,"dataGaLocation":481,"id":669,"isOneTrustButton":32},"content:shared:de-de:main-footer.yml","Main Footer","shared/de-de/main-footer.yml","shared/de-de/main-footer",[683],{"_path":684,"_dir":685,"_draft":6,"_partial":6,"_locale":7,"content":686,"config":690,"_id":692,"_type":35,"title":18,"_source":37,"_file":693,"_stem":694,"_extension":40},"/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":43,"_draft":6,"_partial":6,"_locale":7,"header":697,"eyebrow":698,"blurb":699,"button":700,"secondaryButton":704,"_id":706,"_type":35,"title":707,"_source":37,"_file":708,"_stem":709,"_extension":40},"/shared/de-de/next-steps","Stelle jetzt bessere Software schneller bereit","Mehr als 50 % der Fortune-100-Unternehmen vertrauen GitLab","Erlebe, was dein Team mit der intelligenten\n\n\nDevSecOps-Plattform erreichen kann.\n",{"text":51,"config":701},{"href":702,"dataGaName":54,"dataGaLocation":703},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":705},{"href":58,"dataGaName":59,"dataGaLocation":703},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1758326186692]