[{"data":1,"prerenderedAt":714},["ShallowReactive",2],{"/de-de/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab":3,"navigation-de-de":41,"banner-de-de":458,"footer-de-de":471,"Tim Rizzi":680,"footer-source-/de-de/blog/automating-container-image-migration-from-amazon-ecr-to-gitlab/":693,"next-steps-de-de":699},{"_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":454,"_type":35,"title":455,"_source":37,"_file":456,"_stem":457,"_extension":40},"/shared/de-de/main-navigation","de-de",{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":395,"minimal":431,"duo":445},{"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,206,211,316,376],{"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":188},"Produkt",{"dataNavLevelOne":113},"solutions",{"text":115,"config":116},"Alle Lösungen anzeigen",{"href":117,"dataGaName":113,"dataGaLocation":49},"/de-de/solutions/",[119,144,166],{"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/application-security-testing/","security and compliance","ShieldCheckLight",[153,157,162],{"text":154,"config":155},"Application Security Testing",{"href":149,"dataGaName":156,"dataGaLocation":49},"Application security testing",{"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},"Software Compliance",{"href":165,"dataGaName":163,"dataGaLocation":49},"/de-de/solutions/software-compliance/",{"title":167,"link":168,"items":173},"Bewertung",{"config":169},{"icon":170,"href":171,"dataGaName":172,"dataGaLocation":49},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[174,178,183],{"text":175,"config":176},"Sichtbarkeit und Bewertung",{"href":171,"dataGaLocation":49,"dataGaName":177},"Visibility and Measurement",{"text":179,"config":180},"Wertstrommanagement",{"href":181,"dataGaLocation":49,"dataGaName":182},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":184,"config":185},"Analysen und Einblicke",{"href":186,"dataGaLocation":49,"dataGaName":187},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":189,"items":190},"GitLab für",[191,196,201],{"text":192,"config":193},"Enterprise",{"href":194,"dataGaLocation":49,"dataGaName":195},"/de-de/enterprise/","enterprise",{"text":197,"config":198},"Kleinunternehmen",{"href":199,"dataGaLocation":49,"dataGaName":200},"/de-de/small-business/","small business",{"text":202,"config":203},"den öffentlichen Sektor",{"href":204,"dataGaLocation":49,"dataGaName":205},"/de-de/solutions/public-sector/","public sector",{"text":207,"config":208},"Preise",{"href":209,"dataGaName":210,"dataGaLocation":49,"dataNavLevelOne":210},"/de-de/pricing/","pricing",{"text":212,"config":213,"link":215,"lists":219,"feature":303},"Ressourcen",{"dataNavLevelOne":214},"resources",{"text":216,"config":217},"Alle Ressourcen anzeigen",{"href":218,"dataGaName":214,"dataGaLocation":49},"/de-de/resources/",[220,253,275],{"title":221,"items":222},"Erste Schritte",[223,228,233,238,243,248],{"text":224,"config":225},"Installieren",{"href":226,"dataGaName":227,"dataGaLocation":49},"/de-de/install/","install",{"text":229,"config":230},"Kurzanleitungen",{"href":231,"dataGaName":232,"dataGaLocation":49},"/de-de/get-started/","quick setup checklists",{"text":234,"config":235},"Lernen",{"href":236,"dataGaLocation":49,"dataGaName":237},"https://university.gitlab.com/","learn",{"text":239,"config":240},"Produktdokumentation",{"href":241,"dataGaName":242,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":244,"config":245},"Best-Practice-Videos",{"href":246,"dataGaName":247,"dataGaLocation":49},"/de-de/getting-started-videos/","best practice videos",{"text":249,"config":250},"Integrationen",{"href":251,"dataGaName":252,"dataGaLocation":49},"/de-de/integrations/","integrations",{"title":254,"items":255},"Entdecken",[256,261,265,270],{"text":257,"config":258},"Kundenerfolge",{"href":259,"dataGaName":260,"dataGaLocation":49},"/de-de/customers/","customer success stories",{"text":262,"config":263},"Blog",{"href":264,"dataGaName":5,"dataGaLocation":49},"/de-de/blog/",{"text":266,"config":267},"Remote",{"href":268,"dataGaName":269,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":271,"config":272},"TeamOps",{"href":273,"dataGaName":274,"dataGaLocation":49},"/de-de/teamops/","teamops",{"title":276,"items":277},"Vernetzen",[278,283,288,293,298],{"text":279,"config":280},"GitLab-Services",{"href":281,"dataGaName":282,"dataGaLocation":49},"/de-de/services/","services",{"text":284,"config":285},"Community",{"href":286,"dataGaName":287,"dataGaLocation":49},"/community/","community",{"text":289,"config":290},"Forum",{"href":291,"dataGaName":292,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":294,"config":295},"Veranstaltungen",{"href":296,"dataGaName":297,"dataGaLocation":49},"/events/","events",{"text":299,"config":300},"Partner",{"href":301,"dataGaName":302,"dataGaLocation":49},"/de-de/partners/","partners",{"backgroundColor":304,"textColor":305,"text":306,"image":307,"link":311},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":308,"config":309},"the source promo card",{"src":310},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":312,"config":313},"Lies die News",{"href":314,"dataGaName":315,"dataGaLocation":49},"/de-de/the-source/","the source",{"text":317,"config":318,"lists":320},"Unternehmen",{"dataNavLevelOne":319},"company",[321],{"items":322},[323,328,334,336,341,346,351,356,361,366,371],{"text":324,"config":325},"Über",{"href":326,"dataGaName":327,"dataGaLocation":49},"/de-de/company/","about",{"text":329,"config":330,"footerGa":333},"Karriere",{"href":331,"dataGaName":332,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":332},{"text":294,"config":335},{"href":296,"dataGaName":297,"dataGaLocation":49},{"text":337,"config":338},"Geschäftsführung",{"href":339,"dataGaName":340,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":342,"config":343},"Team",{"href":344,"dataGaName":345,"dataGaLocation":49},"/company/team/","team",{"text":347,"config":348},"Handbuch",{"href":349,"dataGaName":350,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":352,"config":353},"Investor Relations",{"href":354,"dataGaName":355,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":357,"config":358},"Trust Center",{"href":359,"dataGaName":360,"dataGaLocation":49},"/de-de/security/","trust center",{"text":362,"config":363},"AI Transparency Center",{"href":364,"dataGaName":365,"dataGaLocation":49},"/de-de/ai-transparency-center/","ai transparency center",{"text":367,"config":368},"Newsletter",{"href":369,"dataGaName":370,"dataGaLocation":49},"/company/contact/","newsletter",{"text":372,"config":373},"Presse",{"href":374,"dataGaName":375,"dataGaLocation":49},"/press/","press",{"text":377,"config":378,"lists":379},"Kontakt",{"dataNavLevelOne":319},[380],{"items":381},[382,385,390],{"text":56,"config":383},{"href":58,"dataGaName":384,"dataGaLocation":49},"talk to sales",{"text":386,"config":387},"Support",{"href":388,"dataGaName":389,"dataGaLocation":49},"/support/","get help",{"text":391,"config":392},"Kundenportal",{"href":393,"dataGaName":394,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":396,"login":397,"suggestions":404},"Schließen",{"text":398,"link":399},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":400,"config":401},"gitlab.com",{"href":63,"dataGaName":402,"dataGaLocation":403},"search login","search",{"text":405,"default":406},"Vorschläge",[407,410,415,417,422,427],{"text":78,"config":408},{"href":83,"dataGaName":409,"dataGaLocation":403},"GitLab Duo (AI)",{"text":411,"config":412},"Code Suggestions (KI)",{"href":413,"dataGaName":414,"dataGaLocation":403},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":23,"config":416},{"href":130,"dataGaName":23,"dataGaLocation":403},{"text":418,"config":419},"GitLab auf AWS",{"href":420,"dataGaName":421,"dataGaLocation":403},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":423,"config":424},"GitLab auf Google Cloud",{"href":425,"dataGaName":426,"dataGaLocation":403},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":428,"config":429},"Warum GitLab?",{"href":91,"dataGaName":430,"dataGaLocation":403},"Why GitLab?",{"freeTrial":432,"mobileIcon":437,"desktopIcon":442},{"text":433,"config":434},"Kostenlos testen",{"href":435,"dataGaName":54,"dataGaLocation":436},"https://gitlab.com/-/trials/new/","nav",{"altText":438,"config":439},"GitLab-Symbol",{"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},"Erfahre mehr über GitLab Duo",{"href":83,"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:de-de:main-navigation.yml","Main Navigation","shared/de-de/main-navigation.yml","shared/de-de/main-navigation",{"_path":459,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"title":460,"button":461,"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":462,"config":463},"Beta testen",{"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":676,"_type":35,"title":677,"_source":37,"_file":678,"_stem":679,"_extension":40},"/shared/de-de/main-footer",{"text":474,"source":475,"edit":481,"contribute":486,"config":491,"items":496,"minimal":668},"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,604,638],{"title":67,"links":498,"subMenu":503},[499],{"text":500,"config":501},"DevSecOps-Plattform",{"href":76,"dataGaName":502,"dataGaLocation":480},"devsecops platform",[504],{"title":207,"links":505},[506,510,515],{"text":507,"config":508},"Tarife anzeigen",{"href":209,"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":529,"config":530},"Sicherheit und Compliance",{"href":149,"dataGaName":156,"dataGaLocation":480},{"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":179,"config":551},{"href":181,"dataGaName":552,"dataGaLocation":480},"value stream management",{"text":554,"config":555},"GitOps",{"href":556,"dataGaName":557,"dataGaLocation":480},"/de-de/solutions/gitops/","gitops",{"text":192,"config":559},{"href":194,"dataGaName":195,"dataGaLocation":480},{"text":197,"config":561},{"href":199,"dataGaName":200,"dataGaLocation":480},{"text":563,"config":564},"Öffentlicher Sektor",{"href":204,"dataGaName":205,"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":212,"links":576},[577,579,581,583,586,588,590,592,594,596,598,600,602],{"text":224,"config":578},{"href":226,"dataGaName":227,"dataGaLocation":480},{"text":229,"config":580},{"href":231,"dataGaName":232,"dataGaLocation":480},{"text":234,"config":582},{"href":236,"dataGaName":237,"dataGaLocation":480},{"text":239,"config":584},{"href":241,"dataGaName":585,"dataGaLocation":480},"docs",{"text":262,"config":587},{"href":264,"dataGaName":5,"dataGaLocation":480},{"text":257,"config":589},{"href":259,"dataGaName":260,"dataGaLocation":480},{"text":266,"config":591},{"href":268,"dataGaName":269,"dataGaLocation":480},{"text":279,"config":593},{"href":281,"dataGaName":282,"dataGaLocation":480},{"text":271,"config":595},{"href":273,"dataGaName":274,"dataGaLocation":480},{"text":284,"config":597},{"href":286,"dataGaName":287,"dataGaLocation":480},{"text":289,"config":599},{"href":291,"dataGaName":292,"dataGaLocation":480},{"text":294,"config":601},{"href":296,"dataGaName":297,"dataGaLocation":480},{"text":299,"config":603},{"href":301,"dataGaName":302,"dataGaLocation":480},{"title":317,"links":605},[606,608,610,612,614,616,618,622,627,629,631,633],{"text":324,"config":607},{"href":326,"dataGaName":319,"dataGaLocation":480},{"text":329,"config":609},{"href":331,"dataGaName":332,"dataGaLocation":480},{"text":337,"config":611},{"href":339,"dataGaName":340,"dataGaLocation":480},{"text":342,"config":613},{"href":344,"dataGaName":345,"dataGaLocation":480},{"text":347,"config":615},{"href":349,"dataGaName":350,"dataGaLocation":480},{"text":352,"config":617},{"href":354,"dataGaName":355,"dataGaLocation":480},{"text":619,"config":620},"Sustainability",{"href":621,"dataGaName":619,"dataGaLocation":480},"/sustainability/",{"text":623,"config":624},"Vielfalt, Inklusion und Zugehörigkeit",{"href":625,"dataGaName":626,"dataGaLocation":480},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":357,"config":628},{"href":359,"dataGaName":360,"dataGaLocation":480},{"text":367,"config":630},{"href":369,"dataGaName":370,"dataGaLocation":480},{"text":372,"config":632},{"href":374,"dataGaName":375,"dataGaLocation":480},{"text":634,"config":635},"Transparenzerklärung zu moderner Sklaverei",{"href":636,"dataGaName":637,"dataGaLocation":480},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":639,"links":640},"Nimm Kontakt auf",[641,644,646,648,653,658,663],{"text":642,"config":643},"Sprich mit einem Experten/einer Expertin",{"href":58,"dataGaName":59,"dataGaLocation":480},{"text":386,"config":645},{"href":388,"dataGaName":389,"dataGaLocation":480},{"text":391,"config":647},{"href":393,"dataGaName":394,"dataGaLocation":480},{"text":649,"config":650},"Status",{"href":651,"dataGaName":652,"dataGaLocation":480},"https://status.gitlab.com/","status",{"text":654,"config":655},"Nutzungsbedingungen",{"href":656,"dataGaName":657,"dataGaLocation":480},"/terms/","terms of use",{"text":659,"config":660},"Datenschutzerklärung",{"href":661,"dataGaName":662,"dataGaLocation":480},"/de-de/privacy/","privacy statement",{"text":664,"config":665},"Cookie-Einstellungen",{"dataGaName":666,"dataGaLocation":480,"id":667,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":669},[670,672,674],{"text":654,"config":671},{"href":656,"dataGaName":657,"dataGaLocation":480},{"text":659,"config":673},{"href":661,"dataGaName":662,"dataGaLocation":480},{"text":664,"config":675},{"dataGaName":666,"dataGaLocation":480,"id":667,"isOneTrustButton":32},"content:shared:de-de:main-footer.yml","Main Footer","shared/de-de/main-footer.yml","shared/de-de/main-footer",[681],{"_path":682,"_dir":683,"_draft":6,"_partial":6,"_locale":7,"content":684,"config":688,"_id":690,"_type":35,"title":18,"_source":37,"_file":691,"_stem":692,"_extension":40},"/en-us/blog/authors/tim-rizzi","authors",{"name":18,"config":685},{"headshot":686,"ctfId":687},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661866/Blog/Author%20Headshots/trizzi-headshot.jpg","trizzi",{"template":689},"BlogAuthor","content:en-us:blog:authors:tim-rizzi.yml","en-us/blog/authors/tim-rizzi.yml","en-us/blog/authors/tim-rizzi",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":694,"content":695,"config":698,"_id":34,"_type":35,"title":36,"_source":37,"_file":38,"_stem":39,"_extension":40},{"title":9,"description":10,"ogTitle":9,"ogDescription":10,"noIndex":6,"ogImage":11,"ogUrl":12,"ogSiteName":13,"ogType":14,"canonicalUrls":12,"schema":15},{"title":9,"description":10,"authors":696,"heroImage":11,"date":19,"body":20,"category":21,"tags":697,"updatedDate":29},[18],[23,24,25,26,27,28],{"slug":31,"featured":32,"template":33},{"_path":700,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"header":701,"eyebrow":702,"blurb":703,"button":704,"secondaryButton":708,"_id":710,"_type":35,"title":711,"_source":37,"_file":712,"_stem":713,"_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":705},{"href":706,"dataGaName":54,"dataGaLocation":707},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":709},{"href":58,"dataGaName":59,"dataGaLocation":707},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1759956774901]