[{"data":1,"prerenderedAt":709},["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":471,"Tim Rizzi":681,"next-steps-de-de":694},{"_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,157,162],{"text":154,"config":155},"Sicherheit und Compliance",{"href":149,"dataGaLocation":49,"dataGaName":156},"Security & Compliance",{"text":158,"config":159},"Schutz der Software-Lieferkette",{"href":160,"dataGaLocation":49,"dataGaName":161},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":163,"config":164},"Compliance und Governance",{"href":165,"dataGaLocation":49,"dataGaName":166},"/de-de/solutions/continuous-software-compliance/","Compliance and governance",{"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},"/images/navigation/the-source-promo-card.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},"/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},"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":466,"_id":468,"_type":35,"_source":37,"_file":469,"_stem":470,"_extension":40},"/shared/de-de/banner","GitLab Duo Agent Platform ist jetzt in öffentlicher Beta!",{"text":89,"config":463},{"href":464,"dataGaName":465,"dataGaLocation":49},"/de-de/gitlab-duo/agent-platform/","duo banner",{"layout":467},"release","content:shared:de-de:banner.yml","shared/de-de/banner.yml","shared/de-de/banner",{"_path":472,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":473,"_id":677,"_type":35,"title":678,"_source":37,"_file":679,"_stem":680,"_extension":40},"/shared/de-de/main-footer",{"text":474,"source":475,"edit":481,"contribute":486,"config":491,"items":496,"minimal":669},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":476,"config":477},"Quelltext der Seite anzeigen",{"href":478,"dataGaName":479,"dataGaLocation":480},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":482,"config":483},"Diese Seite bearbeiten",{"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},"Beteilige dich",{"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://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[497,520,575,605,639],{"title":67,"links":498,"subMenu":503},[499],{"text":500,"config":501},"DevSecOps-Plattform",{"href":76,"dataGaName":502,"dataGaLocation":480},"devsecops platform",[504],{"title":208,"links":505},[506,510,515],{"text":507,"config":508},"Tarife anzeigen",{"href":210,"dataGaName":509,"dataGaLocation":480},"view plans",{"text":511,"config":512},"Vorteile von Premium",{"href":513,"dataGaName":514,"dataGaLocation":480},"/de-de/pricing/premium/","why premium",{"text":516,"config":517},"Vorteile von Ultimate",{"href":518,"dataGaName":519,"dataGaLocation":480},"/de-de/pricing/ultimate/","why ultimate",{"title":521,"links":522},"Lösungen",[523,528,531,533,538,543,547,550,553,558,560,562,565,570],{"text":524,"config":525},"Digitale Transformation",{"href":526,"dataGaName":527,"dataGaLocation":480},"/de-de/topics/digital-transformation/","digital transformation",{"text":154,"config":529},{"href":149,"dataGaName":530,"dataGaLocation":480},"security & compliance",{"text":141,"config":532},{"href":125,"dataGaName":126,"dataGaLocation":480},{"text":534,"config":535},"Agile Entwicklung",{"href":536,"dataGaName":537,"dataGaLocation":480},"/de-de/solutions/agile-delivery/","agile delivery",{"text":539,"config":540},"Cloud-Transformation",{"href":541,"dataGaName":542,"dataGaLocation":480},"/de-de/topics/cloud-native/","cloud transformation",{"text":544,"config":545},"SCM",{"href":138,"dataGaName":546,"dataGaLocation":480},"source code management",{"text":23,"config":548},{"href":130,"dataGaName":549,"dataGaLocation":480},"continuous integration & delivery",{"text":180,"config":551},{"href":182,"dataGaName":552,"dataGaLocation":480},"value stream management",{"text":554,"config":555},"GitOps",{"href":556,"dataGaName":557,"dataGaLocation":480},"/de-de/solutions/gitops/","gitops",{"text":193,"config":559},{"href":195,"dataGaName":196,"dataGaLocation":480},{"text":198,"config":561},{"href":200,"dataGaName":201,"dataGaLocation":480},{"text":563,"config":564},"Öffentlicher Sektor",{"href":205,"dataGaName":206,"dataGaLocation":480},{"text":566,"config":567},"Bildungswesen",{"href":568,"dataGaName":569,"dataGaLocation":480},"/de-de/solutions/education/","education",{"text":571,"config":572},"Finanzdienstleistungen",{"href":573,"dataGaName":574,"dataGaLocation":480},"/de-de/solutions/finance/","financial services",{"title":213,"links":576},[577,579,581,583,586,588,591,593,595,597,599,601,603],{"text":225,"config":578},{"href":227,"dataGaName":228,"dataGaLocation":480},{"text":230,"config":580},{"href":232,"dataGaName":233,"dataGaLocation":480},{"text":235,"config":582},{"href":237,"dataGaName":238,"dataGaLocation":480},{"text":240,"config":584},{"href":242,"dataGaName":585,"dataGaLocation":480},"docs",{"text":263,"config":587},{"href":265,"dataGaName":5,"dataGaLocation":480},{"text":258,"config":589},{"href":590,"dataGaName":261,"dataGaLocation":480},"/customers/",{"text":267,"config":592},{"href":269,"dataGaName":270,"dataGaLocation":480},{"text":280,"config":594},{"href":282,"dataGaName":283,"dataGaLocation":480},{"text":272,"config":596},{"href":274,"dataGaName":275,"dataGaLocation":480},{"text":285,"config":598},{"href":287,"dataGaName":288,"dataGaLocation":480},{"text":290,"config":600},{"href":292,"dataGaName":293,"dataGaLocation":480},{"text":295,"config":602},{"href":297,"dataGaName":298,"dataGaLocation":480},{"text":300,"config":604},{"href":302,"dataGaName":303,"dataGaLocation":480},{"title":318,"links":606},[607,609,611,613,615,617,619,623,628,630,632,634],{"text":325,"config":608},{"href":327,"dataGaName":320,"dataGaLocation":480},{"text":330,"config":610},{"href":332,"dataGaName":333,"dataGaLocation":480},{"text":338,"config":612},{"href":340,"dataGaName":341,"dataGaLocation":480},{"text":343,"config":614},{"href":345,"dataGaName":346,"dataGaLocation":480},{"text":348,"config":616},{"href":350,"dataGaName":351,"dataGaLocation":480},{"text":353,"config":618},{"href":355,"dataGaName":356,"dataGaLocation":480},{"text":620,"config":621},"Sustainability",{"href":622,"dataGaName":620,"dataGaLocation":480},"/sustainability/",{"text":624,"config":625},"Vielfalt, Inklusion und Zugehörigkeit",{"href":626,"dataGaName":627,"dataGaLocation":480},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":358,"config":629},{"href":360,"dataGaName":361,"dataGaLocation":480},{"text":368,"config":631},{"href":370,"dataGaName":371,"dataGaLocation":480},{"text":373,"config":633},{"href":375,"dataGaName":376,"dataGaLocation":480},{"text":635,"config":636},"Transparenzerklärung zu moderner Sklaverei",{"href":637,"dataGaName":638,"dataGaLocation":480},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":640,"links":641},"Nimm Kontakt auf",[642,645,647,649,654,659,664],{"text":643,"config":644},"Sprich mit einem Experten/einer Expertin",{"href":58,"dataGaName":59,"dataGaLocation":480},{"text":387,"config":646},{"href":389,"dataGaName":390,"dataGaLocation":480},{"text":392,"config":648},{"href":394,"dataGaName":395,"dataGaLocation":480},{"text":650,"config":651},"Status",{"href":652,"dataGaName":653,"dataGaLocation":480},"https://status.gitlab.com/","status",{"text":655,"config":656},"Nutzungsbedingungen",{"href":657,"dataGaName":658,"dataGaLocation":480},"/terms/","terms of use",{"text":660,"config":661},"Datenschutzerklärung",{"href":662,"dataGaName":663,"dataGaLocation":480},"/de-de/privacy/","privacy statement",{"text":665,"config":666},"Cookie-Einstellungen",{"dataGaName":667,"dataGaLocation":480,"id":668,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":670},[671,673,675],{"text":655,"config":672},{"href":657,"dataGaName":658,"dataGaLocation":480},{"text":660,"config":674},{"href":662,"dataGaName":663,"dataGaLocation":480},{"text":665,"config":676},{"dataGaName":667,"dataGaLocation":480,"id":668,"isOneTrustButton":32},"content:shared:de-de:main-footer.yml","Main Footer","shared/de-de/main-footer.yml","shared/de-de/main-footer",[682],{"_path":683,"_dir":684,"_draft":6,"_partial":6,"_locale":7,"content":685,"config":689,"_id":691,"_type":35,"title":18,"_source":37,"_file":692,"_stem":693,"_extension":40},"/en-us/blog/authors/tim-rizzi","authors",{"name":18,"config":686},{"headshot":687,"ctfId":688},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661866/Blog/Author%20Headshots/trizzi-headshot.jpg","trizzi",{"template":690},"BlogAuthor","content:en-us:blog:authors:tim-rizzi.yml","en-us/blog/authors/tim-rizzi.yml","en-us/blog/authors/tim-rizzi",{"_path":695,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"header":696,"eyebrow":697,"blurb":698,"button":699,"secondaryButton":703,"_id":705,"_type":35,"title":706,"_source":37,"_file":707,"_stem":708,"_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":700},{"href":701,"dataGaName":54,"dataGaLocation":702},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":704},{"href":58,"dataGaName":59,"dataGaLocation":702},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1753475284581]