[{"data":1,"prerenderedAt":2176},["ShallowReactive",2],{"/de-de/blog/what-is-gitlab-ci-cd":3,"navigation-de-de":1394,"banner-de-de":1816,"footer-de-de":1825,"blog-post-authors-de-de-Charlotte Delbosc|Maud Leuenberger":2060,"blog-related-posts-de-de-what-is-gitlab-ci-cd":2087,"blog-promotions-de-de":2112,"next-steps-de-de":2166},{"id":4,"title":5,"authors":6,"body":9,"category":1375,"date":1376,"description":1377,"extension":1378,"externalUrl":1379,"featured":1380,"heroImage":1381,"meta":1382,"navigation":424,"path":1383,"seo":1384,"slug":1388,"stem":1389,"tags":1390,"template":1392,"updatedDate":1379,"__hash__":1393},"blogPosts/de-de/blog/what-is-gitlab-ci-cd.md","Entwicklungszyklen mittels GitLab CI/CD automatisieren",[7,8],"Charlotte Delbosc","Maud Leuenberger",{"type":10,"value":11,"toc":1337},"minimark",[12,16,29,32,44,49,60,76,79,89,96,99,103,106,113,120,126,173,177,184,189,204,216,220,223,236,247,250,253,257,271,274,283,308,311,314,323,327,334,337,358,361,367,713,716,750,764,789,793,797,811,820,824,842,845,849,865,877,882,886,899,903,906,909,913,924,927,931,937,946,950,960,964,970,974,977,983,986,990,993,1003,1007,1018,1022,1036,1066,1074,1078,1104,1115,1118,1122,1137,1151,1158,1162,1171,1185,1189,1193,1196,1203,1207,1210,1236,1242,1246,1253,1259,1263,1266,1272,1275,1278,1281,1292,1333],[13,14,15],"p",{},"Top-Teams bringen ihren Code mehrmals täglich in Produktion – der Weg dauert weniger als eine Stunde, während weniger reife Teams dafür mehrere Tage oder Wochen benötigen. Diese Leistung beruht auf wenigen grundlegenden Prinzipien: Fehler so früh wie möglich im Entwicklungsprozess erkennen, kontinuierlich testen und die Anhäufung von Änderungen vermeiden, die sich nur schwer stabilisieren lassen.",[13,17,18,19,28],{},"Genau hier setzt ",[20,21,22],"strong",{},[23,24,27],"a",{"href":25,"rel":26},"https://docs.gitlab.com/ci/",[],"GitLab CI/CD"," an: Durch die Automatisierung von Builds, Tests und Deployments in einer einheitlichen Umgebung können Teams schneller liefern – mit weniger Risiken und besserer Sichtbarkeit auf jede Phase des Software-Entwicklungszyklus.",[13,30,31],{},"Dieser Artikel erläutert, wie GitLab CI/CD funktioniert und wie sich damit schnellere, zuverlässigere und besser strukturierte Lieferzyklen realisieren lassen.",[33,34,35],"blockquote",{},[13,36,37],{},[20,38,39],{},[23,40,43],{"href":41,"rel":42},"https://about.gitlab.com/de-de/free-trial/devsecops/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_de_blog_de",[],"→ Jetzt GitLab Ultimate kostenlos testen.",[45,46,48],"h2",{"id":47},"was-ist-gitlab-cicd","Was ist GitLab CI/CD?",[13,50,51,59],{},[20,52,53],{},[23,54,58],{"href":55,"rel":56,"title":57},"https://about.gitlab.com/de-de/topics/ci-cd/",[],"Was ist CI/CD?","CI/CD"," umfasst zwei sich ergänzende Praktiken:",[61,62,63,70],"ul",{},[64,65,66,69],"li",{},[20,67,68],{},"CI steht für „Continuous Integration\" (kontinuierliche Integration)",": Code-Änderungen werden regelmäßig integriert, um Fehler so früh wie möglich im Software-Entwicklungszyklus zu erkennen.",[64,71,72,75],{},[20,73,74],{},"CD steht für „Continuous Delivery bzw. Deployment\" (kontinuierliche Lieferung bzw. kontinuierliches Deployment)",": Jede Änderung wird automatisch so vorbereitet, dass sie jederzeit in Produktion gebracht werden kann. Continuous Deployment geht noch einen Schritt weiter: Die Bereitstellung in Produktion erfolgt vollautomatisch, ohne manuellen Eingriff.",[13,77,78],{},"Zusammen verhindern diese Praktiken die Anhäufung schwer stabilisierbarer Änderungen und verkürzen den Zeitraum zwischen einem Commit und dessen Deployment.",[13,80,81,84,85,88],{},[20,82,83],{},"GitLab integriert CI/CD nativ in seine Plattform, auf der bereits Code, Merge Requests, Sicherheit sowie Deployments zusammenlaufen."," Pipelines laufen ohne Plugins oder externe Tools – das vereinfacht die Konfiguration und bietet eine zentrale Übersicht über den gesamten Entwicklungsworkflow. Auf GitLab.com stehen ",[20,86,87],{},"gemeinsam genutzte Runner für Linux, Windows und macOS"," ohne initiale Konfiguration bereit, was den Einstieg erleichtert.",[13,90,91,92,95],{},"Konkret ",[20,93,94],{},"löst jede Änderung eine Pipeline aus, die Software baut, Tests ausführt, die Sicherheit analysiert und eine produktionsreife Version vorbereitet."," Teams erhalten sofortiges Feedback, das es ermöglicht, Fehler früh zu erkennen und iterativ zu arbeiten.",[13,97,98],{},"Diese Zentralisierung erleichtert die Zusammenarbeit und hält den Zustand der Software auf jeder Stufe des Entwicklungszyklus sichtbar und nachvollziehbar.",[45,100,102],{"id":101},"wie-gitlab-cicd-zu-einer-referenz-in-der-softwareentwicklung-wurde","Wie GitLab CI/CD zu einer Referenz in der Softwareentwicklung wurde",[13,104,105],{},"In vielen Organisationen stößt die Einführung von CI/CD auf ein wiederkehrendes Hindernis: Tool-Fragmentierung. Eine Entwicklungskette, die auf zu vielen und zu unterschiedlichen Lösungen basiert, wird schnell langsam, schwer wartbar und fehleranfällig bei der Konfiguration.",[13,107,108,109,112],{},"GitLab begegnet dieser Fragmentierung mit einer konkreten Antwort: einer Plattform, die ",[20,110,111],{},"Code, Pipelines, Sicherheit und Deployment in einer einzigen Umgebung vereint."," Das Verwalten mehrerer Tools entfällt, was Komplexität reduziert und den gesamten Softwareentwicklungs-Workflow vereinfacht.",[13,114,115,116,119],{},"So ",[20,117,118],{},"befinden sich Logs, Artefakte, Testergebnisse sowie Deployment-Status im selben Bereich wie der Code"," – ein erheblicher Sichtbarkeitsgewinn für die Teams. Pipelines werden direkt aus Merge Requests heraus ausgelöst, um schneller Feedback zu erhalten und späte Regressionen zu begrenzen.",[13,121,122,123],{},"Diese Konsistenz – verbunden mit der Möglichkeit, von Beginn an Sicherheitsanalyse oder Abhängigkeitsverwaltung zu integrieren – erklärt, warum ",[20,124,125],{},"GitLab CI/CD heute von Organisationen, die ihre Software-Lieferzyklen optimieren möchten, weitverbreitet eingesetzt wird.",[33,127,128,133,136,139,142,159,166],{},[13,129,130],{},[20,131,132],{},"Radio France: mit GitLab CI/CD fünfmal schneller in Produktion",[13,134,135],{},"Radio France, der französische nationale Rundfunkkonzern, betreibt sieben Sender im ganzen Land. Radio France entwirft, entwickelt und betreibt Websites, mobile Apps, APIs, Podcasts, Sprachassistenten sowie Audio-Streaming-Plattformen.",[13,137,138],{},"Vor der Einführung von GitLab CI/CD nutzte das Team GitLab für den Quellcode und Jenkins für alle Produktions-Builds – was einen ständigen Wechsel zwischen beiden Tools erforderte.",[13,140,141],{},"Nach der Migration aller Pipelines zu GitLab CI/CD waren die Ergebnisse unmittelbar spürbar:",[61,143,144,149,154],{},[64,145,146],{},[20,147,148],{},"5× schnellere Deployments",[64,150,151],{},[20,152,153],{},"82 % kürzere Zykluszeit",[64,155,156],{},[20,157,158],{},"70 % jährliche Einsparungen bei CI/CD-Kosten",[13,160,161,165],{},[162,163,164],"em",{},"„Vor der Migration haben wir 10 Deployments pro Tag durchgeführt. Jetzt sind es mit GitLab 50 Deployments täglich in Produktion. Wir müssen nicht mehr zwischen GitLab und Jenkins wechseln.\""," – Julien Vey, Operational Excellence Manager, Radio France",[13,167,168],{},[23,169,172],{"href":170,"rel":171},"https://about.gitlab.com/customers/radiofrance/",[],"Vollständige Case Study lesen >",[45,174,176],{"id":175},"wie-funktioniert-eine-gitlab-cicd-pipeline","Wie funktioniert eine GitLab-CI/CD-Pipeline?",[13,178,179,180,183],{},"In GitLab ist ",[20,181,182],{},"eine Pipeline eine Abfolge von Schritten, die bei jeder Code-Änderung automatisch ausgeführt werden."," Sie wird durch einen Commit, eine Merge Request oder ein geplantes Ereignis ausgelöst. Ihre Aufgabe: die Änderung validieren und die notwendigen Artefakte erzeugen. Ist alles in Ordnung, bereitet sie das Deployment vor oder löst es direkt aus.",[185,186,188],"h3",{"id":187},"stages-und-jobs","Stages und Jobs",[13,190,191,192,195,196,199,200,203],{},"Eine GitLab-Pipeline besteht aus ",[20,193,194],{},"Stages"," (Build, Test, Deployment …), von denen jede einen oder mehrere ",[20,197,198],{},"Jobs"," umfasst. Jobs definieren die auszuführenden Aktionen, etwa Code kompilieren oder eine Test-Suite starten. ",[20,201,202],{},"GitLab führt Jobs innerhalb derselben Stage parallel aus (abhängig von der Verfügbarkeit der Runner), verwaltet Abhängigkeiten und wechselt automatisch zur nächsten Stage, sobald alle Jobs der vorherigen abgeschlossen sind."," Die Logs jedes Jobs ermöglichen eine detaillierte Nachverfolgung der Ausführung.",[13,205,206,207,211,212,215],{},"Standardmäßig wartet GitLab, bis alle Jobs einer Stage abgeschlossen sind, bevor es zur nächsten wechselt. Für Pipelines, bei denen diese strikte Reihenfolge nicht notwendig ist, erlaubt das Schlüsselwort ",[208,209,210],"code",{},"needs:"," die Definition direkter Abhängigkeiten zwischen Jobs – unabhängig von ihrer Stage. Ein Job kann damit starten, sobald ein bestimmter anderer Job abgeschlossen ist, ohne das Ende der gesamten Stage abzuwarten. Dieser Ansatz, als ",[20,213,214],{},"DAG (Directed Acyclic Graph)"," bezeichnet, kann die Gesamtdauer einer Pipeline erheblich reduzieren, indem er die parallele Ausführung maximiert. In der Benutzeroberfläche erscheinen diese Pipelines als Abhängigkeitsgraph, was die tatsächliche Ausführungsreihenfolge leichter nachvollziehbar macht.",[185,217,219],{"id":218},"artefakte-und-cache-übertragung-und-wiederverwendung","Artefakte und Cache: Übertragung und Wiederverwendung",[13,221,222],{},"Artefakte und Cache sind zwei Mechanismen zur Persistenz von Dateien zwischen Jobs – und werden häufig verwechselt.",[13,224,225,228,229,232,233],{},[20,226,227],{},"Artefakte"," sind die ",[20,230,231],{},"von einem Job erzeugten Dateien",", etwa eine Binärdatei, ein Testbericht oder ein Paket. Sie können an nachfolgende Jobs weitergegeben bzw. für eine definierte Dauer aufbewahrt werden. Dieses integrierte Management vermeidet manuelle Übertragungen und fördert die ",[20,234,235],{},"Reproduzierbarkeit von Pipelines.",[13,237,238,239,242,243,246],{},"Der ",[20,240,241],{},"Cache"," hingegen ",[20,244,245],{},"ermöglicht die Wiederverwendung von Dateien zwischen mehreren Ausführungen derselben Pipeline"," – typischerweise Abhängigkeiten (node_modules, Maven-Packages, Ruby-Gems …).",[13,248,249],{},"Während Artefakte Dateien innerhalb einer Pipeline von einem Job zum nächsten übertragen, verhindert der Cache das erneute Herunterladen derselben Ressourcen bei jeder neuen Ausführung. Dies ist häufig eine der ersten Optimierungen, um die Pipeline-Dauer deutlich zu reduzieren.",[13,251,252],{},"Kurz zusammengefasst: Artefakte sind für den nachfolgenden Job zwingend erforderlich, der Cache ist optional und dient ausschließlich der Beschleunigung.",[185,254,256],{"id":255},"wo-jobs-tatsächlich-ausgeführt-werden-runner","Wo Jobs tatsächlich ausgeführt werden: Runner",[13,258,259,260,263,264,270],{},"Runner sind die ",[20,261,262],{},"Maschinen, auf denen Jobs tatsächlich ausgeführt werden."," GitLab bietet auf GitLab.com gehostete Runner (Linux, Windows, macOS) bzw. ermöglicht die Installation eigener Runner auf internen Servern oder Cloud-Umgebungen, unter anderem auf Basis von ",[23,265,269],{"href":266,"rel":267,"title":268},"https://about.gitlab.com/de-de/blog/what-is-containerization/",[],"Was ist Containerisierung?","Containerisierung",".",[13,272,273],{},"Bei der Installation eines eigenen Runners muss auch ein Executor gewählt werden – der Mechanismus, über den der Runner Jobs ausführt.",[13,275,276,277,282],{},"Die gebräuchlichsten ",[23,278,281],{"href":279,"rel":280},"https://docs.gitlab.com/runner/executors/",[],"Executors"," sind:",[61,284,285,291,297],{},[64,286,287,290],{},[20,288,289],{},"Docker",": Jeder Job wird in einem isolierten Container ausgeführt. Schnell, flexibel und für die meisten Projekte empfohlen.",[64,292,293,296],{},[20,294,295],{},"Shell",": Jobs werden direkt auf dem Host-System ausgeführt. Einfach, aber ohne Isolation.",[64,298,299,307],{},[20,300,301],{},[23,302,306],{"href":303,"rel":304,"title":305},"https://about.gitlab.com/de-de/blog/kubernetes-the-container-orchestration-solution/",[],"Was ist Kubernetes?","Kubernetes",": Jobs werden in Kubernetes-Pods ausgeführt, mit nativer Skalierbarkeit.",[13,309,310],{},"Die Wahl des Executors bestimmt direkt Isolation, Reproduzierbarkeit und Performance der Jobs. Sie ist vom Runner selbst unabhängig und wird bei der Installation konfiguriert.",[13,312,313],{},"Die einem Runner zugeordneten Tags ermöglichen es, eine spezifische Umgebung anzusprechen und die Ausführung an die Anforderungen der Pipeline anzupassen.",[13,315,316,317,270],{},"Mehr zu GitLab-Runnern findet sich im Blogartikel ",[23,318,322],{"href":319,"rel":320,"title":321},"https://about.gitlab.com/de-de/blog/what-is-gitlab-runner/",[],"Was ist ein GitLab Runner?","„GitLab Runner: Installation, Konfiguration und Best Practices für CI/CD-Pipelines\"",[185,324,326],{"id":325},"konfiguration-einer-gitlab-cicd-pipeline","Konfiguration einer GitLab-CI/CD-Pipeline",[13,328,329,330,333],{},"Jede GitLab-Pipeline nimmt in einer ",[20,331,332],{},".gitlab-ci.yml","-Datei im Stammverzeichnis des Projekts Gestalt an. Diese Datei definiert Stages, Jobs, auszuführende Scripts, Variablen, Abhängigkeiten sowie zu bewahrende Artefakte. GitLab liest diese Datei bei jeder Code-Änderung und löst eine Pipeline entsprechend ihrer Konfiguration aus.",[13,335,336],{},"Es empfiehlt sich, zwei Pipeline-Typen je nach Auslösekontext zu unterscheiden:",[61,338,339,346],{},[64,340,341,342,345],{},"Die ",[20,343,344],{},"Branch-Pipeline"," wird bei einem direkten Push auf einen Branch ausgeführt.",[64,347,341,348,351,352,357],{},[20,349,350],{},"Merge-Request-Pipeline"," wird ausgelöst, sobald eine Merge Request geöffnet oder aktualisiert wird. Sie kann entweder auf dem Inhalt des Quell-Branches oder auf dem simulierten Merge-Ergebnis mit dem Ziel-Branch laufen (dank der ",[23,353,356],{"href":354,"rel":355},"https://docs.gitlab.com/ci/pipelines/merged_results_pipelines/",[],"Merge-Ergebnis-Pipelines",") – noch bevor der eigentliche Merge stattfindet.",[13,359,360],{},"Diese Unterscheidung ist in der Praxis wichtig: Sie ermöglicht es, bestimmte kostspielige oder sicherheitskritische Jobs (etwa tiefgehende Security-Scans oder Deployments) einem präzisen Kontext vorzubehalten und so früh wie möglich Feedback zur Qualität des zusammengeführten Codes zu erhalten. Dies ist einer der konkreten Hebel, um Regressionen zu erkennen, bevor sie den Haupt-Branch erreichen.",[13,362,363,364,366],{},"Hier ein Beispiel einer ",[208,365,332],{},"-Datei, das die Struktur einer GitLab-Pipeline veranschaulicht:",[368,369,374],"pre",{"className":370,"code":371,"language":372,"meta":373,"style":373},"language-yaml shiki shiki-themes github-light","stages:          # Definiert die Ausführungsreihenfolge der Pipeline-Stages\n  - build\n  - test\n  - deploy\n\nvariables:       # Variablen, die allen Jobs der Pipeline zugänglich sind\n  APP_ENV: \"production\"\n\nbuild-job:\n  stage: build\n  image: node:20                    # Docker-Image zur Ausführung dieses Jobs\n  cache:\n    key: $CI_COMMIT_REF_SLUG        # Branch-spezifischer Cache\n    paths:\n      - node_modules/               # Abhängigkeitsordner im Cache\n  script:\n    - echo \"Code kompilieren...\"\n  artifacts:\n    paths:\n      - dist/                       # Generierte Dateien für nachfolgende Jobs\n    expire_in: 1 hour               # Aufbewahrungsdauer des Artefakts\n\ntest-job:\n  stage: test\n  image: node:20\n  needs: [\"build-job\"]             # Startet, sobald build-job abgeschlossen ist (DAG)\n  script:\n    - echo \"Tests ausführen...\"\n\ndeploy-job:\n  stage: deploy\n  script:\n    - echo \"In Produktion deployen...\"\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\"  # Wird nur auf dem Haupt-Branch ausgeführt\n","yaml","",[208,375,376,393,403,411,419,426,438,450,455,464,474,488,496,510,518,530,538,547,555,562,573,587,592,600,609,619,637,644,652,657,665,674,681,689,697],{"__ignoreMap":373},[377,378,381,385,389],"span",{"class":379,"line":380},"line",1,[377,382,384],{"class":383},"shJU0","stages",[377,386,388],{"class":387},"sgsFI",":          ",[377,390,392],{"class":391},"sAwPA","# Definiert die Ausführungsreihenfolge der Pipeline-Stages\n",[377,394,396,399],{"class":379,"line":395},2,[377,397,398],{"class":387},"  - ",[377,400,402],{"class":401},"sYBdl","build\n",[377,404,406,408],{"class":379,"line":405},3,[377,407,398],{"class":387},[377,409,410],{"class":401},"test\n",[377,412,414,416],{"class":379,"line":413},4,[377,415,398],{"class":387},[377,417,418],{"class":401},"deploy\n",[377,420,422],{"class":379,"line":421},5,[377,423,425],{"emptyLinePlaceholder":424},true,"\n",[377,427,429,432,435],{"class":379,"line":428},6,[377,430,431],{"class":383},"variables",[377,433,434],{"class":387},":       ",[377,436,437],{"class":391},"# Variablen, die allen Jobs der Pipeline zugänglich sind\n",[377,439,441,444,447],{"class":379,"line":440},7,[377,442,443],{"class":383},"  APP_ENV",[377,445,446],{"class":387},": ",[377,448,449],{"class":401},"\"production\"\n",[377,451,453],{"class":379,"line":452},8,[377,454,425],{"emptyLinePlaceholder":424},[377,456,458,461],{"class":379,"line":457},9,[377,459,460],{"class":383},"build-job",[377,462,463],{"class":387},":\n",[377,465,467,470,472],{"class":379,"line":466},10,[377,468,469],{"class":383},"  stage",[377,471,446],{"class":387},[377,473,402],{"class":401},[377,475,477,480,482,485],{"class":379,"line":476},11,[377,478,479],{"class":383},"  image",[377,481,446],{"class":387},[377,483,484],{"class":401},"node:20",[377,486,487],{"class":391},"                    # Docker-Image zur Ausführung dieses Jobs\n",[377,489,491,494],{"class":379,"line":490},12,[377,492,493],{"class":383},"  cache",[377,495,463],{"class":387},[377,497,499,502,504,507],{"class":379,"line":498},13,[377,500,501],{"class":383},"    key",[377,503,446],{"class":387},[377,505,506],{"class":401},"$CI_COMMIT_REF_SLUG",[377,508,509],{"class":391},"        # Branch-spezifischer Cache\n",[377,511,513,516],{"class":379,"line":512},14,[377,514,515],{"class":383},"    paths",[377,517,463],{"class":387},[377,519,521,524,527],{"class":379,"line":520},15,[377,522,523],{"class":387},"      - ",[377,525,526],{"class":401},"node_modules/",[377,528,529],{"class":391},"               # Abhängigkeitsordner im Cache\n",[377,531,533,536],{"class":379,"line":532},16,[377,534,535],{"class":383},"  script",[377,537,463],{"class":387},[377,539,541,544],{"class":379,"line":540},17,[377,542,543],{"class":387},"    - ",[377,545,546],{"class":401},"echo \"Code kompilieren...\"\n",[377,548,550,553],{"class":379,"line":549},18,[377,551,552],{"class":383},"  artifacts",[377,554,463],{"class":387},[377,556,558,560],{"class":379,"line":557},19,[377,559,515],{"class":383},[377,561,463],{"class":387},[377,563,565,567,570],{"class":379,"line":564},20,[377,566,523],{"class":387},[377,568,569],{"class":401},"dist/",[377,571,572],{"class":391},"                       # Generierte Dateien für nachfolgende Jobs\n",[377,574,576,579,581,584],{"class":379,"line":575},21,[377,577,578],{"class":383},"    expire_in",[377,580,446],{"class":387},[377,582,583],{"class":401},"1 hour",[377,585,586],{"class":391},"               # Aufbewahrungsdauer des Artefakts\n",[377,588,590],{"class":379,"line":589},22,[377,591,425],{"emptyLinePlaceholder":424},[377,593,595,598],{"class":379,"line":594},23,[377,596,597],{"class":383},"test-job",[377,599,463],{"class":387},[377,601,603,605,607],{"class":379,"line":602},24,[377,604,469],{"class":383},[377,606,446],{"class":387},[377,608,410],{"class":401},[377,610,612,614,616],{"class":379,"line":611},25,[377,613,479],{"class":383},[377,615,446],{"class":387},[377,617,618],{"class":401},"node:20\n",[377,620,622,625,628,631,634],{"class":379,"line":621},26,[377,623,624],{"class":383},"  needs",[377,626,627],{"class":387},": [",[377,629,630],{"class":401},"\"build-job\"",[377,632,633],{"class":387},"]             ",[377,635,636],{"class":391},"# Startet, sobald build-job abgeschlossen ist (DAG)\n",[377,638,640,642],{"class":379,"line":639},27,[377,641,535],{"class":383},[377,643,463],{"class":387},[377,645,647,649],{"class":379,"line":646},28,[377,648,543],{"class":387},[377,650,651],{"class":401},"echo \"Tests ausführen...\"\n",[377,653,655],{"class":379,"line":654},29,[377,656,425],{"emptyLinePlaceholder":424},[377,658,660,663],{"class":379,"line":659},30,[377,661,662],{"class":383},"deploy-job",[377,664,463],{"class":387},[377,666,668,670,672],{"class":379,"line":667},31,[377,669,469],{"class":383},[377,671,446],{"class":387},[377,673,418],{"class":401},[377,675,677,679],{"class":379,"line":676},32,[377,678,535],{"class":383},[377,680,463],{"class":387},[377,682,684,686],{"class":379,"line":683},33,[377,685,543],{"class":387},[377,687,688],{"class":401},"echo \"In Produktion deployen...\"\n",[377,690,692,695],{"class":379,"line":691},34,[377,693,694],{"class":383},"  rules",[377,696,463],{"class":387},[377,698,700,702,705,707,710],{"class":379,"line":699},35,[377,701,543],{"class":387},[377,703,704],{"class":383},"if",[377,706,446],{"class":387},[377,708,709],{"class":401},"$CI_COMMIT_BRANCH == \"main\"",[377,711,712],{"class":391},"  # Wird nur auf dem Haupt-Branch ausgeführt\n",[13,714,715],{},"Dieses Pipeline-Beispiel veranschaulicht mehrere Schlüsselmechanismen von GitLab CI/CD:",[61,717,718,725,733,741],{},[64,719,720,721,724],{},"Die Variable ",[208,722,723],{},"APP_ENV"," ist für alle Jobs zugänglich.",[64,726,238,727,729,730,732],{},[208,728,460],{}," verwendet ein Docker-Image mit Node.js 20, legt Abhängigkeiten im Cache ab, um nachfolgende Ausführungen zu beschleunigen, und erzeugt ein Artefakt – den Ordner ",[208,731,569],{}," –, das automatisch an nachfolgende Jobs weitergegeben wird.",[64,734,238,735,737,738,740],{},[208,736,597],{}," startet dank des Schlüsselworts ",[208,739,210],{}," direkt nach Abschluss des Builds, ohne das Ende der gesamten Stage abzuwarten.",[64,742,238,743,745,746,749],{},[208,744,662],{}," wird über eine ",[208,747,748],{},"rules:","-Bedingung ausschließlich auf dem Haupt-Branch ausgeführt.",[13,751,752,753,760,761,763],{},"Für Teams, die mit CI/CD beginnen, bietet GitLab auch ",[20,754,755],{},[23,756,759],{"href":757,"rel":758},"https://docs.gitlab.com/topics/autodevops/",[],"Auto DevOps",": Die Funktion erkennt automatisch die Projektsprache und konfiguriert eine einsatzbereite Pipeline – ohne ",[208,762,332],{},"-Datei. Auto DevOps deckt Build, Test, Sicherheitsanalyse und Deployment ab und lässt sich schrittweise nach Bedarf anpassen.",[13,765,766,769,770,775,776,779,780,782,783,788],{},[20,767,768],{},"Gut zu wissen",": Wie das Beispiel zeigt, kann GitLab einen Job auf Basis eines bestimmten ",[23,771,289],{"href":772,"rel":773,"title":774},"https://about.gitlab.com/de-de/blog/what-is-docker-comprehensive-guide/",[],"Was ist Docker?","-Images ausführen, das über das Schlüsselwort ",[208,777,778],{},"image:"," in der ",[208,781,332],{},"-Datei definiert wird. Ein Standard-Image lässt sich für die gesamte Pipeline konfigurieren, während jeder Job bei Bedarf sein eigenes Image verwenden kann. Diese Flexibilität ermöglicht es, die Ausführungsumgebung für jede Stage anzupassen – ohne manuelle Server-Wartung. Images können vom Docker Hub oder aus der GitLab-Container-Registry (",[23,784,787],{"href":785,"rel":786},"https://docs.gitlab.com/user/packages/container_registry/",[],"GitLab Container Registry",") bezogen werden, was die schnelle Wahl der passenden Umgebung ermöglicht.",[45,790,792],{"id":791},"erweiterte-funktionen-von-gitlab-cicd","Erweiterte Funktionen von GitLab CI/CD",[185,794,796],{"id":795},"cicd-variablen-zur-konfiguration-und-sicherung-von-pipelines","CI/CD-Variablen zur Konfiguration und Sicherung von Pipelines",[13,798,799,806,807,810],{},[20,800,801],{},[23,802,805],{"href":803,"rel":804},"https://docs.gitlab.com/ci/variables/",[],"CI/CD-Variablen"," ermöglichen es, ",[20,808,809],{},"Werte an Jobs zu übergeben, ohne sie direkt im Code zu hinterlegen."," Sie können technische Parameter, API-Schlüssel oder sensible Informationen enthalten.",[13,812,813,816,817],{},[20,814,815],{},"GitLab unterscheidet mehrere Variablentypen",": benutzerdefinierte, vordefinierte, geschützte, maskierte sowie dateibasierte Variablen. Diese Granularität ",[20,818,819],{},"vereinfacht die Konfiguration und begrenzt die Offenlegung kritischer Informationen in Logs.",[185,821,823],{"id":822},"cicd-regeln-für-dynamische-pipelines","CI/CD-Regeln für dynamische Pipelines",[13,825,826,827,829,830,833,834,837,838,841],{},"Regeln (",[208,828,748],{},") ermöglichen es, die Pipeline-Logik an den Ausführungskontext anzupassen. Sie basieren auf Bedingungen wie ",[208,831,832],{},"if:",", ",[208,835,836],{},"changes:"," oder ",[208,839,840],{},"exists:",", um zu steuern, wann ein Job ausgeführt werden soll.",[13,843,844],{},"So lassen sich etwa bestimmte Stages je nach Branch aktivieren oder unterschiedliche Verhaltensweisen je nach Pipeline-Typ auslösen – ein praktisches Mittel, um die Konfiguration schlank zu halten und eine anpassungsfähige Pipeline beizubehalten.",[185,846,848],{"id":847},"cicd-komponenten-und-katalog-für-wiederverwendbare-pipelines","CI/CD-Komponenten und Katalog für wiederverwendbare Pipelines",[13,850,851,860,861,864],{},[20,852,853,854,859],{},"CI/CD-Komponenten (",[23,855,858],{"href":856,"rel":857},"https://docs.gitlab.com/ci/components/",[],"CI/CD components",")"," sind ",[20,862,863],{},"wiederverwendbare Konfigurationsbausteine",". Sie können eine Gruppe von Jobs, eine Integration, eine Test-Logik oder einen Deployment-Prozess abbilden.",[13,866,867,868,876],{},"Diese Komponenten können im ",[20,869,870,871,859],{},"CI/CD-Katalog (",[23,872,875],{"href":873,"rel":874},"https://docs.gitlab.com/ci/components/#cicd-catalog",[],"CI/CD catalog"," veröffentlicht werden – eine GitLab-Eigenheit, die das teamweite oder organisationsweite Teilen ermöglicht. Das reduziert Duplikate und macht die Pipeline-Wartung deutlich flexibler.",[13,878,879,881],{},[20,880,768],{},": Der CI/CD-Katalog enthält von GitLab und der Community veröffentlichte Komponenten für gängige Umgebungen wie Java/Maven – komplexe Konfigurationen müssen so nicht für jedes Projekt neu erstellt werden.",[185,883,885],{"id":884},"ressourcengruppen-zur-steuerung-gleichzeitiger-deployments","Ressourcengruppen zur Steuerung gleichzeitiger Deployments",[13,887,888,806,891,894,895,898],{},[20,889,890],{},"Ressourcengruppen",[20,892,893],{},"die gleichzeitige Ausführung bestimmter Jobs zu begrenzen."," Sie sind besonders bei Deployments nützlich, um ",[20,896,897],{},"zu verhindern, dass zwei Pipelines dieselbe Umgebung gleichzeitig verändern."," GitLab stellt Jobs, die dieselbe Gruppe teilen, in eine Warteschlange und führt immer nur einen davon aus.",[185,900,902],{"id":901},"umgebungen-zur-verwaltung-und-nachverfolgung-von-deployments","Umgebungen zur Verwaltung und Nachverfolgung von Deployments",[13,904,905],{},"GitLab-Umgebungen ermöglichen es, Deployment-Ziele wie Staging oder Produktion zu definieren und zu verfolgen. Jedes Deployment wird einer Umgebung zugeordnet, was eine lückenlose Nachverfolgbarkeit bietet: Wer hat was wann und aus welcher Pipeline heraus bereitgestellt?",[13,907,908],{},"Umgebungen können geschützt werden, um Deployments auf bestimmte Branches bzw. Nutzergruppen zu beschränken – das reduziert Fehlerrisiken in Produktion. GitLab zeigt den Status jeder Umgebung in Echtzeit direkt in der Benutzeroberfläche an.",[185,910,912],{"id":911},"review-apps-zum-testen-jeder-merge-request-in-einer-dedizierten-umgebung","Review Apps zum Testen jeder Merge Request in einer dedizierten Umgebung",[13,914,915,923],{},[20,916,917,918,859],{},"Kurzlebige Umgebungen (oder ",[23,919,922],{"href":920,"rel":921},"https://docs.gitlab.com/ci/review_apps/",[],"Review Apps"," gehen einen Schritt weiter: GitLab kann für jede Merge Request automatisch eine kurzlebige Umgebung bereitstellen, die direkt über einen Link in der Benutzeroberfläche zugänglich ist. Jede Änderung lässt sich so unter realen Bedingungen testen, ohne auf eine Integration in den Haupt-Branch warten zu müssen.",[13,925,926],{},"Die Umgebung wird automatisch gelöscht, wenn die Merge Request geschlossen wird – unnötige Ressourcenanhäufung wird so vermieden. Für Teams, die nicht-technische Profile (Product Manager, Designer, QA-Teams) in den Validierungsprozess einbeziehen, ist dies ein konkreter Hebel, um Review-Zyklen zu verkürzen und Regressionen früher zu erkennen.",[185,928,930],{"id":929},"parent-child-und-multi-projekt-pipelines","Parent-Child- und Multi-Projekt-Pipelines",[13,932,933,934],{},"GitLab kann ",[20,935,936],{},"eine Pipeline aus einer anderen Pipeline heraus auslösen (Parent-Child-Modell) oder mehrere Projekte in einem gemeinsamen Workflow orchestrieren (Multi-Projekt-Pipelines).",[13,938,939,940,945],{},"Diese Mechanismen kommen bei modularen Architekturen, ",[23,941,944],{"href":942,"rel":943},"https://about.gitlab.com/de-de/blog/building-a-gitlab-ci-cd-pipeline-for-a-monorepo-the-easy-way/",[],"Monorepos",", Mehrkomponenten-Ökosystemen oder verteilten Deployments zum Einsatz. Sie ermöglichen die Aufteilung von Pipelines bei gleichzeitig zentralisierter Koordination.",[45,947,949],{"id":948},"gitlab-cicd-im-devsecops-ansatz","GitLab CI/CD im DevSecOps-Ansatz",[13,951,952,953,959],{},"GitLab CI/CD beschränkt sich nicht auf die Automatisierung von Lieferungen: Es verbindet auf natürliche Weise Entwicklung, Sicherheit sowie Betrieb (",[23,954,958],{"href":955,"rel":956,"title":957},"https://about.gitlab.com/de-de/topics/devsecops/",[],"Was ist DevSecOps?","DevSecOps",") in einem einheitlichen Workflow.",[185,961,963],{"id":962},"build-test-sicherheit-und-deployment-in-einer-einzigen-umgebung","Build, Test, Sicherheit und Deployment in einer einzigen Umgebung",[13,965,966,969],{},[20,967,968],{},"GitLab CI/CD läuft direkt dort, wo sich bereits Code, Merge Requests, Sicherheit sowie Deployments befinden."," Das reduziert Reibungspunkte zwischen Teams: Entwicklungsteams verfügen über eine Pipeline, die testet, analysiert und Deployments vorbereitet, während Security- und Ops-Teams die Auswirkungen jeder Änderung in einem gemeinsamen Bereich nachverfolgen können.",[185,971,973],{"id":972},"in-pipelines-integrierte-sicherheit","In Pipelines integrierte Sicherheit",[13,975,976],{},"SAST-, DAST-Scans, Abhängigkeitsanalyse oder Container-Analyse können je nach GitLab-Abonnement als Standard-Jobs in die Pipeline eingefügt werden.",[13,978,979,982],{},[20,980,981],{},"Da diese Funktionen nativ integriert sind, sind weder externe Tools noch aufwändige Konfigurationen erforderlich."," Die Ergebnisse werden in den Merge Requests angezeigt – Sicherheit lässt sich so von Beginn an berücksichtigen, ohne Entwicklungszyklen zu verlangsamen.",[13,984,985],{},"Über integrierte Scans hinaus kann ein Job auch ein Drittanbieter-Tool wie SonarQube aufrufen, um die Code-Qualitätsanalyse zu ergänzen und technische Schulden zu erkennen.",[185,987,989],{"id":988},"kontinuierliches-feedback-zwischen-teams","Kontinuierliches Feedback zwischen Teams",[13,991,992],{},"Jede Pipeline liefert Logs, Testberichte, Sicherheitswarnungen und Deployment-Informationen – alles in einer einzigen Oberfläche abrufbar.",[13,994,995,996,999,1000],{},"Das ",[20,997,998],{},"Feedback ist unmittelbar",": Ein Testfehler, ein Build-Fehler oder eine Sicherheitswarnung erscheint direkt in der Merge Request. Das ",[20,1001,1002],{},"erleichtert Abwägungen und fördert schnelle, fundierte Entscheidungen auf jeder Stufe des Entwicklungszyklus.",[45,1004,1006],{"id":1005},"ki-im-devsecops-zyklus-die-gitlab-duo-agent-platform","KI im DevSecOps-Zyklus: die GitLab Duo Agent Platform",[13,1008,1009,1010,1017],{},"GitLab integriert KI-Fähigkeiten auf jeder Stufe des Software-Entwicklungszyklus über die ",[20,1011,1012],{},[23,1013,1016],{"href":1014,"rel":1015,"title":1016},"https://about.gitlab.com/de-de/gitlab-duo-agent-platform/",[],"GitLab Duo Agent Platform"," – eine Plattform spezialisierter Agents, die rund um Code, Pipelines sowie bestehende Tools zusammenarbeiten. Das Ziel ist nicht, Teams zu ersetzen, sondern ihnen Agents bereitzustellen, die repetitive Aufgaben automatisieren, Workflows orchestrieren und Entscheidungen entlang der Pipeline beschleunigen.",[185,1019,1021],{"id":1020},"agents-für-code-erstellung-review-und-industrialisierung","Agents für Code-Erstellung, Review und Industrialisierung",[13,1023,1024,1025,1027,1028,1031,1032,1035],{},"Mit der ",[20,1026,1016],{}," gehen KI-Fähigkeiten weit über einfache Code-Vervollständigungen hinaus: Sie manifestieren sich in Form von ",[20,1029,1030],{},"standardmäßig verfügbaren GitLab-Duo-Agents (Foundational Agents)"," (von GitLab angeboten, sofort einsatzbereit) und ",[20,1033,1034],{},"angepassten GitLab-Duo-Agents"," (von den eigenen Teams konfiguriert), die sich an individuelle Projekte anpassen lassen.",[61,1037,1038,1051,1060],{},[64,1039,1040,1043,1044,1050],{},[20,1041,1042],{},"Der Code-Agent von GitLab Duo (Foundational Agent)."," Dieser Agent nutzt die nativen GitLab-Duo-Fähigkeiten (Code-Vervollständigung, -Generierung und -Refaktorierung) in der ",[23,1045,1049],{"href":1046,"rel":1047,"title":1048},"https://about.gitlab.com/de-de/blog/what-is-an-ide/",[],"Was ist eine IDE?","IDE"," und der Web-IDE. Er unterstützt Teams beim Schreiben, Anpassen oder Modernisieren von Code unter Einhaltung der Projektstandards und -konventionen.",[64,1052,1053,1056,1057,1059],{},[20,1054,1055],{},"Der angepasste GitLab-Duo-CI/CD-Agent."," Mit der GitLab Duo Agent Platform lässt sich ein spezialisierter CI/CD-Agent definieren: Er kann eine ",[208,1058,332],{},"-Datei generieren bzw. korrigieren, eine bestehende Pipeline erklären, Optimierungen vorschlagen (Cache, Parallelisierung, Runner-Strategie) und Job-Fehler diagnostizieren. Dieser Agent wird von den Teams nach ihren eigenen Mustern und Anforderungen konfiguriert.",[64,1061,1062,1065],{},[20,1063,1064],{},"Der angepasste GitLab-Duo-Dokumentations- und Wissens-Agent."," Auf Basis von GitLab Duo Chat, verbunden mit dem GitLab-Kontext, ermöglicht ein „Projektwissens-Agent\" die Abfrage von Code, Merge Requests, Issues und CI/CD-Konfiguration in natürlicher Sprache – um schnell den Projektstatus oder die wahrscheinliche Ursache eines Build-Fehlers zu verstehen. Dieser Agent nutzt dieselben Grundlagen wie GitLab Duo Chat, ist aber auf den eigenen Geltungsbereich (Projekte, Gruppen) sowie interne Regeln spezialisiert.",[13,1067,1068,1069,270],{},"Mehr zu den standardmäßigen, anpassbaren und externen KI-Agents auf der GitLab Duo Agent Platform findet sich in der ",[23,1070,1073],{"href":1071,"rel":1072},"https://docs.gitlab.com/user/duo_agent_platform/agents/",[],"Dokumentation",[185,1075,1077],{"id":1076},"proaktive-analyse-von-merge-requests-durch-agents","Proaktive Analyse von Merge Requests durch Agents",[13,1079,1080,1081,1084,1085,1092,1093,1084,1096,1103],{},"Statt einer einfachen automatischen Zusammenfassung ermöglicht die GitLab Duo Agent Platform, eine Merge Request einem ",[20,1082,1083],{},"dedizierten GitLab-Agent"," (etwa dem ",[162,1086,1087],{},[23,1088,1091],{"href":1089,"rel":1090},"https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/ci_expert_agent/",[],"CI Expert Agent",") oder einem ",[20,1094,1095],{},"standardmäßigen Flow (Foundational Flow) spezialisiert auf Code-Review",[162,1097,1098],{},[23,1099,1102],{"href":1100,"rel":1101},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/",[],"Code Review Flow",") zu übergeben, der:",[61,1105,1106,1109,1112],{},[64,1107,1108],{},"Änderungen zusammenfasst (funktionale, sicherheitsrelevante, leistungsbezogene) und die wesentlichen Auswirkungen hervorhebt.",[64,1110,1111],{},"Potenzielle Risiken identifiziert (sensible Code-Stellen, verschärfte technische Schulden, Änderungen an API-Verträgen).",[64,1113,1114],{},"Gezielte Hinweise für Reviewer vorschlägt und gegebenenfalls Korrekturen oder fehlende Tests empfiehlt.",[13,1116,1117],{},"Diese Fähigkeiten helfen, Review-Zeiten zu reduzieren, die Qualität von Merge Requests zu standardisieren und weniger technische Profile in die Bewertung von Änderungen einzubeziehen.",[185,1119,1121],{"id":1120},"ki-und-sicherheit-agents-zur-analyse-korrektur-und-steuerung-von-schwachstellen","KI und Sicherheit: Agents zur Analyse, Korrektur und Steuerung von Schwachstellen",[13,1123,1124,1125,1128,1129,1136],{},"Mit der GitLab Duo Agent Platform wird Sicherheit von einem oder mehreren ",[20,1126,1127],{},"AppSec-orientierten Agents"," übernommen (etwa dem ",[162,1130,1131],{},[23,1132,1135],{"href":1133,"rel":1134},"https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/security_analyst_agent/",[],"Security Analyst Agent","), die:",[61,1138,1139,1142,1145,1148],{},[64,1140,1141],{},"Die Ergebnisse von Sicherheitsscans verarbeiten (SAST, DAST, Abhängigkeitsanalyse, Container-Analyse etc.).",[64,1143,1144],{},"Jede Schwachstelle in der Sprache des Teams erklären (Kontext, wahrscheinliches Angriffsszenario, geschäftliche Auswirkung).",[64,1146,1147],{},"Konkrete Patches oder Refaktorierungen vorschlagen, die Entwicklungsteams anwenden und anpassen können.",[64,1149,1150],{},"Bei der Priorisierung von Schwachstellen unterstützen, indem Kritikalität, Angriffsfläche, Projekthistorie sowie interne Richtlinien zusammengeführt werden.",[13,1152,1153,1154,1157],{},"Diese Agents ermöglichen den Übergang von einem reaktiven Schwachstellenmanagement zu einer ",[20,1155,1156],{},"kontinuierlichen Steuerung der Sicherheitsposition",", die direkt in Pipelines und Merge Requests integriert ist.",[185,1159,1161],{"id":1160},"mit-der-gitlab-duo-agent-platform-zu-autonomen-pipelines","Mit der GitLab Duo Agent Platform zu autonomen Pipelines",[13,1163,341,1164,1166,1167,1170],{},[20,1165,1016],{}," stellt den nächsten Schritt dar: nicht mehr nur vorab geplante Jobs auslösen, sondern ",[20,1168,1169],{},"vollständige Aufgaben an KI-Agents delegieren",", die über den Projekt- und Pipeline-Status nachdenken können.",[13,1172,1173,1174,1177,1178,1180,1181,1184],{},"Ein Agent kann beispielsweise einen Build-Fehler analysieren, eine Korrektur vorschlagen, eine Merge Request öffnen oder aktualisieren, notwendige Jobs neu starten oder die richtigen Personen mit einer verwertbaren Zusammenfassung benachrichtigen. Dieser Ansatz beginnt, den Begriff der CI/CD-Pipeline selbst zu transformieren: Der Wechsel vollzieht sich von einer ",[20,1175,1176],{},"statischen Automatisierung"," (in ",[208,1179,332],{}," festgelegte Scripts) hin zu einer ",[20,1182,1183],{},"adaptiven Orchestrierung",", bei der spezialisierte Agents und agentische Flows rund um die Pipeline zusammenarbeiten, um kontinuierlich zu diagnostizieren, zu korrigieren und zu optimieren.",[45,1186,1188],{"id":1187},"warum-gitlab-cicd","Warum GitLab CI/CD?",[185,1190,1192],{"id":1191},"eine-plattform-die-cicd-vereinfacht","Eine Plattform, die CI/CD vereinfacht",[13,1194,1195],{},"Die meisten CI-Tools folgen einer Assemblierungslogik: ein Tool für den Code, ein anderes für Tests, eines für Sicherheit, dann ein Deployment-Tool. Diese Fragmentierung erschwert die Wartung und verteilt Informationen auf mehrere Oberflächen.",[13,1197,1198,1199,1202],{},"GitLab verfolgt einen ",[20,1200,1201],{},"einheitlichen Ansatz",": Code, Pipelines, Sicherheit, Review sowie Deployments liegen auf einer einzigen Plattform – für einfachere und konsistentere Workflows.",[185,1204,1206],{"id":1205},"gitlab-eigene-funktionen","GitLab-eigene Funktionen",[13,1208,1209],{},"GitLab CI/CD verfügt über plattformeigene Fähigkeiten, die mit einer fragmentierten Tool-Kette nur schwer nachzubilden sind:",[61,1211,1212,1215,1218,1221,1230,1233],{},[64,1213,1214],{},"der CI/CD-Katalog und CI/CD-Komponenten zur Pipeline-Standardisierung,",[64,1216,1217],{},"von GitLab auf GitLab.com gehostete Runner (Linux, Windows, macOS),",[64,1219,1220],{},"native Sicherheitsintegration in Pipelines,",[64,1222,1223,1224,1229],{},"der Pipeline-Editor (",[23,1225,1228],{"href":1226,"rel":1227},"https://docs.gitlab.com/ci/pipeline_editor/",[],"Pipeline Editor",") – ein integrierter Editor mit Echtzeit-Validierung und Pipeline-Graph-Visualisierung,",[64,1231,1232],{},"vollständiges Merge-Request-Management und Branch-Schutz integriert in den CI/CD-Zyklus,",[64,1234,1235],{},"KI auf jeder Stufe des Software-Entwicklungszyklus mit der GitLab Duo Agent Platform.",[13,1237,1238,1239],{},"Diese Elemente ermöglichen den ",[20,1240,1241],{},"Aufbau vollständiger Pipelines ohne Abhängigkeit von Erweiterungen oder externen Diensten.",[185,1243,1245],{"id":1244},"ein-einheitliches-devsecops-erlebnis","Ein einheitliches DevSecOps-Erlebnis",[13,1247,1248,1249,1252],{},"Da ",[20,1250,1251],{},"der gesamte Entwicklungsworkflow auf einer einzigen Umgebung basiert",", profitiert jede Änderung automatisch von Tests, Sicherheitsanalysen, Deployment-Logs sowie Feedback in Merge Requests.",[13,1254,1255,1258],{},[20,1256,1257],{},"Teams arbeiten damit in einem kontinuierlichen Zyklus"," – mit weniger Kontextwechseln und einer konsolidierten Übersicht über die Software-Qualität auf jeder Stufe.",[45,1260,1262],{"id":1261},"einstieg-in-gitlab-cicd","Einstieg in GitLab CI/CD",[13,1264,1265],{},"GitLab CI/CD ist für alle Reifegrade konzipiert.",[13,1267,1268,1269,1271],{},"Einsteiger-Teams können Auto DevOps nutzen, um ohne Konfiguration eine erste funktionsfähige Pipeline zu erhalten, und ihre ",[208,1270,332],{},"-Datei schrittweise verfeinern, sobald sich die Anforderungen weiterentwickeln.",[13,1273,1274],{},"Für bereits erfahrene Teams ermöglichen CI/CD-Katalogkomponenten, DAG-Pipelines, Review Apps und native Sicherheitsintegration den Aufbau robuster, reproduzierbarer Workflows für komplexe Architekturen.",[13,1276,1277],{},"Die GitLab Duo Agent Platform ergänzt dieses Set durch eine Intelligenzschicht auf jeder Stufe: Konfigurationsunterstützung, Schwachstellenanalyse, Zusammenfassung von Merge Requests und – schrittweise – Agents, die in Pipelines autonom handeln können.",[13,1279,1280],{},"In beiden Fällen bleibt das Ziel dasselbe: den Zeitraum zwischen einem Commit und seiner Bereitstellung in Produktion zu verkürzen, bei gleichzeitig hohem Qualitäts- und Zuverlässigkeitsniveau auf jeder Stufe.",[33,1282,1283],{},[13,1284,1285],{},[20,1286,1287,1291],{},[23,1288,1290],{"href":41,"rel":1289},[],"→ GitLab Ultimate kostenlos testen"," und alle CI/CD-Funktionen in der eigenen Umgebung entdecken.",[33,1293,1294,1298,1301,1304,1327,1330],{},[185,1295,1297],{"id":1296},"gitlab-cicd-im-überblick","GitLab CI/CD im Überblick",[13,1299,1300],{},"GitLab CI/CD vereint den gesamten DevSecOps-Zyklus in einer Plattform: Code, Pipelines, Tests, Sicherheit, Artefakte sowie Deployments. Diese Integration vermeidet Tool-Proliferation und ermöglicht die Nachverfolgung jeder Code-Änderung bis zur Produktionsbereitstellung in einer kohärenten Umgebung.",[13,1302,1303],{},"Eine GitLab-Pipeline basiert auf mehreren Schlüsselelementen:",[61,1305,1306,1312,1315,1318,1321,1324],{},[64,1307,1308,1309,1311],{},"eine ",[208,1310,332],{},"-Datei, die Stages und Jobs definiert,",[64,1313,1314],{},"Runner, die Aufgaben ausführen,",[64,1316,1317],{},"Artefakte zur Weitergabe oder Aufbewahrung erzeugter Dateien,",[64,1319,1320],{},"der Cache zur Beschleunigung der Ausführung durch Vermeidung erneuter Abhängigkeits-Downloads bei jeder Pipeline,",[64,1322,1323],{},"Variablen zur sicheren Anpassung des Pipeline-Verhaltens,",[64,1325,1326],{},"der CI/CD-Katalog und -Komponenten zur Standardisierung von Konfigurationen auf Projekt- oder Organisationsebene.",[13,1328,1329],{},"Diese Struktur bietet einen einzigen Ort, um Testergebnisse auszuwerten, Sicherheitsanalysen zu prüfen und Deployments zu verfolgen.",[13,1331,1332],{},"Die GitLab Duo Agent Platform bereichert diese Struktur durch eine Intelligenzschicht: Agents, die bei der Konfiguration unterstützen, Schwachstellen analysieren und Korrekturmaßnahmen autonom orchestrieren können.",[1334,1335,1336],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":373,"searchDepth":395,"depth":395,"links":1338},[1339,1340,1341,1347,1356,1361,1367,1372],{"id":47,"depth":395,"text":48},{"id":101,"depth":395,"text":102},{"id":175,"depth":395,"text":176,"children":1342},[1343,1344,1345,1346],{"id":187,"depth":405,"text":188},{"id":218,"depth":405,"text":219},{"id":255,"depth":405,"text":256},{"id":325,"depth":405,"text":326},{"id":791,"depth":395,"text":792,"children":1348},[1349,1350,1351,1352,1353,1354,1355],{"id":795,"depth":405,"text":796},{"id":822,"depth":405,"text":823},{"id":847,"depth":405,"text":848},{"id":884,"depth":405,"text":885},{"id":901,"depth":405,"text":902},{"id":911,"depth":405,"text":912},{"id":929,"depth":405,"text":930},{"id":948,"depth":395,"text":949,"children":1357},[1358,1359,1360],{"id":962,"depth":405,"text":963},{"id":972,"depth":405,"text":973},{"id":988,"depth":405,"text":989},{"id":1005,"depth":395,"text":1006,"children":1362},[1363,1364,1365,1366],{"id":1020,"depth":405,"text":1021},{"id":1076,"depth":405,"text":1077},{"id":1120,"depth":405,"text":1121},{"id":1160,"depth":405,"text":1161},{"id":1187,"depth":395,"text":1188,"children":1368},[1369,1370,1371],{"id":1191,"depth":405,"text":1192},{"id":1205,"depth":405,"text":1206},{"id":1244,"depth":405,"text":1245},{"id":1261,"depth":395,"text":1262,"children":1373},[1374],{"id":1296,"depth":405,"text":1297},"devsecops","2026-04-30","GitLab CI/CD automatisiert Builds, Tests und Deployments in einer einheitlichen Plattform – eine Übersicht zu Funktionsweise, Kernkomponenten und Features.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1775561395/bhe1as7ttjvzltxwgo5m.png",{},"/de-de/blog/what-is-gitlab-ci-cd",{"config":1385,"title":1386,"ogTitle":1386,"description":1387,"ogDescription":1387},{"noIndex":1380},"Was ist GitLab CI/CD? Der vollständige Leitfaden","GitLab CI/CD automatisiert Builds, Tests und Deployments in einer einheitlichen DevSecOps-Plattform – Funktionsweise, Kernkomponenten und erweiterte Features.","what-is-gitlab-ci-cd","de-de/blog/what-is-gitlab-ci-cd",[58,958,1391],"DevOps","BlogPost","BPb8jLvdittajSVPc20UnEN9dsfx2FZ7L_ouiVps7vw",{"logo":1395,"freeTrial":1400,"sales":1405,"login":1410,"items":1415,"search":1734,"minimal":1768,"duo":1786,"switchNav":1795,"pricingDeployment":1806},{"config":1396},{"href":1397,"dataGaName":1398,"dataGaLocation":1399},"/de-de/","gitlab logo","header",{"text":1401,"config":1402},"Kostenlose Testversion anfordern",{"href":1403,"dataGaName":1404,"dataGaLocation":1399},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":1406,"config":1407},"Vertrieb kontaktieren",{"href":1408,"dataGaName":1409,"dataGaLocation":1399},"/de-de/sales/","sales",{"text":1411,"config":1412},"Anmelden",{"href":1413,"dataGaName":1414,"dataGaLocation":1399},"https://gitlab.com/users/sign_in/","sign in",[1416,1444,1545,1550,1653,1714],{"text":1417,"config":1418,"menu":1420},"Plattform",{"dataNavLevelOne":1419},"platform",{"type":1421,"columns":1422},"cards",[1423,1429,1436],{"title":1417,"description":1424,"link":1425},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":1426,"config":1427},"Die Plattform erkunden",{"href":1428,"dataGaName":1419,"dataGaLocation":1399},"/de-de/platform/",{"title":1016,"description":1430,"link":1431},"Agentische KI für den gesamten Software-Lebenszyklus",{"text":1432,"config":1433},"Lerne GitLab Duo kennen",{"href":1434,"dataGaName":1435,"dataGaLocation":1399},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1437,"description":1438,"link":1439},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":1440,"config":1441},"Mehr erfahren",{"href":1442,"dataGaName":1443,"dataGaLocation":1399},"/de-de/why-gitlab/","why gitlab",{"text":1445,"left":424,"config":1446,"menu":1448},"Produkt",{"dataNavLevelOne":1447},"solutions",{"type":1449,"link":1450,"columns":1454,"feature":1524},"lists",{"text":1451,"config":1452},"Alle Lösungen anzeigen",{"href":1453,"dataGaName":1447,"dataGaLocation":1399},"/de-de/solutions/",[1455,1479,1502],{"title":1456,"description":1457,"link":1458,"items":1463},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":1459},{"icon":1460,"href":1461,"dataGaName":1462,"dataGaLocation":1399},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[1464,1467,1470,1475],{"text":58,"config":1465},{"href":1466,"dataGaLocation":1399,"dataGaName":58},"/de-de/solutions/continuous-integration/",{"text":1016,"config":1468},{"href":1434,"dataGaLocation":1399,"dataGaName":1469},"gitlab duo agent platform - product menu",{"text":1471,"config":1472},"Quellcodeverwaltung",{"href":1473,"dataGaLocation":1399,"dataGaName":1474},"/de-de/solutions/source-code-management/","Source Code Management",{"text":1476,"config":1477},"Automatische Softwarebereitstellung",{"href":1461,"dataGaLocation":1399,"dataGaName":1478},"Automated software delivery",{"title":1480,"description":1481,"link":1482,"items":1487},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":1483},{"href":1484,"dataGaName":1485,"dataGaLocation":1399,"icon":1486},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1488,1492,1497],{"text":1489,"config":1490},"Anwendungssicherheitstests",{"href":1484,"dataGaName":1491,"dataGaLocation":1399},"Application security testing",{"text":1493,"config":1494},"Schutz der Software-Lieferkette",{"href":1495,"dataGaLocation":1399,"dataGaName":1496},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":1498,"config":1499},"Software-Compliance",{"href":1500,"dataGaName":1501,"dataGaLocation":1399},"/de-de/solutions/software-compliance/","software compliance",{"title":1503,"link":1504,"items":1509},"Messung",{"config":1505},{"icon":1506,"href":1507,"dataGaName":1508,"dataGaLocation":1399},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[1510,1514,1519],{"text":1511,"config":1512},"Sichtbarkeit und Messung",{"href":1507,"dataGaLocation":1399,"dataGaName":1513},"Visibility and Measurement",{"text":1515,"config":1516},"Wertstrommanagement",{"href":1517,"dataGaLocation":1399,"dataGaName":1518},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":1520,"config":1521},"Analysen und Einblicke",{"href":1522,"dataGaLocation":1399,"dataGaName":1523},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":1525,"type":1449,"items":1526},"GitLab für",[1527,1533,1539],{"text":1528,"config":1529},"Enterprise",{"icon":1530,"href":1531,"dataGaLocation":1399,"dataGaName":1532},"Building","/de-de/enterprise/","enterprise",{"text":1534,"config":1535},"Kleinunternehmen",{"icon":1536,"href":1537,"dataGaLocation":1399,"dataGaName":1538},"Work","/de-de/small-business/","small business",{"text":1540,"config":1541},"Öffentlicher Sektor",{"icon":1542,"href":1543,"dataGaLocation":1399,"dataGaName":1544},"Organization","/de-de/solutions/public-sector/","public sector",{"text":1546,"config":1547},"Preise",{"href":1548,"dataGaName":1549,"dataGaLocation":1399,"dataNavLevelOne":1549},"/de-de/pricing/","pricing",{"text":1551,"config":1552,"menu":1554},"Ressourcen",{"dataNavLevelOne":1553},"resources",{"type":1449,"link":1555,"columns":1559,"feature":1643},{"text":1556,"config":1557},"Alle Ressourcen anzeigen",{"href":1558,"dataGaName":1553,"dataGaLocation":1399},"/de-de/resources/",[1560,1593,1615],{"title":1561,"items":1562},"Erste Schritte",[1563,1568,1573,1578,1583,1588],{"text":1564,"config":1565},"Installieren",{"href":1566,"dataGaName":1567,"dataGaLocation":1399},"/de-de/install/","install",{"text":1569,"config":1570},"Kurzanleitungen",{"href":1571,"dataGaName":1572,"dataGaLocation":1399},"/de-de/get-started/","quick setup checklists",{"text":1574,"config":1575},"Lernen",{"href":1576,"dataGaLocation":1399,"dataGaName":1577},"https://university.gitlab.com/","learn",{"text":1579,"config":1580},"Produktdokumentation",{"href":1581,"dataGaName":1582,"dataGaLocation":1399},"https://docs.gitlab.com/","product documentation",{"text":1584,"config":1585},"Best-Practice-Videos",{"href":1586,"dataGaName":1587,"dataGaLocation":1399},"/de-de/getting-started-videos/","best practice videos",{"text":1589,"config":1590},"Integrationen",{"href":1591,"dataGaName":1592,"dataGaLocation":1399},"/de-de/integrations/","integrations",{"title":1594,"items":1595},"Entdecken",[1596,1601,1606,1610],{"text":1597,"config":1598},"Kundenerfolge",{"href":1599,"dataGaName":1600,"dataGaLocation":1399},"/de-de/customers/","customer success stories",{"text":1602,"config":1603},"Blog",{"href":1604,"dataGaName":1605,"dataGaLocation":1399},"/de-de/blog/","blog",{"text":1607,"config":1608},"The Source",{"href":1609,"dataGaName":1605,"dataGaLocation":1399},"/de-de/the-source/",{"text":1611,"config":1612},"Remote",{"href":1613,"dataGaName":1614,"dataGaLocation":1399},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1616,"items":1617},"Vernetzen",[1618,1623,1628,1633,1638],{"text":1619,"config":1620},"GitLab-Services",{"href":1621,"dataGaName":1622,"dataGaLocation":1399},"/de-de/services/","services",{"text":1624,"config":1625},"Community",{"href":1626,"dataGaName":1627,"dataGaLocation":1399},"/community/","community",{"text":1629,"config":1630},"Forum",{"href":1631,"dataGaName":1632,"dataGaLocation":1399},"https://forum.gitlab.com/","forum",{"text":1634,"config":1635},"Veranstaltungen",{"href":1636,"dataGaName":1637,"dataGaLocation":1399},"/events/","events",{"text":1639,"config":1640},"Partner",{"href":1641,"dataGaName":1642,"dataGaLocation":1399},"/de-de/partners/","partners",{"config":1644,"title":1647,"text":1648,"link":1649},{"background":1645,"textColor":1646},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":1650,"config":1651},"Aktuelle Nachrichten",{"href":1609,"dataGaName":1652,"dataGaLocation":1399},"the source",{"text":1654,"config":1655,"menu":1657},"Company",{"dataNavLevelOne":1656},"company",{"type":1449,"columns":1658},[1659],{"items":1660},[1661,1666,1672,1674,1679,1684,1689,1694,1699,1704,1709],{"text":1662,"config":1663},"Über",{"href":1664,"dataGaName":1665,"dataGaLocation":1399},"/de-de/company/","about",{"text":1667,"config":1668,"footerGa":1671},"Karriere",{"href":1669,"dataGaName":1670,"dataGaLocation":1399},"/jobs/","jobs",{"dataGaName":1670},{"text":1634,"config":1673},{"href":1636,"dataGaName":1637,"dataGaLocation":1399},{"text":1675,"config":1676},"Geschäftsführung",{"href":1677,"dataGaName":1678,"dataGaLocation":1399},"/company/team/e-group/","leadership",{"text":1680,"config":1681},"Team",{"href":1682,"dataGaName":1683,"dataGaLocation":1399},"/company/team/","team",{"text":1685,"config":1686},"Handbuch",{"href":1687,"dataGaName":1688,"dataGaLocation":1399},"https://handbook.gitlab.com/","handbook",{"text":1690,"config":1691},"Investor Relations",{"href":1692,"dataGaName":1693,"dataGaLocation":1399},"https://ir.gitlab.com/","investor relations",{"text":1695,"config":1696},"Trust Center",{"href":1697,"dataGaName":1698,"dataGaLocation":1399},"/de-de/security/","trust center",{"text":1700,"config":1701},"AI Transparency Center",{"href":1702,"dataGaName":1703,"dataGaLocation":1399},"/de-de/ai-transparency-center/","ai transparency center",{"text":1705,"config":1706},"Newsletter",{"href":1707,"dataGaName":1708,"dataGaLocation":1399},"/company/contact/#contact-forms","newsletter",{"text":1710,"config":1711},"Presse",{"href":1712,"dataGaName":1713,"dataGaLocation":1399},"/press/","press",{"text":1715,"config":1716,"menu":1717},"Kontakt",{"dataNavLevelOne":1656},{"type":1449,"columns":1718},[1719],{"items":1720},[1721,1724,1729],{"text":1406,"config":1722},{"href":1408,"dataGaName":1723,"dataGaLocation":1399},"talk to sales",{"text":1725,"config":1726},"Support-Portal",{"href":1727,"dataGaName":1728,"dataGaLocation":1399},"https://support.gitlab.com","support portal",{"text":1730,"config":1731},"Kundenportal",{"href":1732,"dataGaName":1733,"dataGaLocation":1399},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1735,"login":1736,"suggestions":1743},"Schließen",{"text":1737,"link":1738},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1739,"config":1740},"gitlab.com",{"href":1413,"dataGaName":1741,"dataGaLocation":1742},"search login","search",{"text":1744,"default":1745},"Vorschläge",[1746,1748,1753,1755,1760,1765],{"text":1016,"config":1747},{"href":1434,"dataGaName":1016,"dataGaLocation":1742},{"text":1749,"config":1750},"Codevorschläge (KI)",{"href":1751,"dataGaName":1752,"dataGaLocation":1742},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":58,"config":1754},{"href":1466,"dataGaName":58,"dataGaLocation":1742},{"text":1756,"config":1757},"GitLab auf AWS",{"href":1758,"dataGaName":1759,"dataGaLocation":1742},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1761,"config":1762},"GitLab auf Google Cloud",{"href":1763,"dataGaName":1764,"dataGaLocation":1742},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1437,"config":1766},{"href":1442,"dataGaName":1767,"dataGaLocation":1742},"Why GitLab?",{"freeTrial":1769,"mobileIcon":1774,"desktopIcon":1779,"secondaryButton":1782},{"text":1770,"config":1771},"Kostenlos testen",{"href":1772,"dataGaName":1404,"dataGaLocation":1773},"https://gitlab.com/-/trials/new/","nav",{"altText":1775,"config":1776},"GitLab-Symbol",{"src":1777,"dataGaName":1778,"dataGaLocation":1773},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1775,"config":1780},{"src":1781,"dataGaName":1778,"dataGaLocation":1773},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1561,"config":1783},{"href":1784,"dataGaName":1785,"dataGaLocation":1773},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1787,"mobileIcon":1791,"desktopIcon":1793},{"text":1788,"config":1789},"Mehr über GitLab Duo erfahren",{"href":1434,"dataGaName":1790,"dataGaLocation":1773},"gitlab duo",{"altText":1775,"config":1792},{"src":1777,"dataGaName":1778,"dataGaLocation":1773},{"altText":1775,"config":1794},{"src":1781,"dataGaName":1778,"dataGaLocation":1773},{"button":1796,"mobileIcon":1801,"desktopIcon":1803},{"text":1797,"config":1798},"/Option",{"href":1799,"dataGaName":1800,"dataGaLocation":1773},"#contact","switch",{"altText":1775,"config":1802},{"src":1777,"dataGaName":1778,"dataGaLocation":1773},{"altText":1775,"config":1804},{"src":1805,"dataGaName":1778,"dataGaLocation":1773},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1807,"mobileIcon":1812,"desktopIcon":1814},{"text":1808,"config":1809},"Zurück zur Preisübersicht",{"href":1548,"dataGaName":1810,"dataGaLocation":1773,"icon":1811},"back to pricing","GoBack",{"altText":1775,"config":1813},{"src":1777,"dataGaName":1778,"dataGaLocation":1773},{"altText":1775,"config":1815},{"src":1781,"dataGaName":1778,"dataGaLocation":1773},{"title":1817,"button":1818,"config":1823},"Sieh dir an, wie agentische KI die Softwarebereitstellung transformiert",{"text":1819,"config":1820},"Für GitLab Transcend am 10. Juni anmelden",{"href":1821,"dataGaName":1822,"dataGaLocation":1399},"/de-de/events/transcend/virtual/","transcend event",{"layout":1824,"disabled":1380},"release",{"data":1826},{"text":1827,"source":1828,"edit":1834,"contribute":1839,"config":1844,"items":1849,"minimal":2051},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1829,"config":1830},"Quelltext der Seite anzeigen",{"href":1831,"dataGaName":1832,"dataGaLocation":1833},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1835,"config":1836},"Diese Seite bearbeiten",{"href":1837,"dataGaName":1838,"dataGaLocation":1833},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1840,"config":1841},"Beteilige dich",{"href":1842,"dataGaName":1843,"dataGaLocation":1833},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1845,"facebook":1846,"youtube":1847,"linkedin":1848},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1850,1895,1945,1987,2015],{"title":1546,"links":1851,"subMenu":1866},[1852,1856,1861],{"text":1853,"config":1854},"Tarife anzeigen",{"href":1548,"dataGaName":1855,"dataGaLocation":1833},"view plans",{"text":1857,"config":1858},"Vorteile von Premium",{"href":1859,"dataGaName":1860,"dataGaLocation":1833},"/de-de/pricing/premium/","why premium",{"text":1862,"config":1863},"Vorteile von Ultimate",{"href":1864,"dataGaName":1865,"dataGaLocation":1833},"/de-de/pricing/ultimate/","why ultimate",[1867],{"title":1715,"links":1868},[1869,1871,1873,1875,1880,1885,1890],{"text":1406,"config":1870},{"href":1408,"dataGaName":1409,"dataGaLocation":1833},{"text":1725,"config":1872},{"href":1727,"dataGaName":1728,"dataGaLocation":1833},{"text":1730,"config":1874},{"href":1732,"dataGaName":1733,"dataGaLocation":1833},{"text":1876,"config":1877},"Status",{"href":1878,"dataGaName":1879,"dataGaLocation":1833},"https://status.gitlab.com/","status",{"text":1881,"config":1882},"Nutzungsbedingungen",{"href":1883,"dataGaName":1884,"dataGaLocation":1833},"/terms/","terms of use",{"text":1886,"config":1887},"Datenschutzerklärung",{"href":1888,"dataGaName":1889,"dataGaLocation":1833},"/de-de/privacy/","privacy statement",{"text":1891,"config":1892},"Cookie-Einstellungen",{"dataGaName":1893,"dataGaLocation":1833,"id":1894,"isOneTrustButton":424},"cookie preferences","ot-sdk-btn",{"title":1445,"links":1896,"subMenu":1905},[1897,1901],{"text":1898,"config":1899},"DevSecOps-Plattform",{"href":1428,"dataGaName":1900,"dataGaLocation":1833},"devsecops platform",{"text":1902,"config":1903},"KI-unterstützte Entwicklung",{"href":1434,"dataGaName":1904,"dataGaLocation":1833},"ai-assisted development",[1906],{"title":1907,"links":1908},"Themen",[1909,1913,1918,1922,1927,1930,1935,1940],{"text":58,"config":1910},{"href":1911,"dataGaName":1912,"dataGaLocation":1833},"/de-de/topics/ci-cd/","cicd",{"text":1914,"config":1915},"GitOps",{"href":1916,"dataGaName":1917,"dataGaLocation":1833},"/de-de/topics/gitops/","gitops",{"text":1391,"config":1919},{"href":1920,"dataGaName":1921,"dataGaLocation":1833},"/de-de/topics/devops/","devops",{"text":1923,"config":1924},"Versionskontrolle",{"href":1925,"dataGaName":1926,"dataGaLocation":1833},"/de-de/topics/version-control/","version control",{"text":958,"config":1928},{"href":1929,"dataGaName":1375,"dataGaLocation":1833},"/de-de/topics/devsecops/",{"text":1931,"config":1932},"Cloud-nativ",{"href":1933,"dataGaName":1934,"dataGaLocation":1833},"/de-de/topics/cloud-native/","cloud native",{"text":1936,"config":1937},"KI für das Programmieren",{"href":1938,"dataGaName":1939,"dataGaLocation":1833},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1941,"config":1942},"Agentische KI",{"href":1943,"dataGaName":1944,"dataGaLocation":1833},"/de-de/topics/agentic-ai/","agentic ai",{"title":1946,"links":1947},"Lösungen",[1948,1951,1953,1958,1962,1965,1968,1971,1973,1975,1977,1982],{"text":1489,"config":1949},{"href":1484,"dataGaName":1950,"dataGaLocation":1833},"Application Security Testing",{"text":1476,"config":1952},{"href":1461,"dataGaName":1462,"dataGaLocation":1833},{"text":1954,"config":1955},"Agile Entwicklung",{"href":1956,"dataGaName":1957,"dataGaLocation":1833},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1959,"config":1960},"SCM",{"href":1473,"dataGaName":1961,"dataGaLocation":1833},"source code management",{"text":58,"config":1963},{"href":1466,"dataGaName":1964,"dataGaLocation":1833},"continuous integration & delivery",{"text":1515,"config":1966},{"href":1517,"dataGaName":1967,"dataGaLocation":1833},"value stream management",{"text":1914,"config":1969},{"href":1970,"dataGaName":1917,"dataGaLocation":1833},"/de-de/solutions/gitops/",{"text":1528,"config":1972},{"href":1531,"dataGaName":1532,"dataGaLocation":1833},{"text":1534,"config":1974},{"href":1537,"dataGaName":1538,"dataGaLocation":1833},{"text":1540,"config":1976},{"href":1543,"dataGaName":1544,"dataGaLocation":1833},{"text":1978,"config":1979},"Bildungswesen",{"href":1980,"dataGaName":1981,"dataGaLocation":1833},"/de-de/solutions/education/","education",{"text":1983,"config":1984},"Finanzdienstleistungen",{"href":1985,"dataGaName":1986,"dataGaLocation":1833},"/de-de/solutions/finance/","financial services",{"title":1551,"links":1988},[1989,1991,1993,1995,1998,2000,2002,2004,2007,2009,2011,2013],{"text":1564,"config":1990},{"href":1566,"dataGaName":1567,"dataGaLocation":1833},{"text":1569,"config":1992},{"href":1571,"dataGaName":1572,"dataGaLocation":1833},{"text":1574,"config":1994},{"href":1576,"dataGaName":1577,"dataGaLocation":1833},{"text":1579,"config":1996},{"href":1581,"dataGaName":1997,"dataGaLocation":1833},"docs",{"text":1602,"config":1999},{"href":1604,"dataGaName":1605,"dataGaLocation":1833},{"text":1597,"config":2001},{"href":1599,"dataGaName":1600,"dataGaLocation":1833},{"text":1611,"config":2003},{"href":1613,"dataGaName":1614,"dataGaLocation":1833},{"text":2005,"config":2006},"GitLab Services",{"href":1621,"dataGaName":1622,"dataGaLocation":1833},{"text":1624,"config":2008},{"href":1626,"dataGaName":1627,"dataGaLocation":1833},{"text":1629,"config":2010},{"href":1631,"dataGaName":1632,"dataGaLocation":1833},{"text":1634,"config":2012},{"href":1636,"dataGaName":1637,"dataGaLocation":1833},{"text":1639,"config":2014},{"href":1641,"dataGaName":1642,"dataGaLocation":1833},{"title":2016,"links":2017},"Unternehmen",[2018,2020,2022,2024,2026,2028,2030,2035,2040,2042,2044,2046],{"text":1662,"config":2019},{"href":1664,"dataGaName":1656,"dataGaLocation":1833},{"text":1667,"config":2021},{"href":1669,"dataGaName":1670,"dataGaLocation":1833},{"text":1675,"config":2023},{"href":1677,"dataGaName":1678,"dataGaLocation":1833},{"text":1680,"config":2025},{"href":1682,"dataGaName":1683,"dataGaLocation":1833},{"text":1685,"config":2027},{"href":1687,"dataGaName":1688,"dataGaLocation":1833},{"text":1690,"config":2029},{"href":1692,"dataGaName":1693,"dataGaLocation":1833},{"text":2031,"config":2032},"Nachhaltigkeit",{"href":2033,"dataGaName":2034,"dataGaLocation":1833},"/sustainability/","Sustainability",{"text":2036,"config":2037},"Vielfalt, Inklusion und Zugehörigkeit",{"href":2038,"dataGaName":2039,"dataGaLocation":1833},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1695,"config":2041},{"href":1697,"dataGaName":1698,"dataGaLocation":1833},{"text":1705,"config":2043},{"href":1707,"dataGaName":1708,"dataGaLocation":1833},{"text":1710,"config":2045},{"href":1712,"dataGaName":1713,"dataGaLocation":1833},{"text":2047,"config":2048},"Transparenzerklärung zu moderner Sklaverei",{"href":2049,"dataGaName":2050,"dataGaLocation":1833},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2052},[2053,2055,2058],{"text":1881,"config":2054},{"href":1883,"dataGaName":1884,"dataGaLocation":1833},{"text":2056,"config":2057},"Cookies",{"dataGaName":1893,"dataGaLocation":1833,"id":1894,"isOneTrustButton":424},{"text":1886,"config":2059},{"href":1888,"dataGaName":1889,"dataGaLocation":1833},[2061,2074],{"id":2062,"title":7,"body":1379,"config":2063,"content":2065,"description":1379,"extension":2068,"meta":2069,"navigation":424,"path":2070,"seo":2071,"stem":2072,"__hash__":2073},"blogAuthors/en-us/blog/authors/charlotte-delbosc.yml",{"template":2064},"BlogAuthor",{"name":7,"config":2066},{"headshot":2067},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1775118467/nhkerl1aupivzodb2ve9.jpg","yml",{},"/en-us/blog/authors/charlotte-delbosc",{"title":7},"en-us/blog/authors/charlotte-delbosc","9h553Ld94uJjM5eQie4c0WoJ3WieKTFSrZlsQ8IHhKA",{"id":2075,"title":8,"body":1379,"config":2076,"content":2077,"description":1379,"extension":2068,"meta":2082,"navigation":424,"path":2083,"seo":2084,"stem":2085,"__hash__":2086},"blogAuthors/en-us/blog/authors/maud-leuenberger.yml",{"template":2064},{"name":8,"config":2078,"role":2081},{"headshot":2079,"socialProof":2080},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1776854622/iesenhu0k9pgqnyiqfoc.jpg",{"gitlabHandle":373},"Senior Content Manager chez GitLab",{},"/en-us/blog/authors/maud-leuenberger",{"title":8,"description":2081},"en-us/blog/authors/maud-leuenberger","LaqQkn3JM8dFSqMf8zWc_fQXGBeis4S2Tx92tSK1PAI",[2088,2096,2104],{"title":2089,"description":2090,"heroImage":2091,"category":1375,"date":2092,"authors":2093,"slug":2095,"externalUrl":1379},"Softwareentwicklung lehren mit GitLab: ein Praxisbericht","Wie Lehrbeauftragter Stephen G. Dame GitLab for Education für Kursverwaltung, Assignment-Verteilung und direktes Code-Feedback im Hochschulalltag einsetzt.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659537/Blog/Hero%20Images/display-article-image-0679-1800x945-fy26.png","2026-04-29",[2094],"Rod Burns","teaching-software-development-the-easy-way-using-gitlab",{"title":2097,"description":2098,"heroImage":2099,"category":1375,"date":2100,"authors":2101,"slug":2103,"externalUrl":1379},"Von Jenkins zu GitLab: Der vollständige Migrationsleitfaden","Schwachstellen in Jenkins-Umgebungen systematisch adressieren – mit GitLab CI als integrierter DevSecOps-Plattform.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663000/Blog/Hero%20Images/tanukilifecycle.png","2026-03-15",[2102],"Itzik Gan Baruch","jenkins-gitlab-ultimate-guide-to-modernizing-cicd-environment",{"title":2105,"description":2106,"heroImage":2107,"category":1375,"date":2108,"authors":2109,"slug":2111,"externalUrl":1379},"KI verändert DevSecOps: Triff GitLab und erfahre, was als Nächstes kommt","Komm am 10. Februar 2026 auf die GitLab Transcend in München oder sei online live dabei. Finde heraus, wie du Produktivitätsgewinne mit Qualität, Zuverlässigkeit und Sicherheit in Einklang bringst.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1767982271/e9ogyosmuummq7j65zqg.png","2026-01-12",[2110],"Manav Khurana","ai-is-reshaping-devsecops-attend-gitlab-transcend-to-see-whats-next",{"promotions":2113},[2114,2128,2140,2152],{"id":2115,"categories":2116,"header":2118,"text":2119,"button":2120,"image":2125},"ai-modernization",[2117],"ai","Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":2121,"config":2122},"Ermittle deinen KI-Reifegrad",{"href":2123,"dataGaName":2124,"dataGaLocation":1605},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":2126},{"src":2127},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":2129,"categories":2130,"header":2132,"text":2119,"button":2133,"image":2137},"devops-modernization",[2131,1375],"product","Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":2134,"config":2135},"Ermittle deinen DevOps-Reifegrad",{"href":2136,"dataGaName":2124,"dataGaLocation":1605},"/de-de/assessments/devops-modernization-assessment/",{"config":2138},{"src":2139},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":2141,"categories":2142,"header":2144,"text":2119,"button":2145,"image":2149},"security-modernization",[2143],"security","Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":2146,"config":2147},"Ermittle deinen Sicherheitsreifegrad",{"href":2148,"dataGaName":2124,"dataGaLocation":1605},"/de-de/assessments/security-modernization-assessment/",{"config":2150},{"src":2151},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":2153,"paths":2154,"header":2157,"text":2158,"button":2159,"image":2164},"github-azure-migration",[2155,2156],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":2160,"config":2161},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":2162,"dataGaName":2163,"dataGaLocation":1605},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":2165},{"src":2139},{"header":2167,"blurb":2168,"button":2169,"secondaryButton":2174},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":2170,"config":2171},"Kostenlosen Test starten",{"href":2172,"dataGaName":1404,"dataGaLocation":2173},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1406,"config":2175},{"href":1408,"dataGaName":1409,"dataGaLocation":2173},1778622448136]