[{"data":1,"prerenderedAt":720},["ShallowReactive",2],{"/de-de/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/":3,"navigation-de-de":41,"banner-de-de":460,"footer-de-de":473,"Rutvik Shah-Michael Friedrich":682,"next-steps-de-de":705},{"_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/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","blog",false,"",{"ogTitle":9,"schema":10,"ogImage":11,"ogDescription":12,"ogSiteName":13,"noIndex":6,"ogType":14,"ogUrl":15,"title":9,"canonicalUrls":15,"description":12},"GitLab Duo – die KI löst Probleme bei CI/CD-Pipelines ","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Entwicklung von GitLab Duo: mit KI und Ursachenanalyse zur Problembehebung bei CI/CD-Pipelines\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rutvik Shah\"},{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2024-06-06\",\n      }","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097321/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097321081.png","Entdecke, wie wir die Ursachenanalyse mit KI aufgepeppt haben, um fehlerhafte CI/CD-Pipelines wieder zum Laufen zu bringen. Dabei erwarten dich Beispiele und Übungen, die du selbst ausprobieren kannst.","https://about.gitlab.com","article","https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",{"title":17,"description":12,"authors":18,"heroImage":11,"date":21,"body":22,"category":23,"tags":24},"Entwicklung von GitLab Duo: mit KI und Ursachenanalyse zur Problembehebung bei CI/CD-Pipelines",[19,20],"Rutvik Shah","Michael Friedrich","2024-06-06","***Generative KI bedeutet einen monumentalen Wandel in der\nSoftwareindustrie, da sie die Entwicklung, die Sicherheit und den Betrieb\nvon Software vereinfacht. Unsere neue Blog-Reihe, von unseren Produkt- und\nEntwicklungsteams, gibt einen Einblick darin, wie wir die\nKI-Funktionalitäten entwickeln, testen und bereitstellen, die in deinem\nUnternehmen benötigt werden. Lerne neue Funktionen innerhalb von GitLab Duo\nkennen und erfahre, wie diese DevSecOps-Teams dabei helfen werden, bessere\nErgebnisse für Kund(inn)en zu erzielen.***\n\n\nHattest du schon einmal eine defekte [CI/CD-Pipeline](https://about.gitlab.com/topics/ci-cd/benefits-continuous-integration/) und musstest deinen DevSecOps-Workflow unterbrechen oder sogar das Deployment verzögern, um die Ursache herauszufinden? Wenn bei der Entwicklung von Software etwas schief läuft, müssen Entwickler(innen) traditionellerweise die Fehler selbst beheben, Logdatei über Logdatei durchforsten und oft viele Behebungsversuche durchführen. Mit der [Ursachenanalyse von GitLab Duo](https://about.gitlab.com/de-de/gitlab-duo/), die Teil unserer Suite aus KI-Funktionen ist, hat das Rätselraten nun ein Ende, denn diese findet für dich die Ursache einer defekten CI/CD-Pipeline. In diesem Artikel erfährst du, was die Ursachenanalyse ist und wie du die KI-Funktionen von GitLab Duo in deinen DevSecOps-Workflow einbauen kannst.\n\n\n> Entdecke die Zukunft von KI-gestützter Softwareentwicklung mit unserem virtuellen Launch-Event zu GitLab 17. [Jetzt ansehen!](https://about.gitlab.com/de-de/seventeen/)\n\n\n## Was ist eine Ursachenanalyse?\n\n\nDie Ursachenanalyse von GitLab Duo ist eine KI-Funktionalität, die dir dabei hilft, die Grundursache eines fehlerhaften CI/CD-Joblauf herauszufinden. Sie analysiert die Protokolle und schlägt dir dann Möglichkeiten zur Behebung vor. Während die Ursachenanalyse oft im Incident Management angesiedelt ist, sind ihre Workflows und die Fehlersuche Teil eines jeden DevSecOps-Workflows. Ops-Teams, Adminstrator(inn)en und Plattformentwickler(innen) stehen durch Bereitstellungsprobleme, die durch Infrastructure as Code (IaC) entstehen, Kubernetes- und GitOps-Probleme oder durch die lange Nachverfolgung von Stacktraces und Untersuchung von Pipeline-Fehlschlägen vor Herausforderungen.\n\n\nMit der Ursachenanalyse von GitLab Duo nutzen alle dasselbe Interface. Mit Hilfe von KI werden Fehler zusammengefasst, analysiert und Lösungsvorschläge gemacht, damit Unternehmen schneller sichere Software veröffentlichen können.\n\n\nEine Pipeline kann aus verschiedensten Gründen Fehler aufweisen, darunter Syntax-Fehler im Code, fehlende Abhängigkeiten, auf denen die Pipeline basiert, Testfehler während des Build-Vorgangs, Zeitüberschreitungen bei Kubernetes- und IaC-Bereitstellungen sowie zahlreiche weitere Probleme. Wenn solche Probleme auftreten, liegt es in der Verantwortung von allen, die durch die Pipeline erstellten Logs genauestens zu überprüfen. Bei der Überprüfung der Logs wird dann der detaillierte Output untersucht, um spezifische Fehlschläge aufzudecken und die Ursache der defekten Pipeline zu finden. Die folgende Pipeline hat beispielsweise mehrere fehlgeschlagene Jobs, die untersucht und repariert werden müssen.\n\n\n![Bild mit mehreren Job-Ausfällen](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097332601.png)\n\n\nEs kann unterschiedlich lange dauern, diese Probleme zu beheben. Das hängt zum Großteil von Faktoren wie den folgenden ab:\n\n\n* Wie vertraut die Entwickler(innen) mit dem Projekt sind\n\n* Ihr Erfahrungsniveau beim Umgang mit ähnlichen Problemen\n\n* Ihr allgemeines Kenntnislevel in der Fehlerbehebung im Kontext der Pipeline.\n\n\nDie manuelle Analyse kann unglaublich herausfordernd und zeitaufwändig sein, da die Logs aus Anwendungsprotokollen und Systemmeldungen mit einer Vielzahl an Fehlerquellen bestehen. Die typische Behebung einer Pipeline besteht aus mehreren Iterationen und Kontextwechseln. Aufgrund der Komplexität und der unstrukturierten Natur der Protokolle ist dies ein idealer Bereich, in dem generative KI die Arbeit beschleunigen kann. Durch den Einsatz von KI können Fehler in einer Pipeline signifikant schneller erkannt und behoben werden. Außerdem ist weniger Expertise für die Behebung einer Pipeline wie im obigen Beispiel erforderlich.Sieh dir die Ursachenanalyse von GitLab Duo in Aktion an:\n\n\n\u003C!-- blank line -->\n\n\n\u003Cfigure class=\"video_container\">\n\n \u003Ciframe src=\"https://www.youtube.com/embed/sTpSLwX5DIs?si=J6-0Bf6PtYjrHX1K\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\n\u003C/figure>\n\n\n\u003C!-- blank line -->\n\n\n## Wie funktioniert die Ursachenanalyse?\n\n\nBei der [Ursachenanalyse](https://docs.gitlab.com/ee/user/ai_experiments.html#root-cause-analysis) wird ein Teil des CI/CD-Stacktraces an ein [GitLab-KI-Gateway](https://docs.gitlab.com/ee/architecture/blueprints/ai_gateway/) weitergeleitet. GitLab stellt sicher, dass der weitergeleitete Teil in die Limitierungen des umfangreichen Sprachmodells (LLM) passt und erstellt einen vorgefertigten Prompt, um herauszufinden, warum der Job fehlgeschlagen sein könnte. Der Prompt weist das LLM außerdem an, ein Beispiel aufzuzeigen, wie ein(e) Benutzer(in) den fehlerhaften Job beheben könnte. Nachfolgend sind zwei Beispielszenarien, in denen die Ursachenanalyse hilfreich sein kann.\n\n\n#### 1. Analyse eines Abhängigkeitsfehlers in Python\n\n\nEine Python-Anwendung kann zusätzliche Bibliotheken mit Funktionen importieren, die nicht in der Standardbibliothek enthalten sind. Das Projekt [Ursachenanalyse – Python-Konfiguration](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config) implementiert eine Anwendung, die die Konfiguration parst und eine SQLite-Datenbank initialisiert, wobei beide auch ohne zusätzlich installierte Abhängigkeiten funktionieren. Das Beispiel verwendet Best Practices in CI/CD mit einer Python-Umgebung sowie Cashing. Zuletzt wurde nun ein Redis-Caching-Client hinzugefügt, und jetzt schlägt der CI/CD-Build aus irgendeinem Grund fehl. \n\n\nDurch die Ursachenanalyse erfährst du sofort, dass `ModuleNotFoundError` bedeutet, dass das Modul tatsächlich nicht in der Python-Umgebung installiert ist. GitLab Duo schlägt außerdem einen Fix vor: Installiere das Redis-Modul über den PIP-Paketmanager.\n\n\n![Bild mit „modulenotfounderror“ und Lösungsvorschlag von GL Duo](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097332602.png)\n\n\nDie fehlerhafte Pipeline kann [hier](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/jobs/6992716398) eingesehen werden. \n\n\nDas Ergebnis der Ursachenanalyse gibt eine Zusammenfassung des Problems aus, das offensichtlich ein Fehler mit einem fehlenden `redis`-Modul ist. Versuchen wir nun, das Problem zu beheben, indem das `redis`-Modul installiert wird. Du kannst entweder `pip install redis` im Abschnitt `script` des CI/CD-Jobs aufrufen oder einen generellen Weg über die Datei `requirements.txt` wählen. Letztere ist nützlich für eine Single Source of Truth (einzige Quelle der Wahrheit) für Abhängigkeiten, die in der Entwicklungsumgebung und in CI/CD-Pipelines installiert wurden.\n\n\n```yaml\n\ntest:\n  extends: [.python-req]\n  stage: test \n  before_script:\n    # [🦊] hint: Root cause analysis. # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt \n\n  script:\n    - python src/main.py\n```\n\n\nNachdem du die fehlende Python-Abhängigkeit behoben hast, schlägt der CI/CD-Job erneut fehl. Führe erneut eine Ursachenanalyse durch, um zu erfahren, dass kein Redis-Service den Job ausführt. Wechsle zum GitLab Duo Chat und gib den Prompt `How to start a Redis service in CI/CD` ein, um zu erfahren, wie du das Attribut `services` im CI/CD-Job konfigurierst.\n\n\n![Zeigt die Aufforderung zum Starten eines Redis-Dienstes](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097333/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097332602.png)\n\n\nÄndere `.gitlab-ci.yml` mit dem Job `test` und gib unter service den Dienst `redis` an.\n\n\n```yaml\n\ntest:\n  extends: [.python-req]\n  stage: test \n  before_script:\n    # [🦊] hint: Root cause analysis.\n    # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt \n\n  script:\n    - python src/main.py\n\n  # Solution 3 - Running Redis\n  services:\n    - redis\n```\n\n\nWenn der Redis-Server ausgeführt wird, kannst du die Python-Anwendung erfolgreich ausführen und die Ausgabe im CI/CD-Log sehen.\n\n\n![Ausgabe der Python-Anwendung](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097332603.png)\n\n\nDie Lösung kann auch im Unterordner in [/solution](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/tree/main/solution?ref_type=heads) eingesehen werden.\n\n\n**Tipp:** Du kannst den [GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html) auch bitten, zukünftige Probleme zu verfolgen:\n\n\n```markdown\n\nHow to lint Python code? Which tools are recommended for CI/CD.\n\nHow to pin a package version in Python requirements file?\t\n\nWhat are possible ways that this exception stacktrace is triggered in the future?\n\nAre there ways to prevent the application from failing?\n\n```\n\n\nDas nächste Beispiel ist fortgeschrittener und umfasst mehrere Probleme.\n\n\n#### 2. Fehlende Go-Laufzeit analysieren\n\n\nCI/CD-Jobs können in Containern ausgeführt werden, die über das Attribut `image` konfiguriert werden. Wenn der Container keine Programmiersprachen-Laufzeit bereitstellt, schlagen die ausgeführten Kommandos in `script`, die auf die Binärdatei `go` referenzieren, fehl. Beispielsweise muss dann die Fehlermeldung `/bin/sh: eval: line 149: go: not found` verstanden und behoben werden. \n\n\nWenn der Befehl `go` nicht im Laufzeit Kontext des Containers gefunden wird, kann dies mehrere Gründe haben:\n\n\n1. Der Job verwendet ein minimales Container-Image, z. B. `alpine`, und die Go-Laufzeit wurde nicht installiert.\n\n2. Der Job verwendet das falsche Standard-Container-Image, z. B. das oben in der CI/CD-Konfiguration angegebene oder das Schlüsselwort `default`.\n\n3. Der Job verwendet kein Container-Image, sondern den Shell Executor. Auf dem Host-Betriebssystem ist die Go-Laufzeit nicht installiert oder ist anderweitig defekt/nicht konfiguriert.\n\n\nDas Projekt [Ursachenanalyse – Go GitLab Release Fetcher](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher) bietet ein Übungsprojekt zur Analyse und Behebung von CI/CD-Problemen mit einer in Go geschriebenen GitLab-Release-Fetcher-Anwendung. Die CI/CD-Jobs `build` und `docker-build` schlagen fehl. Für die Behebung des Problems sind verschiedene Voraussetzungen erforderlich: Du musst verstehen, warum die Go-Laufzeit nicht installiert ist, und etwas über die Syntax `Dockerfile` erfahren.\n\n\n![Screenshot zeigt den fehlgeschlagenen Job „Change Docker Label“](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097332603.png)\n\n\nDas [`solution/`-Verzeichnis](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher) bietet nach der Ursachenanalyse zwei mögliche Lösungen.\n\n\n## Probiere die Ursachenanalyse aus\n\n\nDie folgenden Szenarien kannst du verwenden, um die Ursachenanalyse auszuprobieren.\n\n\n* Wenn du auf Kubernetes-Bereitstellungsfehler oder Zeitüberschreitungen stößt. \n\n* Wenn OpenTofu- oder Terraform-IAC-Pipelines die Cloud-Ressourcen nicht bereitstellen können.\n\n* Wenn das Ansible-Playbook mit einem kryptischen Berechtigungsfehler in CI/CD fehlschlägt.\n\n* Wenn der Java Stacktracer 10 Seiten lang ist.\n\n* Mit einem Shell-Skript, das einen Ausführungsfehler provoziert.\n\n* Wenn ein Perl-Skript in einer Zeile fehlschlägt, die die einzige Zeile im Skript ist.\n\n* Wenn der CI/CD-Job eine Zeitüberschreitung aufweist und nicht klar ist, welcher Abschnitt diese verursacht.\n\n* Wenn eine Zeitüberschreitung der Netzwerkverbindung erreicht wird und du denkst, dass es kein DNS sein kann.\n\n\n### Wie geht es mit der Ursachenanalyse von GitLab Duo in Zukunft weiter?\n\n\nWir wollen unseren Nutzer(inne)n langfristig helfen, ihre Pipelines in weniger Iterationen und schneller zu reparieren. Die Ursachenanalyse wird dabei in GitLab Duo Chat, unserem KI Assistenten, geöffnet und zeigt die Antwort dort. Benutzer(innen) können die Empfehlung dann direkt verwenden oder weiter mit dem Chat agieren, indem sie spezifische, weiterführende Fragen stellen (z. B. spezifische Fixes für eine bestimmte Programmiersprache) oder indem sie je nach Ursache nach alternativen Lösungen fragen.\n\n\nZum Beispiel ist hier die Ursachenanalyse für einen fehlgeschlagenen Job:\n\n\n![Antwort auf die Grundursachenanalyse](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097332603.png)\n\n\nBenutzer(innen) können Folgefragen stellen, die auf der von der KI generierten Antwort basieren.\n\n\n* Ich möchte kein eigenes Docker Image erstellen. Bitte erkläre mir andere Möglichkeiten, das Problem zu beheben.\n\n* Ich habe keinen Zugriff auf die Docker-Image-Erstellung. Es sieht so aus, als würde die Go-Binärdatei fehlen. Gibt es alternative Images, die du vorschlagen kannst?\n\n\nGitLab führt außerdem Qualitäts-Vergleiche für die erstellten Antworten durch, um das Nutzererlebnis langfristig zu verbessern.\n\n\nWeitere Informationen findest du in unserem [Epic zur Ursachenanalyse](https://gitlab.com/groups/gitlab-org/-/epics/13080). Wir würden uns auch über dein Feedback zu dieser Funktionalität freuen. Bitte hinterlasst dafür einen Kommentar in unserem [Feedback-Ticket zur Ursachenanalyse](https://gitlab.com/groups/gitlab-org/-/epics/13872).\n\n\n## Erste Schritte mit der Ursachenanalyse\n\n\nIn unserer [Dokumentation](https://docs.gitlab.com/ee/user/ai_experiments.html#root-cause-analysis) findest du Informationen dazu, wie du die Funktion als GitLab-Ultimate-Kund(inn)en aktivieren kannst. Außerdem ist die Ursachenanalyse von GitLab Duo bald in GitLab Self-Managed und GitLab Dedicated verfügbar.\n\n\nBist du kein(e) GitLab-Ultimate-Kunde/Kundin? Starte jetzt [deine kostenlose Testversion](https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/blog&glm_content=default-saas-trial).\n","ai-ml",[25,26,27,28,29],"AI/ML","tutorial","DevSecOps","DevSecOps platform","features",{"slug":31,"featured":32,"template":33},"developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",true,"BlogPost","content:de-de:blog:developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.yml","yaml","Developing Gitlab Duo Blending Ai And Root Cause Analysis To Fix Ci Cd","content","de-de/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.yml","de-de/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","yml",{"_path":42,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":44,"_id":456,"_type":35,"title":457,"_source":37,"_file":458,"_stem":459,"_extension":40},"/shared/de-de/main-navigation","de-de",{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":397,"minimal":433,"duo":447},{"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,208,213,318,378],{"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":190},"Produkt",{"dataNavLevelOne":113},"solutions",{"text":115,"config":116},"Alle Lösungen anzeigen",{"href":117,"dataGaName":113,"dataGaLocation":49},"/de-de/solutions/",[119,145,168],{"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","/solutions/delivery-automation/","automated software delivery",[128,132,136,141],{"text":129,"config":130},"CI/CD",{"href":131,"dataGaLocation":49,"dataGaName":129},"/de-de/solutions/continuous-integration/",{"text":133,"config":134},"KI-unterstützte Entwicklung",{"href":83,"dataGaLocation":49,"dataGaName":135},"AI assisted development",{"text":137,"config":138},"Quellcodeverwaltung",{"href":139,"dataGaLocation":49,"dataGaName":140},"/de-de/solutions/source-code-management/","Source Code Management",{"text":142,"config":143},"Automatisierte Softwarebereitstellung",{"href":125,"dataGaLocation":49,"dataGaName":144},"Automated software delivery",{"title":146,"description":147,"link":148,"items":153},"Sicherheit","Entwickle schneller, ohne die Sicherheit zu gefährden",{"config":149},{"href":150,"dataGaName":151,"dataGaLocation":49,"icon":152},"/de-de/solutions/security-compliance/","security and compliance","ShieldCheckLight",[154,159,164],{"text":155,"config":156},"Application Security Testing",{"href":157,"dataGaName":158,"dataGaLocation":49},"/solutions/application-security-testing/","Application security testing",{"text":160,"config":161},"Schutz der Software-Lieferkette",{"href":162,"dataGaLocation":49,"dataGaName":163},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":165,"config":166},"Software Compliance",{"href":167,"dataGaName":165,"dataGaLocation":49},"/solutions/software-compliance/",{"title":169,"link":170,"items":175},"Bewertung",{"config":171},{"icon":172,"href":173,"dataGaName":174,"dataGaLocation":49},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[176,180,185],{"text":177,"config":178},"Sichtbarkeit und Bewertung",{"href":173,"dataGaLocation":49,"dataGaName":179},"Visibility and Measurement",{"text":181,"config":182},"Wertstrommanagement",{"href":183,"dataGaLocation":49,"dataGaName":184},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":186,"config":187},"Analysen und Einblicke",{"href":188,"dataGaLocation":49,"dataGaName":189},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":191,"items":192},"GitLab für",[193,198,203],{"text":194,"config":195},"Enterprise",{"href":196,"dataGaLocation":49,"dataGaName":197},"/de-de/enterprise/","enterprise",{"text":199,"config":200},"Kleinunternehmen",{"href":201,"dataGaLocation":49,"dataGaName":202},"/de-de/small-business/","small business",{"text":204,"config":205},"den öffentlichen Sektor",{"href":206,"dataGaLocation":49,"dataGaName":207},"/de-de/solutions/public-sector/","public sector",{"text":209,"config":210},"Preise",{"href":211,"dataGaName":212,"dataGaLocation":49,"dataNavLevelOne":212},"/de-de/pricing/","pricing",{"text":214,"config":215,"link":217,"lists":221,"feature":305},"Ressourcen",{"dataNavLevelOne":216},"resources",{"text":218,"config":219},"Alle Ressourcen anzeigen",{"href":220,"dataGaName":216,"dataGaLocation":49},"/de-de/resources/",[222,255,277],{"title":223,"items":224},"Erste Schritte",[225,230,235,240,245,250],{"text":226,"config":227},"Installieren",{"href":228,"dataGaName":229,"dataGaLocation":49},"/de-de/install/","install",{"text":231,"config":232},"Kurzanleitungen",{"href":233,"dataGaName":234,"dataGaLocation":49},"/de-de/get-started/","quick setup checklists",{"text":236,"config":237},"Lernen",{"href":238,"dataGaLocation":49,"dataGaName":239},"https://university.gitlab.com/","learn",{"text":241,"config":242},"Produktdokumentation",{"href":243,"dataGaName":244,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":246,"config":247},"Best-Practice-Videos",{"href":248,"dataGaName":249,"dataGaLocation":49},"/de-de/getting-started-videos/","best practice videos",{"text":251,"config":252},"Integrationen",{"href":253,"dataGaName":254,"dataGaLocation":49},"/de-de/integrations/","integrations",{"title":256,"items":257},"Entdecken",[258,263,267,272],{"text":259,"config":260},"Kundenerfolge",{"href":261,"dataGaName":262,"dataGaLocation":49},"/de-de/customers/","customer success stories",{"text":264,"config":265},"Blog",{"href":266,"dataGaName":5,"dataGaLocation":49},"/de-de/blog/",{"text":268,"config":269},"Remote",{"href":270,"dataGaName":271,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":273,"config":274},"TeamOps",{"href":275,"dataGaName":276,"dataGaLocation":49},"/de-de/teamops/","teamops",{"title":278,"items":279},"Vernetzen",[280,285,290,295,300],{"text":281,"config":282},"GitLab-Services",{"href":283,"dataGaName":284,"dataGaLocation":49},"/de-de/services/","services",{"text":286,"config":287},"Community",{"href":288,"dataGaName":289,"dataGaLocation":49},"/community/","community",{"text":291,"config":292},"Forum",{"href":293,"dataGaName":294,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":296,"config":297},"Veranstaltungen",{"href":298,"dataGaName":299,"dataGaLocation":49},"/events/","events",{"text":301,"config":302},"Partner",{"href":303,"dataGaName":304,"dataGaLocation":49},"/partners/","partners",{"backgroundColor":306,"textColor":307,"text":308,"image":309,"link":313},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":310,"config":311},"the source promo card",{"src":312},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":314,"config":315},"Lies die News",{"href":316,"dataGaName":317,"dataGaLocation":49},"/de-de/the-source/","the source",{"text":319,"config":320,"lists":322},"Unternehmen",{"dataNavLevelOne":321},"company",[323],{"items":324},[325,330,336,338,343,348,353,358,363,368,373],{"text":326,"config":327},"Über",{"href":328,"dataGaName":329,"dataGaLocation":49},"/de-de/company/","about",{"text":331,"config":332,"footerGa":335},"Karriere",{"href":333,"dataGaName":334,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":334},{"text":296,"config":337},{"href":298,"dataGaName":299,"dataGaLocation":49},{"text":339,"config":340},"Geschäftsführung",{"href":341,"dataGaName":342,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":344,"config":345},"Team",{"href":346,"dataGaName":347,"dataGaLocation":49},"/company/team/","team",{"text":349,"config":350},"Handbuch",{"href":351,"dataGaName":352,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":354,"config":355},"Investor Relations",{"href":356,"dataGaName":357,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":359,"config":360},"Trust Center",{"href":361,"dataGaName":362,"dataGaLocation":49},"/de-de/security/","trust center",{"text":364,"config":365},"AI Transparency Center",{"href":366,"dataGaName":367,"dataGaLocation":49},"/de-de/ai-transparency-center/","ai transparency center",{"text":369,"config":370},"Newsletter",{"href":371,"dataGaName":372,"dataGaLocation":49},"/company/contact/","newsletter",{"text":374,"config":375},"Presse",{"href":376,"dataGaName":377,"dataGaLocation":49},"/press/","press",{"text":379,"config":380,"lists":381},"Kontakt",{"dataNavLevelOne":321},[382],{"items":383},[384,387,392],{"text":56,"config":385},{"href":58,"dataGaName":386,"dataGaLocation":49},"talk to sales",{"text":388,"config":389},"Support",{"href":390,"dataGaName":391,"dataGaLocation":49},"/support/","get help",{"text":393,"config":394},"Kundenportal",{"href":395,"dataGaName":396,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":398,"login":399,"suggestions":406},"Schließen",{"text":400,"link":401},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":402,"config":403},"gitlab.com",{"href":63,"dataGaName":404,"dataGaLocation":405},"search login","search",{"text":407,"default":408},"Vorschläge",[409,412,417,419,424,429],{"text":78,"config":410},{"href":83,"dataGaName":411,"dataGaLocation":405},"GitLab Duo (AI)",{"text":413,"config":414},"Code Suggestions (KI)",{"href":415,"dataGaName":416,"dataGaLocation":405},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":129,"config":418},{"href":131,"dataGaName":129,"dataGaLocation":405},{"text":420,"config":421},"GitLab auf AWS",{"href":422,"dataGaName":423,"dataGaLocation":405},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":425,"config":426},"GitLab auf Google Cloud",{"href":427,"dataGaName":428,"dataGaLocation":405},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":430,"config":431},"Warum GitLab?",{"href":91,"dataGaName":432,"dataGaLocation":405},"Why GitLab?",{"freeTrial":434,"mobileIcon":439,"desktopIcon":444},{"text":435,"config":436},"Kostenlos testen",{"href":437,"dataGaName":54,"dataGaLocation":438},"https://gitlab.com/-/trials/new/","nav",{"altText":440,"config":441},"GitLab-Symbol",{"src":442,"dataGaName":443,"dataGaLocation":438},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":440,"config":445},{"src":446,"dataGaName":443,"dataGaLocation":438},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":448,"mobileIcon":452,"desktopIcon":454},{"text":449,"config":450},"Erfahre mehr über GitLab Duo",{"href":83,"dataGaName":451,"dataGaLocation":438},"gitlab duo",{"altText":440,"config":453},{"src":442,"dataGaName":443,"dataGaLocation":438},{"altText":440,"config":455},{"src":446,"dataGaName":443,"dataGaLocation":438},"content:shared:de-de:main-navigation.yml","Main Navigation","shared/de-de/main-navigation.yml","shared/de-de/main-navigation",{"_path":461,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"title":462,"button":463,"config":468,"_id":470,"_type":35,"_source":37,"_file":471,"_stem":472,"_extension":40},"/shared/de-de/banner","GitLab Duo Agent Platform ist jetzt in öffentlicher Beta!",{"text":464,"config":465},"Beta testen",{"href":466,"dataGaName":467,"dataGaLocation":49},"/de-de/gitlab-duo/agent-platform/","duo banner",{"layout":469},"release","content:shared:de-de:banner.yml","shared/de-de/banner.yml","shared/de-de/banner",{"_path":474,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"data":475,"_id":678,"_type":35,"title":679,"_source":37,"_file":680,"_stem":681,"_extension":40},"/shared/de-de/main-footer",{"text":476,"source":477,"edit":483,"contribute":488,"config":493,"items":498,"minimal":670},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":478,"config":479},"Quelltext der Seite anzeigen",{"href":480,"dataGaName":481,"dataGaLocation":482},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":484,"config":485},"Diese Seite bearbeiten",{"href":486,"dataGaName":487,"dataGaLocation":482},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":489,"config":490},"Beteilige dich",{"href":491,"dataGaName":492,"dataGaLocation":482},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":494,"facebook":495,"youtube":496,"linkedin":497},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[499,522,577,606,640],{"title":67,"links":500,"subMenu":505},[501],{"text":502,"config":503},"DevSecOps-Plattform",{"href":76,"dataGaName":504,"dataGaLocation":482},"devsecops platform",[506],{"title":209,"links":507},[508,512,517],{"text":509,"config":510},"Tarife anzeigen",{"href":211,"dataGaName":511,"dataGaLocation":482},"view plans",{"text":513,"config":514},"Vorteile von Premium",{"href":515,"dataGaName":516,"dataGaLocation":482},"/de-de/pricing/premium/","why premium",{"text":518,"config":519},"Vorteile von Ultimate",{"href":520,"dataGaName":521,"dataGaLocation":482},"/de-de/pricing/ultimate/","why ultimate",{"title":523,"links":524},"Lösungen",[525,530,533,535,540,545,549,552,555,560,562,564,567,572],{"text":526,"config":527},"Digitale Transformation",{"href":528,"dataGaName":529,"dataGaLocation":482},"/de-de/topics/digital-transformation/","digital transformation",{"text":531,"config":532},"Sicherheit und Compliance",{"href":157,"dataGaName":158,"dataGaLocation":482},{"text":142,"config":534},{"href":125,"dataGaName":126,"dataGaLocation":482},{"text":536,"config":537},"Agile Entwicklung",{"href":538,"dataGaName":539,"dataGaLocation":482},"/de-de/solutions/agile-delivery/","agile delivery",{"text":541,"config":542},"Cloud-Transformation",{"href":543,"dataGaName":544,"dataGaLocation":482},"/de-de/topics/cloud-native/","cloud transformation",{"text":546,"config":547},"SCM",{"href":139,"dataGaName":548,"dataGaLocation":482},"source code management",{"text":129,"config":550},{"href":131,"dataGaName":551,"dataGaLocation":482},"continuous integration & delivery",{"text":181,"config":553},{"href":183,"dataGaName":554,"dataGaLocation":482},"value stream management",{"text":556,"config":557},"GitOps",{"href":558,"dataGaName":559,"dataGaLocation":482},"/de-de/solutions/gitops/","gitops",{"text":194,"config":561},{"href":196,"dataGaName":197,"dataGaLocation":482},{"text":199,"config":563},{"href":201,"dataGaName":202,"dataGaLocation":482},{"text":565,"config":566},"Öffentlicher Sektor",{"href":206,"dataGaName":207,"dataGaLocation":482},{"text":568,"config":569},"Bildungswesen",{"href":570,"dataGaName":571,"dataGaLocation":482},"/de-de/solutions/education/","education",{"text":573,"config":574},"Finanzdienstleistungen",{"href":575,"dataGaName":576,"dataGaLocation":482},"/de-de/solutions/finance/","financial services",{"title":214,"links":578},[579,581,583,585,588,590,592,594,596,598,600,602,604],{"text":226,"config":580},{"href":228,"dataGaName":229,"dataGaLocation":482},{"text":231,"config":582},{"href":233,"dataGaName":234,"dataGaLocation":482},{"text":236,"config":584},{"href":238,"dataGaName":239,"dataGaLocation":482},{"text":241,"config":586},{"href":243,"dataGaName":587,"dataGaLocation":482},"docs",{"text":264,"config":589},{"href":266,"dataGaName":5,"dataGaLocation":482},{"text":259,"config":591},{"href":261,"dataGaName":262,"dataGaLocation":482},{"text":268,"config":593},{"href":270,"dataGaName":271,"dataGaLocation":482},{"text":281,"config":595},{"href":283,"dataGaName":284,"dataGaLocation":482},{"text":273,"config":597},{"href":275,"dataGaName":276,"dataGaLocation":482},{"text":286,"config":599},{"href":288,"dataGaName":289,"dataGaLocation":482},{"text":291,"config":601},{"href":293,"dataGaName":294,"dataGaLocation":482},{"text":296,"config":603},{"href":298,"dataGaName":299,"dataGaLocation":482},{"text":301,"config":605},{"href":303,"dataGaName":304,"dataGaLocation":482},{"title":319,"links":607},[608,610,612,614,616,618,620,624,629,631,633,635],{"text":326,"config":609},{"href":328,"dataGaName":321,"dataGaLocation":482},{"text":331,"config":611},{"href":333,"dataGaName":334,"dataGaLocation":482},{"text":339,"config":613},{"href":341,"dataGaName":342,"dataGaLocation":482},{"text":344,"config":615},{"href":346,"dataGaName":347,"dataGaLocation":482},{"text":349,"config":617},{"href":351,"dataGaName":352,"dataGaLocation":482},{"text":354,"config":619},{"href":356,"dataGaName":357,"dataGaLocation":482},{"text":621,"config":622},"Sustainability",{"href":623,"dataGaName":621,"dataGaLocation":482},"/sustainability/",{"text":625,"config":626},"Vielfalt, Inklusion und Zugehörigkeit",{"href":627,"dataGaName":628,"dataGaLocation":482},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":359,"config":630},{"href":361,"dataGaName":362,"dataGaLocation":482},{"text":369,"config":632},{"href":371,"dataGaName":372,"dataGaLocation":482},{"text":374,"config":634},{"href":376,"dataGaName":377,"dataGaLocation":482},{"text":636,"config":637},"Transparenzerklärung zu moderner Sklaverei",{"href":638,"dataGaName":639,"dataGaLocation":482},"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":482},{"text":388,"config":647},{"href":390,"dataGaName":391,"dataGaLocation":482},{"text":393,"config":649},{"href":395,"dataGaName":396,"dataGaLocation":482},{"text":651,"config":652},"Status",{"href":653,"dataGaName":654,"dataGaLocation":482},"https://status.gitlab.com/","status",{"text":656,"config":657},"Nutzungsbedingungen",{"href":658,"dataGaName":659,"dataGaLocation":482},"/terms/","terms of use",{"text":661,"config":662},"Datenschutzerklärung",{"href":663,"dataGaName":664,"dataGaLocation":482},"/de-de/privacy/","privacy statement",{"text":666,"config":667},"Cookie-Einstellungen",{"dataGaName":668,"dataGaLocation":482,"id":669,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":671},[672,674,676],{"text":656,"config":673},{"href":658,"dataGaName":659,"dataGaLocation":482},{"text":661,"config":675},{"href":663,"dataGaName":664,"dataGaLocation":482},{"text":666,"config":677},{"dataGaName":668,"dataGaLocation":482,"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,695],{"_path":684,"_dir":685,"_draft":6,"_partial":6,"_locale":7,"content":686,"config":690,"_id":692,"_type":35,"title":19,"_source":37,"_file":693,"_stem":694,"_extension":40},"/en-us/blog/authors/rutvik-shah","authors",{"name":19,"config":687},{"headshot":688,"ctfId":689},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661843/Blog/Author%20Headshots/rutvik_shah_headshot.png","6co92rUBTbWcyV3EW23iEx",{"template":691},"BlogAuthor","content:en-us:blog:authors:rutvik-shah.yml","en-us/blog/authors/rutvik-shah.yml","en-us/blog/authors/rutvik-shah",{"_path":696,"_dir":685,"_draft":6,"_partial":6,"_locale":7,"content":697,"config":701,"_id":702,"_type":35,"title":20,"_source":37,"_file":703,"_stem":704,"_extension":40},"/en-us/blog/authors/michael-friedrich",{"name":20,"config":698},{"headshot":699,"ctfId":700},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{"template":691},"content:en-us:blog:authors:michael-friedrich.yml","en-us/blog/authors/michael-friedrich.yml","en-us/blog/authors/michael-friedrich",{"_path":706,"_dir":43,"_draft":6,"_partial":6,"_locale":7,"header":707,"eyebrow":708,"blurb":709,"button":710,"secondaryButton":714,"_id":716,"_type":35,"title":717,"_source":37,"_file":718,"_stem":719,"_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":711},{"href":712,"dataGaName":54,"dataGaLocation":713},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":56,"config":715},{"href":58,"dataGaName":59,"dataGaLocation":713},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1758662288705]