[{"data":1,"prerenderedAt":2182},["ShallowReactive",2],{"/de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli":3,"navigation-de-de":1414,"banner-de-de":1834,"footer-de-de":1843,"blog-post-authors-de-de-Kai Armstrong":2082,"blog-related-posts-de-de-give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli":2097,"blog-promotions-de-de":2120,"next-steps-de-de":2172},{"id":4,"title":5,"authors":6,"body":8,"category":1393,"date":1394,"description":1395,"extension":1396,"externalUrl":1397,"featured":555,"heroImage":1398,"meta":1399,"navigation":555,"path":1400,"seo":1401,"slug":1406,"stem":1407,"tags":1408,"template":1412,"updatedDate":1397,"__hash__":1413},"blogPosts/de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli.md","glab CLI: Strukturierter GitLab-Zugriff für KI-Agenten",[7],"Kai Armstrong",{"type":9,"value":10,"toc":1381},"minimark",[11,20,26,32,38,43,56,59,62,93,111,124,131,135,141,146,148,179,182,508,515,519,522,602,748,751,755,761,764,772,778,871,874,883,958,964,968,1006,1012,1016,1026,1032,1035,1117,1123,1130,1187,1295,1298,1302,1308,1322,1328,1334,1350,1371,1377],[12,13,14,15,19],"p",{},"Wenn Teams GitLab Duo, Claude, Cursor und andere KI-Assistenten einsetzen,\nläuft ein wachsender Teil des Entwicklungs-Workflows über einen KI-Agenten,\nder im eigenen Auftrag handelt – Issues liest, Merge Requests prüft, Pipelines\nausführt und dabei hilft, schneller zu liefern. Die meisten Entwickler(innen) nutzen\n",[16,17,18],"code",{},"glab"," bereits vom Terminal aus, um mit GitLab zu interagieren. Beides zu\nkombinieren ist der naheliegende nächste Schritt.",[12,21,22,23,25],{},"Das Problem: Ohne die richtigen Werkzeuge rät ein KI-Agent im Wesentlichen,\nwenn es um GitLab-Projekte geht. Er könnte die Details eines Issues\nhalluzinieren, den er nie gesehen hat, einen Merge Request auf Basis veralteter\nTrainingsdaten zusammenfassen statt anhand seines tatsächlichen Zustands – oder\nverlangen, dass Kontext manuell aus einem Browser-Tab kopiert und in ein\nChat-Fenster eingefügt wird, bevor überhaupt begonnen werden kann. Jede dieser\nUmgehungslösungen ist Reibung: Sie verlangsamt die Arbeit, eröffnet\nFehlermöglichkeiten und setzt eine harte Obergrenze dafür, was der Agent\ntatsächlich leisten kann. Das GitLab CLI (",[16,24,18],{},") ändert das, indem es Agenten\neine direkte, zuverlässige Schnittstelle zu Projekten gibt.",[12,27,28,29,31],{},"Mit ",[16,30,18],{}," ruft der Agent das Benötigte direkt von GitLab ab, handelt darauf\nund meldet das Ergebnis zurück – sodass weniger Zeit damit verbracht wird,\nInformationen weiterzugeben, und mehr Zeit für die eigentliche Arbeit bleibt.",[12,33,34,35,37],{},"In diesem Tutorial wird gezeigt, wie ",[16,36,18],{}," KI-Agenten strukturierten,\nzuverlässigen Zugriff auf GitLab-Projekte ermöglicht – und wie das einen\nschnelleren, leistungsfähigeren Entwicklungs-Workflow freischaltet.",[39,40,42],"h2",{"id":41},"ki-agent-über-mcp-mit-gitlab-verbinden","KI-Agent über MCP mit GitLab verbinden",[12,44,45,46,48,49,55],{},"Der direkteste Weg, KI-Workflows deutlich leistungsfähiger zu machen, besteht\ndarin, dem KI-Agenten nativen Zugriff auf ",[16,47,18],{}," über das Model Context\nProtocol (",[50,51,54],"a",{"href":52,"rel":53},"https://about.gitlab.com/topics/ai/model-context-protocol/",[],"MCP",")\nzu geben.",[12,57,58],{},"MCP ist ein offener Standard, der KI-Werkzeugen ermöglicht, externe Fähigkeiten\nzur Laufzeit zu entdecken und zu nutzen. Nach der Verbindung kann der\nKI-Assistent Issues lesen, Merge Requests kommentieren, Pipeline-Status prüfen\nund zurück in GitLab schreiben – ohne etwas aus der UI zu kopieren oder auch\nnur einen einzigen API-Aufruf selbst zu schreiben.",[12,60,61],{},"Einstieg mit:",[63,64,69],"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-shell shiki shiki-themes github-light","# MCP-Server von glab starten\nglab mcp serve\n","shell","",[16,70,71,80],{"__ignoreMap":68},[72,73,76],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"sAwPA","# MCP-Server von glab starten\n",[72,81,83,86,90],{"class":74,"line":82},2,[72,84,18],{"class":85},"s7eDp",[72,87,89],{"class":88},"sYBdl"," mcp",[72,91,92],{"class":88}," serve\n",[12,94,95,96,100,101,104,105,110],{},"Sobald der MCP-Client konfiguriert ist, kann die KI Fragen wie ",[97,98,99],"em",{},"„Was ist der\nStatus meiner offenen MRs?\""," oder ",[97,102,103],{},"„Gibt es fehlgeschlagene Pipelines auf\nmain?\""," beantworten, indem sie GitLab direkt abfragt – nicht durch Scraping der\nWeb-UI, nicht durch veraltete Trainingsdaten. Die\n",[50,106,109],{"href":107,"rel":108},"https://docs.gitlab.com/cli/",[],"vollständige Setup-Dokumentation"," enthält\nKonfigurationsschritte für Claude Code, Cursor und andere Editoren.",[12,112,113,114,116,117,120,121,123],{},"Ein wichtiges Detail: ",[16,115,18],{}," fügt automatisch ",[16,118,119],{},"--output json"," hinzu, wenn es\nüber MCP aufgerufen wird – für jeden Befehl, der das unterstützt. Der Agent\nerhält saubere, strukturierte Daten, ohne dass über Ausgabeformate nachgedacht\nwerden muss. Und da ",[16,122,18],{}," das offizielle MCP SDK verwendet, bleibt es\nkompatibel, wenn sich das Protokoll weiterentwickelt.",[12,125,126,127,130],{},"Wir haben bewusst entschieden, ",[97,128,129],{},"welche"," Befehle über MCP zugänglich sind.\nBefehle, die interaktive Terminalausgabe erfordern, sind absichtlich\nausgeschlossen – der Agent bleibt nie in einem Wartezustand für Eingaben, die\nnie kommen. Was zugänglich ist, funktioniert zuverlässig im Agenten-Kontext.",[39,132,134],{"id":133},"ki-am-code-review-beteiligen","KI am Code-Review beteiligen",[12,136,137,138,140],{},"Die meisten Entwickler(innen) haben einen Rückstand an MRs, die auf Review warten.\nDas ist einer der zeitintensivsten Teile der Arbeit – und einer der besten\nAnsatzpunkte für KI. Mit ",[16,139,18],{}," beobachtet der Agent die Review-Queue nicht\nnur, sondern arbeitet sie gemeinsam durch.",[142,143,145],"h3",{"id":144},"genau-sehen-was-noch-offen-ist","Genau sehen, was noch offen ist",[12,147,61],{},[63,149,151],{"className":65,"code":150,"language":67,"meta":68,"style":68},"glab mr view 2677 --comments --unresolved --output json\n",[16,152,153],{"__ignoreMap":68},[72,154,155,157,160,163,167,170,173,176],{"class":74,"line":75},[72,156,18],{"class":85},[72,158,159],{"class":88}," mr",[72,161,162],{"class":88}," view",[72,164,166],{"class":165},"sYu0t"," 2677",[72,168,169],{"class":165}," --comments",[72,171,172],{"class":165}," --unresolved",[72,174,175],{"class":165}," --output",[72,177,178],{"class":88}," json\n",[12,180,181],{},"Dieser Befehl gibt den vollständigen MR zurück: Metadaten, Beschreibung und\njede ungelöste Diskussion als einzelnes strukturiertes JSON-Payload. Das gibt\nder KI alles, was sie braucht: welche Threads offen sind, was der Reviewer\nangefragt hat und in welchem Kontext. Kein Tab-Wechsel, kein manuelles Kopieren\neinzelner Kommentare.",[63,183,187],{"className":184,"code":185,"language":186,"meta":68,"style":68},"language-json shiki shiki-themes github-light","{\n  \"id\": 2677,\n  \"title\": \"feat: add OAuth2 support\",\n  \"state\": \"opened\",\n  \"author\": { \"username\": \"jdwick\" },\n  \"labels\": [\"backend\", \"needs-review\"],\n  \"blocking_discussions_resolved\": false,\n  \"discussions\": [\n    {\n      \"id\": \"3107030349\",\n      \"resolved\": false,\n      \"notes\": [\n        {\n          \"author\": { \"username\": \"dmurphy\" },\n          \"body\": \"This error handling will swallow panics — consider wrapping with recover()\",\n          \"created_at\": \"2026-03-14T09:23:11.000Z\"\n        }\n      ]\n    },\n    {\n      \"id\": \"3107030412\",\n      \"resolved\": false,\n      \"notes\": [\n        {\n          \"author\": { \"username\": \"sreeves\" },\n          \"body\": \"Token refresh logic needs a test for the expired token case\",\n          \"created_at\": \"2026-03-14T10:05:44.000Z\"\n        }\n      ]\n    }\n  ]\n}\n","json",[16,188,189,195,209,222,235,255,276,289,298,304,317,329,337,343,360,373,384,390,396,402,407,419,430,437,442,458,470,480,485,490,496,502],{"__ignoreMap":68},[72,190,191],{"class":74,"line":75},[72,192,194],{"class":193},"sgsFI","{\n",[72,196,197,200,203,206],{"class":74,"line":82},[72,198,199],{"class":165},"  \"id\"",[72,201,202],{"class":193},": ",[72,204,205],{"class":165},"2677",[72,207,208],{"class":193},",\n",[72,210,212,215,217,220],{"class":74,"line":211},3,[72,213,214],{"class":165},"  \"title\"",[72,216,202],{"class":193},[72,218,219],{"class":88},"\"feat: add OAuth2 support\"",[72,221,208],{"class":193},[72,223,225,228,230,233],{"class":74,"line":224},4,[72,226,227],{"class":165},"  \"state\"",[72,229,202],{"class":193},[72,231,232],{"class":88},"\"opened\"",[72,234,208],{"class":193},[72,236,238,241,244,247,249,252],{"class":74,"line":237},5,[72,239,240],{"class":165},"  \"author\"",[72,242,243],{"class":193},": { ",[72,245,246],{"class":165},"\"username\"",[72,248,202],{"class":193},[72,250,251],{"class":88},"\"jdwick\"",[72,253,254],{"class":193}," },\n",[72,256,258,261,264,267,270,273],{"class":74,"line":257},6,[72,259,260],{"class":165},"  \"labels\"",[72,262,263],{"class":193},": [",[72,265,266],{"class":88},"\"backend\"",[72,268,269],{"class":193},", ",[72,271,272],{"class":88},"\"needs-review\"",[72,274,275],{"class":193},"],\n",[72,277,279,282,284,287],{"class":74,"line":278},7,[72,280,281],{"class":165},"  \"blocking_discussions_resolved\"",[72,283,202],{"class":193},[72,285,286],{"class":165},"false",[72,288,208],{"class":193},[72,290,292,295],{"class":74,"line":291},8,[72,293,294],{"class":165},"  \"discussions\"",[72,296,297],{"class":193},": [\n",[72,299,301],{"class":74,"line":300},9,[72,302,303],{"class":193},"    {\n",[72,305,307,310,312,315],{"class":74,"line":306},10,[72,308,309],{"class":165},"      \"id\"",[72,311,202],{"class":193},[72,313,314],{"class":88},"\"3107030349\"",[72,316,208],{"class":193},[72,318,320,323,325,327],{"class":74,"line":319},11,[72,321,322],{"class":165},"      \"resolved\"",[72,324,202],{"class":193},[72,326,286],{"class":165},[72,328,208],{"class":193},[72,330,332,335],{"class":74,"line":331},12,[72,333,334],{"class":165},"      \"notes\"",[72,336,297],{"class":193},[72,338,340],{"class":74,"line":339},13,[72,341,342],{"class":193},"        {\n",[72,344,346,349,351,353,355,358],{"class":74,"line":345},14,[72,347,348],{"class":165},"          \"author\"",[72,350,243],{"class":193},[72,352,246],{"class":165},[72,354,202],{"class":193},[72,356,357],{"class":88},"\"dmurphy\"",[72,359,254],{"class":193},[72,361,363,366,368,371],{"class":74,"line":362},15,[72,364,365],{"class":165},"          \"body\"",[72,367,202],{"class":193},[72,369,370],{"class":88},"\"This error handling will swallow panics — consider wrapping with recover()\"",[72,372,208],{"class":193},[72,374,376,379,381],{"class":74,"line":375},16,[72,377,378],{"class":165},"          \"created_at\"",[72,380,202],{"class":193},[72,382,383],{"class":88},"\"2026-03-14T09:23:11.000Z\"\n",[72,385,387],{"class":74,"line":386},17,[72,388,389],{"class":193},"        }\n",[72,391,393],{"class":74,"line":392},18,[72,394,395],{"class":193},"      ]\n",[72,397,399],{"class":74,"line":398},19,[72,400,401],{"class":193},"    },\n",[72,403,405],{"class":74,"line":404},20,[72,406,303],{"class":193},[72,408,410,412,414,417],{"class":74,"line":409},21,[72,411,309],{"class":165},[72,413,202],{"class":193},[72,415,416],{"class":88},"\"3107030412\"",[72,418,208],{"class":193},[72,420,422,424,426,428],{"class":74,"line":421},22,[72,423,322],{"class":165},[72,425,202],{"class":193},[72,427,286],{"class":165},[72,429,208],{"class":193},[72,431,433,435],{"class":74,"line":432},23,[72,434,334],{"class":165},[72,436,297],{"class":193},[72,438,440],{"class":74,"line":439},24,[72,441,342],{"class":193},[72,443,445,447,449,451,453,456],{"class":74,"line":444},25,[72,446,348],{"class":165},[72,448,243],{"class":193},[72,450,246],{"class":165},[72,452,202],{"class":193},[72,454,455],{"class":88},"\"sreeves\"",[72,457,254],{"class":193},[72,459,461,463,465,468],{"class":74,"line":460},26,[72,462,365],{"class":165},[72,464,202],{"class":193},[72,466,467],{"class":88},"\"Token refresh logic needs a test for the expired token case\"",[72,469,208],{"class":193},[72,471,473,475,477],{"class":74,"line":472},27,[72,474,378],{"class":165},[72,476,202],{"class":193},[72,478,479],{"class":88},"\"2026-03-14T10:05:44.000Z\"\n",[72,481,483],{"class":74,"line":482},28,[72,484,389],{"class":193},[72,486,488],{"class":74,"line":487},29,[72,489,395],{"class":193},[72,491,493],{"class":74,"line":492},30,[72,494,495],{"class":193},"    }\n",[72,497,499],{"class":74,"line":498},31,[72,500,501],{"class":193},"  ]\n",[72,503,505],{"class":74,"line":504},32,[72,506,507],{"class":193},"}\n",[12,509,510,511,514],{},"Statt jeden Thread selbst durchzulesen, lässt sich der Agent fragen:\n",[97,512,513],{},"„Was muss ich in MR 2677 noch beheben?\""," – und erhält eine priorisierte\nZusammenfassung mit Änderungsvorschlägen. Das alles aus einem einzigen Befehl.",[142,516,518],{"id":517},"den-kreislauf-programmatisch-schließen","Den Kreislauf programmatisch schließen",[12,520,521],{},"Sobald der KI geholfen hat, das Feedback zu adressieren, kann sie Diskussionen\nauflösen:",[63,523,525],{"className":65,"code":524,"language":67,"meta":68,"style":68},"# Alle Diskussionen auflisten – strukturiert, bereit für den Agenten\nglab mr note list 456 --output json\n\n# Diskussion auflösen, sobald das Feedback adressiert wurde\nglab mr note resolve 456 3107030349\n\n# Wieder öffnen, wenn etwas erneut geprüft werden muss\nglab mr note reopen 456 3107030349\n",[16,526,527,532,551,557,562,578,582,587],{"__ignoreMap":68},[72,528,529],{"class":74,"line":75},[72,530,531],{"class":78},"# Alle Diskussionen auflisten – strukturiert, bereit für den Agenten\n",[72,533,534,536,538,541,544,547,549],{"class":74,"line":82},[72,535,18],{"class":85},[72,537,159],{"class":88},[72,539,540],{"class":88}," note",[72,542,543],{"class":88}," list",[72,545,546],{"class":165}," 456",[72,548,175],{"class":165},[72,550,178],{"class":88},[72,552,553],{"class":74,"line":211},[72,554,556],{"emptyLinePlaceholder":555},true,"\n",[72,558,559],{"class":74,"line":224},[72,560,561],{"class":78},"# Diskussion auflösen, sobald das Feedback adressiert wurde\n",[72,563,564,566,568,570,573,575],{"class":74,"line":237},[72,565,18],{"class":85},[72,567,159],{"class":88},[72,569,540],{"class":88},[72,571,572],{"class":88}," resolve",[72,574,546],{"class":165},[72,576,577],{"class":165}," 3107030349\n",[72,579,580],{"class":74,"line":257},[72,581,556],{"emptyLinePlaceholder":555},[72,583,584],{"class":74,"line":278},[72,585,586],{"class":78},"# Wieder öffnen, wenn etwas erneut geprüft werden muss\n",[72,588,589,591,593,595,598,600],{"class":74,"line":291},[72,590,18],{"class":85},[72,592,159],{"class":88},[72,594,540],{"class":88},[72,596,597],{"class":88}," reopen",[72,599,546],{"class":165},[72,601,577],{"class":165},[63,603,605],{"className":184,"code":604,"language":186,"meta":68,"style":68},"[\n  {\n    \"id\": 3107030349,\n    \"body\": \"This error handling will swallow panics — consider wrapping with recover()\",\n    \"author\": { \"username\": \"dmurphy\" },\n    \"resolved\": false,\n    \"resolvable\": true\n  },\n  {\n    \"id\": 3107030412,\n    \"body\": \"Token refresh logic needs a test for the expired token case\",\n    \"author\": { \"username\": \"sreeves\" },\n    \"resolved\": false,\n    \"resolvable\": true\n  }\n]\n",[16,606,607,612,617,629,640,655,666,676,681,685,696,706,720,730,738,743],{"__ignoreMap":68},[72,608,609],{"class":74,"line":75},[72,610,611],{"class":193},"[\n",[72,613,614],{"class":74,"line":82},[72,615,616],{"class":193},"  {\n",[72,618,619,622,624,627],{"class":74,"line":211},[72,620,621],{"class":165},"    \"id\"",[72,623,202],{"class":193},[72,625,626],{"class":165},"3107030349",[72,628,208],{"class":193},[72,630,631,634,636,638],{"class":74,"line":224},[72,632,633],{"class":165},"    \"body\"",[72,635,202],{"class":193},[72,637,370],{"class":88},[72,639,208],{"class":193},[72,641,642,645,647,649,651,653],{"class":74,"line":237},[72,643,644],{"class":165},"    \"author\"",[72,646,243],{"class":193},[72,648,246],{"class":165},[72,650,202],{"class":193},[72,652,357],{"class":88},[72,654,254],{"class":193},[72,656,657,660,662,664],{"class":74,"line":257},[72,658,659],{"class":165},"    \"resolved\"",[72,661,202],{"class":193},[72,663,286],{"class":165},[72,665,208],{"class":193},[72,667,668,671,673],{"class":74,"line":278},[72,669,670],{"class":165},"    \"resolvable\"",[72,672,202],{"class":193},[72,674,675],{"class":165},"true\n",[72,677,678],{"class":74,"line":291},[72,679,680],{"class":193},"  },\n",[72,682,683],{"class":74,"line":300},[72,684,616],{"class":193},[72,686,687,689,691,694],{"class":74,"line":306},[72,688,621],{"class":165},[72,690,202],{"class":193},[72,692,693],{"class":165},"3107030412",[72,695,208],{"class":193},[72,697,698,700,702,704],{"class":74,"line":319},[72,699,633],{"class":165},[72,701,202],{"class":193},[72,703,467],{"class":88},[72,705,208],{"class":193},[72,707,708,710,712,714,716,718],{"class":74,"line":331},[72,709,644],{"class":165},[72,711,243],{"class":193},[72,713,246],{"class":165},[72,715,202],{"class":193},[72,717,455],{"class":88},[72,719,254],{"class":193},[72,721,722,724,726,728],{"class":74,"line":339},[72,723,659],{"class":165},[72,725,202],{"class":193},[72,727,286],{"class":165},[72,729,208],{"class":193},[72,731,732,734,736],{"class":74,"line":345},[72,733,670],{"class":165},[72,735,202],{"class":193},[72,737,675],{"class":165},[72,739,740],{"class":74,"line":362},[72,741,742],{"class":193},"  }\n",[72,744,745],{"class":74,"line":375},[72,746,747],{"class":193},"]\n",[12,749,750],{},"Note-IDs sind direkt in der GitLab-UI und der API sichtbar – kein zusätzlicher\nLookup nötig. Der Agent kann die vollständige Liste durcharbeiten, jeden Fix\nprüfen und dabei auflösen.",[39,752,754],{"id":753},"mit-der-ki-effektiver-über-code-sprechen","Mit der KI effektiver über Code sprechen",[12,756,757,758,760],{},"Auch ohne laufenden MCP-Server gibt es eine einfachere Umstellung, die einen\ngroßen Unterschied macht: ",[16,759,18],{}," einsetzen, um der KI bessere Informationen zu\nliefern.",[12,762,763],{},"Beim letzten Mal, als ein KI-Assistent bei der Issue-Triage oder beim Debuggen\neiner fehlgeschlagenen Pipeline geholfen hat, wurde wahrscheinlich etwas Text\naus der GitLab-UI kopiert und in den Chat eingefügt. Das ist es, womit der\nAgent tatsächlich arbeitet:",[63,765,770],{"className":766,"code":768,"language":769,"meta":68},[767],"language-text","open issues: 12 • milestone: 17.10 • label: bug, needs-triage ...\n","text",[16,771,768],{"__ignoreMap":68},[12,773,774,775,777],{},"Im Vergleich dazu, was er mit ",[16,776,18],{}," erhält:",[63,779,781],{"className":184,"code":780,"language":186,"meta":68,"style":68},"[\n  {\n    \"iid\": 902,\n    \"title\": \"Pipeline fails on merge to main\",\n    \"labels\": [\"bug\", \"needs-triage\"],\n    \"milestone\": { \"title\": \"17.10\" },\n    \"assignees\": []\n  },\n  ...\n]\n",[16,782,783,787,791,803,815,832,849,857,861,867],{"__ignoreMap":68},[72,784,785],{"class":74,"line":75},[72,786,611],{"class":193},[72,788,789],{"class":74,"line":82},[72,790,616],{"class":193},[72,792,793,796,798,801],{"class":74,"line":211},[72,794,795],{"class":165},"    \"iid\"",[72,797,202],{"class":193},[72,799,800],{"class":165},"902",[72,802,208],{"class":193},[72,804,805,808,810,813],{"class":74,"line":224},[72,806,807],{"class":165},"    \"title\"",[72,809,202],{"class":193},[72,811,812],{"class":88},"\"Pipeline fails on merge to main\"",[72,814,208],{"class":193},[72,816,817,820,822,825,827,830],{"class":74,"line":237},[72,818,819],{"class":165},"    \"labels\"",[72,821,263],{"class":193},[72,823,824],{"class":88},"\"bug\"",[72,826,269],{"class":193},[72,828,829],{"class":88},"\"needs-triage\"",[72,831,275],{"class":193},[72,833,834,837,839,842,844,847],{"class":74,"line":257},[72,835,836],{"class":165},"    \"milestone\"",[72,838,243],{"class":193},[72,840,841],{"class":165},"\"title\"",[72,843,202],{"class":193},[72,845,846],{"class":88},"\"17.10\"",[72,848,254],{"class":193},[72,850,851,854],{"class":74,"line":278},[72,852,853],{"class":165},"    \"assignees\"",[72,855,856],{"class":193},": []\n",[72,858,859],{"class":74,"line":291},[72,860,680],{"class":193},[72,862,863],{"class":74,"line":300},[72,864,866],{"class":865},"sB1qb","  ...\n",[72,868,869],{"class":74,"line":306},[72,870,747],{"class":193},[12,872,873],{},"Strukturiert, typisiert, vollständig – keine Mehrdeutigkeit, kein\nInterpretationsaufwand beim Parsen. Das ist der Unterschied zwischen einem\nAgenten, der handeln kann, und einem, der Rückfragen stellen muss.",[12,875,876,877,879,880,882],{},"Mit dem MCP-Server passiert das automatisch: ",[16,878,18],{}," fügt ",[16,881,119],{}," für\njeden Befehl hinzu, der das unterstützt. Beim direkten Arbeiten im Terminal\neinfach das Flag selbst ergänzen:",[63,884,886],{"className":65,"code":885,"language":67,"meta":68,"style":68},"# Offene Issues für Triage abrufen\nglab issue list --label \"needs-triage\" --output json\n\n# Pipeline-Status prüfen\nglab ci status --output json\n\n# Vollständige MR-Details abrufen\nglab mr view 456 --output json\n",[16,887,888,893,912,916,921,935,939,944],{"__ignoreMap":68},[72,889,890],{"class":74,"line":75},[72,891,892],{"class":78},"# Offene Issues für Triage abrufen\n",[72,894,895,897,900,902,905,908,910],{"class":74,"line":82},[72,896,18],{"class":85},[72,898,899],{"class":88}," issue",[72,901,543],{"class":88},[72,903,904],{"class":165}," --label",[72,906,907],{"class":88}," \"needs-triage\"",[72,909,175],{"class":165},[72,911,178],{"class":88},[72,913,914],{"class":74,"line":211},[72,915,556],{"emptyLinePlaceholder":555},[72,917,918],{"class":74,"line":224},[72,919,920],{"class":78},"# Pipeline-Status prüfen\n",[72,922,923,925,928,931,933],{"class":74,"line":237},[72,924,18],{"class":85},[72,926,927],{"class":88}," ci",[72,929,930],{"class":88}," status",[72,932,175],{"class":165},[72,934,178],{"class":88},[72,936,937],{"class":74,"line":257},[72,938,556],{"emptyLinePlaceholder":555},[72,940,941],{"class":74,"line":278},[72,942,943],{"class":78},"# Vollständige MR-Details abrufen\n",[72,945,946,948,950,952,954,956],{"class":74,"line":291},[72,947,18],{"class":85},[72,949,159],{"class":88},[72,951,162],{"class":88},[72,953,546],{"class":165},[72,955,175],{"class":165},[72,957,178],{"class":88},[12,959,960,961,963],{},"Die JSON-Ausgabe wurde in letzten Releases erheblich erweitert. Sie deckt jetzt\nCI-Status, Milestones, Labels, Releases, Schedules, Cluster-Agenten, Work\nItems, MR-Genehmiger, Repository-Mitwirkende und mehr ab. Was ",[16,962,18],{}," abrufen\nkann, kann die KI sauber verarbeiten.",[142,965,967],{"id":966},"ein-echter-workflow","Ein echter Workflow",[63,969,971],{"className":65,"code":970,"language":67,"meta":68,"style":68},"$ glab issue list --label \"needs-triage\" --milestone \"17.10\" \\\n--output json\n",[16,972,973,998],{"__ignoreMap":68},[72,974,975,978,981,983,985,987,989,992,995],{"class":74,"line":75},[72,976,977],{"class":85},"$",[72,979,980],{"class":88}," glab",[72,982,899],{"class":88},[72,984,543],{"class":88},[72,986,904],{"class":165},[72,988,907],{"class":88},[72,990,991],{"class":165}," --milestone",[72,993,994],{"class":88}," \"17.10\"",[72,996,997],{"class":165}," \\\n",[72,999,1000,1003],{"class":74,"line":82},[72,1001,1002],{"class":193},"--output ",[72,1004,1005],{"class":88},"json\n",[63,1007,1010],{"className":1008,"code":1009,"language":769,"meta":68},[767],"Agent: I found 2 unassigned bugs in the 17.10 milestone that need triage:\n1. #902 — Pipeline fails on merge to main (opened 5 days ago)\n2. #903 — Auth token not refreshing on expiry (opened 4 days ago)\nBoth are unassigned. Want me to draft triage notes and suggest assignees based on recent commit history?\n",[16,1011,1009],{"__ignoreMap":68},[39,1013,1015],{"id":1014},"der-agent-ist-keineswegs-auf-eingebaute-befehle-beschränkt","Der Agent ist keineswegs auf eingebaute Befehle beschränkt",[12,1017,1018,1019,1021,1022,1025],{},"Die nativen Befehle von ",[16,1020,18],{}," decken die gängigsten Workflows ab – aber der\nAgent ist nicht darauf beschränkt. Über ",[16,1023,1024],{},"glab api"," hat er authentifizierten\nZugriff auf die vollständige GitLab REST- und GraphQL-API-Oberfläche, mit\nderselben Session, ohne zusätzliche Credentials oder Konfiguration.",[12,1027,1028,1029,1031],{},"Das ist ein wesentlicher Unterschied. Die meisten CLI-Werkzeuge beschränken\nsich auf das, was ihre Befehle abbilden. Mit ",[16,1030,18],{}," gilt: Wenn GitLabs API es\nunterstützt, kann der Agent es tun – immer aus einem vertrauenswürdigen,\nauthentifizierten Kontext heraus.",[12,1033,1034],{},"Ein praktisches Beispiel: nur die Liste der geänderten Dateien in einem MR\nabrufen, bevor entschieden wird, welche Diffs vollständig geladen werden:",[63,1036,1038],{"className":65,"code":1037,"language":67,"meta":68,"style":68},"# Geänderte Dateipfade abrufen – leichtgewichtig, noch kein Diff-Inhalt\nglab api \"/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/diffs?per_page=100\" \\\n| jq '.[].new_path'\n\n# Dann nur die spezifische Datei laden, die der Agent benötigt\nglab api \"/projects/$CI_PROJECT_ID/merge_requests/$CI_MERGE_REQUEST_IID/diffs?per_page=100\" \\\n| jq '.[] | select(.new_path == \"path/to/file.go\")'\n",[16,1039,1040,1045,1069,1081,1085,1090,1108],{"__ignoreMap":68},[72,1041,1042],{"class":74,"line":75},[72,1043,1044],{"class":78},"# Geänderte Dateipfade abrufen – leichtgewichtig, noch kein Diff-Inhalt\n",[72,1046,1047,1049,1052,1055,1058,1061,1064,1067],{"class":74,"line":82},[72,1048,18],{"class":85},[72,1050,1051],{"class":88}," api",[72,1053,1054],{"class":88}," \"/projects/",[72,1056,1057],{"class":193},"$CI_PROJECT_ID",[72,1059,1060],{"class":88},"/merge_requests/",[72,1062,1063],{"class":193},"$CI_MERGE_REQUEST_IID",[72,1065,1066],{"class":88},"/diffs?per_page=100\"",[72,1068,997],{"class":165},[72,1070,1071,1075,1078],{"class":74,"line":211},[72,1072,1074],{"class":1073},"sD7c4","|",[72,1076,1077],{"class":85}," jq",[72,1079,1080],{"class":88}," '.[].new_path'\n",[72,1082,1083],{"class":74,"line":224},[72,1084,556],{"emptyLinePlaceholder":555},[72,1086,1087],{"class":74,"line":237},[72,1088,1089],{"class":78},"# Dann nur die spezifische Datei laden, die der Agent benötigt\n",[72,1091,1092,1094,1096,1098,1100,1102,1104,1106],{"class":74,"line":257},[72,1093,18],{"class":85},[72,1095,1051],{"class":88},[72,1097,1054],{"class":88},[72,1099,1057],{"class":193},[72,1101,1060],{"class":88},[72,1103,1063],{"class":193},[72,1105,1066],{"class":88},[72,1107,997],{"class":165},[72,1109,1110,1112,1114],{"class":74,"line":278},[72,1111,1074],{"class":1073},[72,1113,1077],{"class":85},[72,1115,1116],{"class":88}," '.[] | select(.new_path == \"path/to/file.go\")'\n",[63,1118,1121],{"className":1119,"code":1120,"language":769,"meta":68},[767],"\"internal/auth/token.go\"\n\"internal/auth/token_test.go\"\n\"internal/oauth/refresh.go\"\n",[16,1122,1120],{"__ignoreMap":68},[12,1124,1125,1126,1129],{},"Für alles, was die REST API nicht abdeckt (Epics, bestimmte Work-Item-Abfragen,\nkomplexe projektübergreifende Daten), bietet ",[16,1127,1128],{},"glab api graphql"," die vollständige\nGraphQL-Schnittstelle:",[63,1131,1133],{"className":65,"code":1132,"language":67,"meta":68,"style":68},"glab api graphql -f query='\n{\n  project(fullPath: \"gitlab-org/gitlab\") {\n    mergeRequest(iid: \"12345\") {\n      title\n      reviewers { nodes { username } }\n    }\n  }\n}'\n",[16,1134,1135,1150,1154,1159,1164,1169,1174,1178,1182],{"__ignoreMap":68},[72,1136,1137,1139,1141,1144,1147],{"class":74,"line":75},[72,1138,18],{"class":85},[72,1140,1051],{"class":88},[72,1142,1143],{"class":88}," graphql",[72,1145,1146],{"class":165}," -f",[72,1148,1149],{"class":88}," query='\n",[72,1151,1152],{"class":74,"line":82},[72,1153,194],{"class":88},[72,1155,1156],{"class":74,"line":211},[72,1157,1158],{"class":88},"  project(fullPath: \"gitlab-org/gitlab\") {\n",[72,1160,1161],{"class":74,"line":224},[72,1162,1163],{"class":88},"    mergeRequest(iid: \"12345\") {\n",[72,1165,1166],{"class":74,"line":237},[72,1167,1168],{"class":88},"      title\n",[72,1170,1171],{"class":74,"line":257},[72,1172,1173],{"class":88},"      reviewers { nodes { username } }\n",[72,1175,1176],{"class":74,"line":278},[72,1177,495],{"class":88},[72,1179,1180],{"class":74,"line":291},[72,1181,742],{"class":88},[72,1183,1184],{"class":74,"line":300},[72,1185,1186],{"class":88},"}'\n",[63,1188,1190],{"className":184,"code":1189,"language":186,"meta":68,"style":68},"{\n  \"data\": {\n    \"project\": {\n      \"mergeRequest\": {\n        \"title\": \"feat: add OAuth2 support\",\n        \"reviewers\": {\n          \"nodes\": [\n            { \"username\": \"dmurphy\" },\n            { \"username\": \"sreeves\" }\n          ]\n        }\n      }\n    }\n  }\n}\n",[16,1191,1192,1196,1204,1211,1218,1229,1236,1243,1256,1269,1274,1278,1283,1287,1291],{"__ignoreMap":68},[72,1193,1194],{"class":74,"line":75},[72,1195,194],{"class":193},[72,1197,1198,1201],{"class":74,"line":82},[72,1199,1200],{"class":165},"  \"data\"",[72,1202,1203],{"class":193},": {\n",[72,1205,1206,1209],{"class":74,"line":211},[72,1207,1208],{"class":165},"    \"project\"",[72,1210,1203],{"class":193},[72,1212,1213,1216],{"class":74,"line":224},[72,1214,1215],{"class":165},"      \"mergeRequest\"",[72,1217,1203],{"class":193},[72,1219,1220,1223,1225,1227],{"class":74,"line":237},[72,1221,1222],{"class":165},"        \"title\"",[72,1224,202],{"class":193},[72,1226,219],{"class":88},[72,1228,208],{"class":193},[72,1230,1231,1234],{"class":74,"line":257},[72,1232,1233],{"class":165},"        \"reviewers\"",[72,1235,1203],{"class":193},[72,1237,1238,1241],{"class":74,"line":278},[72,1239,1240],{"class":165},"          \"nodes\"",[72,1242,297],{"class":193},[72,1244,1245,1248,1250,1252,1254],{"class":74,"line":291},[72,1246,1247],{"class":193},"            { ",[72,1249,246],{"class":165},[72,1251,202],{"class":193},[72,1253,357],{"class":88},[72,1255,254],{"class":193},[72,1257,1258,1260,1262,1264,1266],{"class":74,"line":300},[72,1259,1247],{"class":193},[72,1261,246],{"class":165},[72,1263,202],{"class":193},[72,1265,455],{"class":88},[72,1267,1268],{"class":193}," }\n",[72,1270,1271],{"class":74,"line":306},[72,1272,1273],{"class":193},"          ]\n",[72,1275,1276],{"class":74,"line":319},[72,1277,389],{"class":193},[72,1279,1280],{"class":74,"line":331},[72,1281,1282],{"class":193},"      }\n",[72,1284,1285],{"class":74,"line":339},[72,1286,495],{"class":193},[72,1288,1289],{"class":74,"line":345},[72,1290,742],{"class":193},[72,1292,1293],{"class":74,"line":362},[72,1294,507],{"class":193},[12,1296,1297],{},"Ein einziger, authentifizierter Einstiegspunkt zu allem, was GitLab\nbereitstellt – ohne Token-Jonglieren, separate API-Clients oder\nKonfigurationsaufwand.",[39,1299,1301],{"id":1300},"was-als-nächstes-kommt-und-feedback","Was als Nächstes kommt – und Feedback",[12,1303,1304,1305,1307],{},"Zwei Verbesserungen, an denen aktiv gearbeitet wird, werden ",[16,1306,18],{}," für\nAgenten-Workflows noch nützlicher machen:",[12,1309,1310,1314,1315,1318,1319,1321],{},[1311,1312,1313],"strong",{},"Auf Agenten abgestimmter Hilfetext."," Heute ist die ",[16,1316,1317],{},"--help","-Ausgabe für\nMenschen am Terminal geschrieben. Sie wird aktualisiert, um für jeden\ninteraktiven Befehl die nicht-interaktive Alternative anzuzeigen, Befehle mit\n",[16,1320,119],{},"-Unterstützung zu kennzeichnen und Hilfe generell zu einer\nnützlichen Ressource für Agenten zu machen, die Fähigkeiten zur Laufzeit\nentdecken – nicht nur für Menschen.",[12,1323,1324,1327],{},[1311,1325,1326],{},"Besser maschinenlesbare Fehlermeldungen."," Wenn heute etwas schiefläuft,\nerhalten Agenten dieselben menschenlesbaren Fehlermeldungen wie\nTerminal-Nutzende. Das wird geändert: Fehler im JSON-Modus geben strukturierte\nAusgaben zurück, die dem Agenten die Informationen liefern, die er braucht, um\nFehler sauber zu behandeln, intelligent zu wiederholen oder den richtigen\nKontext zurückzugeben.",[12,1329,1330,1331,1333],{},"Beide Punkte sind in aktiver Entwicklung. Wer ",[16,1332,18],{}," bereits mit einem\nKI-Werkzeug einsetzt, ist genau die Zielgruppe, deren Erfahrungen uns\ninteressieren.",[1335,1336,1337,1344],"ul",{},[1338,1339,1340,1343],"li",{},[1311,1341,1342],{},"Welche Reibungspunkte gibt es?"," Befehle, die sich in Agenten-Kontexten\nnicht gut verhalten, Fehlermeldungen ohne Handlungsanleitung, Lücken in der\nJSON-Ausgabe. Feedback ist willkommen.",[1338,1345,1346,1349],{},[1311,1347,1348],{},"Welche Workflows wurden erschlossen?"," Reale Nutzungsmuster helfen dabei,\nPrioritäten für die weitere Entwicklung zu setzen.",[12,1351,1352,1353,1358,1359,1364,1365,1370],{},"Die Diskussion findet im\n",[50,1354,1357],{"href":1355,"rel":1356},"https://gitlab.com/gitlab-org/cli/-/issues/8177",[],"Feedback-Issue"," statt –\ndort wird die Roadmap für Agenten-Freundlichkeit gestaltet, und Beiträge haben\ndort den direktesten Einfluss. Wer eine spezifische Lücke gefunden hat,\nkann ein ",[50,1360,1363],{"href":1361,"rel":1362},"https://gitlab.com/gitlab-org/cli/-/issues/new",[],"Issue öffnen",". Wer\neinen Fix im Sinn hat: Beiträge sind willkommen. Details unter\n",[50,1366,1369],{"href":1367,"rel":1368},"https://gitlab.com/gitlab-org/cli/-/blob/main/CONTRIBUTING.md",[],"CONTRIBUTING.md",".",[12,1372,1373,1374,1376],{},"Das GitLab CLI stand schon immer dafür, Entwickler(inne)n mehr Kontrolle über ihren\nWorkflow zu geben. Da KI ein immer größerer Teil der täglichen Arbeit wird,\nbedeutet das, ",[16,1375,18],{}," zur bestmöglichen Schnittstelle zwischen KI-Werkzeugen\nund GitLab-Projekten zu machen. Wir stehen am Anfang – und freuen uns darauf,\nden nächsten Teil gemeinsam zu gestalten.",[1378,1379,1380],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}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);}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sB1qb, html code.shiki .sB1qb{--shiki-default:#B31D28;--shiki-default-font-style:italic}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}",{"title":68,"searchDepth":82,"depth":82,"links":1382},[1383,1384,1388,1391,1392],{"id":41,"depth":82,"text":42},{"id":133,"depth":82,"text":134,"children":1385},[1386,1387],{"id":144,"depth":211,"text":145},{"id":517,"depth":211,"text":518},{"id":753,"depth":82,"text":754,"children":1389},[1390],{"id":966,"depth":211,"text":967},{"id":1014,"depth":82,"text":1015},{"id":1300,"depth":82,"text":1301},"ai","2026-04-27","Das GitLab CLI (glab) gibt KI-Agenten strukturierten Zugriff auf Projekte via MCP. Tutorial: Code-Reviews und Issue-Triage mit glab beschleunigen.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1776347152/unw3mzatkd5xyfbzcnni.png",{},"/de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli",{"config":1402,"title":1404,"description":1405},{"noIndex":1403},false,"glab CLI und MCP: KI-Agenten direkten GitLab-Zugriff geben","Mit glab CLI und MCP erhalten KI-Agenten strukturierten GitLab-Zugriff. Tutorial zu Code-Review, Issue-Triage und der GitLab-API.","give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli","de-de/blog/give-your-ai-agent-direct-structured-gitlab-access-with-glab-cli",[1409,1410,1411],"AI","product","tutorial","BlogPost","pfZtj_1qG6L1pt8Ja3SnFMUQQ3RlJbf3emx5PUc5VO8",{"logo":1415,"freeTrial":1420,"sales":1425,"login":1430,"items":1435,"search":1752,"minimal":1786,"duo":1804,"switchNav":1813,"pricingDeployment":1824},{"config":1416},{"href":1417,"dataGaName":1418,"dataGaLocation":1419},"/de-de/","gitlab logo","header",{"text":1421,"config":1422},"Kostenlose Testversion anfordern",{"href":1423,"dataGaName":1424,"dataGaLocation":1419},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":1426,"config":1427},"Vertrieb kontaktieren",{"href":1428,"dataGaName":1429,"dataGaLocation":1419},"/de-de/sales/","sales",{"text":1431,"config":1432},"Anmelden",{"href":1433,"dataGaName":1434,"dataGaLocation":1419},"https://gitlab.com/users/sign_in/","sign in",[1436,1465,1567,1572,1676,1732],{"text":1437,"config":1438,"menu":1440},"Plattform",{"dataNavLevelOne":1439},"platform",{"type":1441,"columns":1442},"cards",[1443,1449,1457],{"title":1437,"description":1444,"link":1445},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":1446,"config":1447},"Die Plattform erkunden",{"href":1448,"dataGaName":1439,"dataGaLocation":1419},"/de-de/platform/",{"title":1450,"description":1451,"link":1452},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":1453,"config":1454},"Lerne GitLab Duo kennen",{"href":1455,"dataGaName":1456,"dataGaLocation":1419},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1458,"description":1459,"link":1460},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":1461,"config":1462},"Mehr erfahren",{"href":1463,"dataGaName":1464,"dataGaLocation":1419},"/de-de/why-gitlab/","why gitlab",{"text":1466,"left":555,"config":1467,"menu":1469},"Produkt",{"dataNavLevelOne":1468},"solutions",{"type":1470,"link":1471,"columns":1475,"feature":1546},"lists",{"text":1472,"config":1473},"Alle Lösungen anzeigen",{"href":1474,"dataGaName":1468,"dataGaLocation":1419},"/de-de/solutions/",[1476,1501,1524],{"title":1477,"description":1478,"link":1479,"items":1484},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":1480},{"icon":1481,"href":1482,"dataGaName":1483,"dataGaLocation":1419},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[1485,1489,1492,1497],{"text":1486,"config":1487},"CI/CD",{"href":1488,"dataGaLocation":1419,"dataGaName":1486},"/de-de/solutions/continuous-integration/",{"text":1450,"config":1490},{"href":1455,"dataGaLocation":1419,"dataGaName":1491},"gitlab duo agent platform - product menu",{"text":1493,"config":1494},"Quellcodeverwaltung",{"href":1495,"dataGaLocation":1419,"dataGaName":1496},"/de-de/solutions/source-code-management/","Source Code Management",{"text":1498,"config":1499},"Automatische Softwarebereitstellung",{"href":1482,"dataGaLocation":1419,"dataGaName":1500},"Automated software delivery",{"title":1502,"description":1503,"link":1504,"items":1509},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":1505},{"href":1506,"dataGaName":1507,"dataGaLocation":1419,"icon":1508},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1510,1514,1519],{"text":1511,"config":1512},"Anwendungssicherheitstests",{"href":1506,"dataGaName":1513,"dataGaLocation":1419},"Application security testing",{"text":1515,"config":1516},"Sicherheit der Software-Lieferkette",{"href":1517,"dataGaLocation":1419,"dataGaName":1518},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":1520,"config":1521},"Software-Compliance",{"href":1522,"dataGaName":1523,"dataGaLocation":1419},"/de-de/solutions/software-compliance/","software compliance",{"title":1525,"link":1526,"items":1531},"Messung",{"config":1527},{"icon":1528,"href":1529,"dataGaName":1530,"dataGaLocation":1419},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[1532,1536,1541],{"text":1533,"config":1534},"Sichtbarkeit und Messung",{"href":1529,"dataGaLocation":1419,"dataGaName":1535},"Visibility and Measurement",{"text":1537,"config":1538},"Wertstrommanagement",{"href":1539,"dataGaLocation":1419,"dataGaName":1540},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":1542,"config":1543},"Analysen und Einblicke",{"href":1544,"dataGaLocation":1419,"dataGaName":1545},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":1547,"type":1470,"items":1548},"GitLab für",[1549,1555,1561],{"text":1550,"config":1551},"Enterprise",{"icon":1552,"href":1553,"dataGaLocation":1419,"dataGaName":1554},"Building","/de-de/enterprise/","enterprise",{"text":1556,"config":1557},"Kleinunternehmen",{"icon":1558,"href":1559,"dataGaLocation":1419,"dataGaName":1560},"Work","/de-de/small-business/","small business",{"text":1562,"config":1563},"Öffentlicher Sektor",{"icon":1564,"href":1565,"dataGaLocation":1419,"dataGaName":1566},"Organization","/de-de/solutions/public-sector/","public sector",{"text":1568,"config":1569},"Preise",{"href":1570,"dataGaName":1571,"dataGaLocation":1419,"dataNavLevelOne":1571},"/de-de/pricing/","pricing",{"text":1573,"config":1574,"menu":1576},"Ressourcen",{"dataNavLevelOne":1575},"resources",{"type":1470,"link":1577,"columns":1581,"feature":1665},{"text":1578,"config":1579},"Alle Ressourcen anzeigen",{"href":1580,"dataGaName":1575,"dataGaLocation":1419},"/de-de/resources/",[1582,1615,1637],{"title":1583,"items":1584},"Erste Schritte",[1585,1590,1595,1600,1605,1610],{"text":1586,"config":1587},"Installieren",{"href":1588,"dataGaName":1589,"dataGaLocation":1419},"/de-de/install/","install",{"text":1591,"config":1592},"Kurzanleitungen",{"href":1593,"dataGaName":1594,"dataGaLocation":1419},"/de-de/get-started/","quick setup checklists",{"text":1596,"config":1597},"Lernen",{"href":1598,"dataGaLocation":1419,"dataGaName":1599},"https://university.gitlab.com/","learn",{"text":1601,"config":1602},"Produktdokumentation",{"href":1603,"dataGaName":1604,"dataGaLocation":1419},"https://docs.gitlab.com/","product documentation",{"text":1606,"config":1607},"Best-Practice-Videos",{"href":1608,"dataGaName":1609,"dataGaLocation":1419},"/de-de/getting-started-videos/","best practice videos",{"text":1611,"config":1612},"Integrationen",{"href":1613,"dataGaName":1614,"dataGaLocation":1419},"/de-de/integrations/","integrations",{"title":1616,"items":1617},"Entdecken",[1618,1623,1628,1632],{"text":1619,"config":1620},"Kundenerfolge",{"href":1621,"dataGaName":1622,"dataGaLocation":1419},"/de-de/customers/","customer success stories",{"text":1624,"config":1625},"Blog",{"href":1626,"dataGaName":1627,"dataGaLocation":1419},"/de-de/blog/","blog",{"text":1629,"config":1630},"The Source",{"href":1631,"dataGaName":1627,"dataGaLocation":1419},"/de-de/the-source/",{"text":1633,"config":1634},"Remote",{"href":1635,"dataGaName":1636,"dataGaLocation":1419},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1638,"items":1639},"Vernetzen",[1640,1645,1650,1655,1660],{"text":1641,"config":1642},"GitLab-Services",{"href":1643,"dataGaName":1644,"dataGaLocation":1419},"/de-de/services/","services",{"text":1646,"config":1647},"Community",{"href":1648,"dataGaName":1649,"dataGaLocation":1419},"/community/","community",{"text":1651,"config":1652},"Forum",{"href":1653,"dataGaName":1654,"dataGaLocation":1419},"https://forum.gitlab.com/","forum",{"text":1656,"config":1657},"Veranstaltungen",{"href":1658,"dataGaName":1659,"dataGaLocation":1419},"/events/","events",{"text":1661,"config":1662},"Partner",{"href":1663,"dataGaName":1664,"dataGaLocation":1419},"/de-de/partners/","partners",{"config":1666,"title":1669,"text":1670,"link":1671},{"background":1667,"textColor":1668},"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":1672,"config":1673},"Aktuelle Nachrichten",{"href":1674,"dataGaName":1675,"dataGaLocation":1419},"/de-de/whats-new/","whats new",{"text":1677,"config":1678,"menu":1680},"Company",{"dataNavLevelOne":1679},"company",{"type":1470,"columns":1681},[1682],{"items":1683},[1684,1689,1695,1697,1702,1707,1712,1717,1722,1727],{"text":1685,"config":1686},"Über",{"href":1687,"dataGaName":1688,"dataGaLocation":1419},"/de-de/company/","about",{"text":1690,"config":1691,"footerGa":1694},"Karriere",{"href":1692,"dataGaName":1693,"dataGaLocation":1419},"/jobs/","jobs",{"dataGaName":1693},{"text":1656,"config":1696},{"href":1658,"dataGaName":1659,"dataGaLocation":1419},{"text":1698,"config":1699},"Geschäftsführung",{"href":1700,"dataGaName":1701,"dataGaLocation":1419},"/company/team/e-group/","leadership",{"text":1703,"config":1704},"Handbuch",{"href":1705,"dataGaName":1706,"dataGaLocation":1419},"https://handbook.gitlab.com/","handbook",{"text":1708,"config":1709},"Investor Relations",{"href":1710,"dataGaName":1711,"dataGaLocation":1419},"https://ir.gitlab.com/","investor relations",{"text":1713,"config":1714},"Trust Center",{"href":1715,"dataGaName":1716,"dataGaLocation":1419},"/de-de/security/","trust center",{"text":1718,"config":1719},"AI Transparency Center",{"href":1720,"dataGaName":1721,"dataGaLocation":1419},"/de-de/ai-transparency-center/","ai transparency center",{"text":1723,"config":1724},"Newsletter",{"href":1725,"dataGaName":1726,"dataGaLocation":1419},"/company/contact/#contact-forms","newsletter",{"text":1728,"config":1729},"Presse",{"href":1730,"dataGaName":1731,"dataGaLocation":1419},"/press/","press",{"text":1733,"config":1734,"menu":1735},"Kontakt",{"dataNavLevelOne":1679},{"type":1470,"columns":1736},[1737],{"items":1738},[1739,1742,1747],{"text":1426,"config":1740},{"href":1428,"dataGaName":1741,"dataGaLocation":1419},"talk to sales",{"text":1743,"config":1744},"Support-Portal",{"href":1745,"dataGaName":1746,"dataGaLocation":1419},"https://support.gitlab.com","support portal",{"text":1748,"config":1749},"Kundenportal",{"href":1750,"dataGaName":1751,"dataGaLocation":1419},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1753,"login":1754,"suggestions":1761},"Schließen",{"text":1755,"link":1756},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1757,"config":1758},"gitlab.com",{"href":1433,"dataGaName":1759,"dataGaLocation":1760},"search login","search",{"text":1762,"default":1763},"Vorschläge",[1764,1766,1771,1773,1778,1783],{"text":1450,"config":1765},{"href":1455,"dataGaName":1450,"dataGaLocation":1760},{"text":1767,"config":1768},"Codevorschläge (KI)",{"href":1769,"dataGaName":1770,"dataGaLocation":1760},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1486,"config":1772},{"href":1488,"dataGaName":1486,"dataGaLocation":1760},{"text":1774,"config":1775},"GitLab auf AWS",{"href":1776,"dataGaName":1777,"dataGaLocation":1760},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1779,"config":1780},"GitLab auf Google Cloud",{"href":1781,"dataGaName":1782,"dataGaLocation":1760},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1458,"config":1784},{"href":1463,"dataGaName":1785,"dataGaLocation":1760},"Why GitLab?",{"freeTrial":1787,"mobileIcon":1792,"desktopIcon":1797,"secondaryButton":1800},{"text":1788,"config":1789},"Kostenlos testen",{"href":1790,"dataGaName":1424,"dataGaLocation":1791},"https://gitlab.com/-/trials/new/","nav",{"altText":1793,"config":1794},"GitLab-Symbol",{"src":1795,"dataGaName":1796,"dataGaLocation":1791},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1793,"config":1798},{"src":1799,"dataGaName":1796,"dataGaLocation":1791},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1583,"config":1801},{"href":1802,"dataGaName":1803,"dataGaLocation":1791},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1805,"mobileIcon":1809,"desktopIcon":1811},{"text":1806,"config":1807},"Mehr über GitLab Duo erfahren",{"href":1455,"dataGaName":1808,"dataGaLocation":1791},"gitlab duo",{"altText":1793,"config":1810},{"src":1795,"dataGaName":1796,"dataGaLocation":1791},{"altText":1793,"config":1812},{"src":1799,"dataGaName":1796,"dataGaLocation":1791},{"button":1814,"mobileIcon":1819,"desktopIcon":1821},{"text":1815,"config":1816},"/Option",{"href":1817,"dataGaName":1818,"dataGaLocation":1791},"#contact","switch",{"altText":1793,"config":1820},{"src":1795,"dataGaName":1796,"dataGaLocation":1791},{"altText":1793,"config":1822},{"src":1823,"dataGaName":1796,"dataGaLocation":1791},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1825,"mobileIcon":1830,"desktopIcon":1832},{"text":1826,"config":1827},"Zurück zur Preisübersicht",{"href":1570,"dataGaName":1828,"dataGaLocation":1791,"icon":1829},"back to pricing","GoBack",{"altText":1793,"config":1831},{"src":1795,"dataGaName":1796,"dataGaLocation":1791},{"altText":1793,"config":1833},{"src":1799,"dataGaName":1796,"dataGaLocation":1791},{"title":1835,"button":1836,"config":1841},"Sieh dir an, wie agentische KI die Softwarebereitstellung transformiert",{"text":1837,"config":1838},"Jetzt live bei GitLab Transcend am 10. Juni dabei sein",{"href":1839,"dataGaName":1840,"dataGaLocation":1419},"/de-de/events/transcend/virtual/","transcend event",{"layout":1842,"disabled":1403},"release",{"data":1844},{"text":1845,"source":1846,"edit":1852,"contribute":1857,"config":1862,"items":1867,"minimal":2073},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1847,"config":1848},"Quelltext der Seite anzeigen",{"href":1849,"dataGaName":1850,"dataGaLocation":1851},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1853,"config":1854},"Diese Seite bearbeiten",{"href":1855,"dataGaName":1856,"dataGaLocation":1851},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1858,"config":1859},"Beteilige dich",{"href":1860,"dataGaName":1861,"dataGaLocation":1851},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1863,"facebook":1864,"youtube":1865,"linkedin":1866},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1868,1913,1966,2008,2039],{"title":1568,"links":1869,"subMenu":1884},[1870,1874,1879],{"text":1871,"config":1872},"Tarife anzeigen",{"href":1570,"dataGaName":1873,"dataGaLocation":1851},"view plans",{"text":1875,"config":1876},"Vorteile von Premium",{"href":1877,"dataGaName":1878,"dataGaLocation":1851},"/de-de/pricing/premium/","why premium",{"text":1880,"config":1881},"Vorteile von Ultimate",{"href":1882,"dataGaName":1883,"dataGaLocation":1851},"/de-de/pricing/ultimate/","why ultimate",[1885],{"title":1733,"links":1886},[1887,1889,1891,1893,1898,1903,1908],{"text":1426,"config":1888},{"href":1428,"dataGaName":1429,"dataGaLocation":1851},{"text":1743,"config":1890},{"href":1745,"dataGaName":1746,"dataGaLocation":1851},{"text":1748,"config":1892},{"href":1750,"dataGaName":1751,"dataGaLocation":1851},{"text":1894,"config":1895},"Status",{"href":1896,"dataGaName":1897,"dataGaLocation":1851},"https://status.gitlab.com/","status",{"text":1899,"config":1900},"Nutzungsbedingungen",{"href":1901,"dataGaName":1902,"dataGaLocation":1851},"/terms/","terms of use",{"text":1904,"config":1905},"Datenschutzerklärung",{"href":1906,"dataGaName":1907,"dataGaLocation":1851},"/de-de/privacy/","privacy statement",{"text":1909,"config":1910},"Cookie-Einstellungen",{"dataGaName":1911,"dataGaLocation":1851,"id":1912,"isOneTrustButton":555},"cookie preferences","ot-sdk-btn",{"title":1466,"links":1914,"subMenu":1923},[1915,1919],{"text":1916,"config":1917},"DevSecOps-Plattform",{"href":1448,"dataGaName":1918,"dataGaLocation":1851},"devsecops platform",{"text":1920,"config":1921},"KI-unterstützte Entwicklung",{"href":1455,"dataGaName":1922,"dataGaLocation":1851},"ai-assisted development",[1924],{"title":1925,"links":1926},"Themen",[1927,1931,1936,1941,1946,1951,1956,1961],{"text":1486,"config":1928},{"href":1929,"dataGaName":1930,"dataGaLocation":1851},"/de-de/topics/ci-cd/","cicd",{"text":1932,"config":1933},"GitOps",{"href":1934,"dataGaName":1935,"dataGaLocation":1851},"/de-de/topics/gitops/","gitops",{"text":1937,"config":1938},"DevOps",{"href":1939,"dataGaName":1940,"dataGaLocation":1851},"/de-de/topics/devops/","devops",{"text":1942,"config":1943},"Versionskontrolle",{"href":1944,"dataGaName":1945,"dataGaLocation":1851},"/de-de/topics/version-control/","version control",{"text":1947,"config":1948},"DevSecOps",{"href":1949,"dataGaName":1950,"dataGaLocation":1851},"/de-de/topics/devsecops/","devsecops",{"text":1952,"config":1953},"Cloud-nativ",{"href":1954,"dataGaName":1955,"dataGaLocation":1851},"/de-de/topics/cloud-native/","cloud native",{"text":1957,"config":1958},"KI für das Programmieren",{"href":1959,"dataGaName":1960,"dataGaLocation":1851},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1962,"config":1963},"Agentische KI",{"href":1964,"dataGaName":1965,"dataGaLocation":1851},"/de-de/topics/agentic-ai/","agentic ai",{"title":1967,"links":1968},"Lösungen",[1969,1972,1974,1979,1983,1986,1989,1992,1994,1996,1998,2003],{"text":1511,"config":1970},{"href":1506,"dataGaName":1971,"dataGaLocation":1851},"Application Security Testing",{"text":1498,"config":1973},{"href":1482,"dataGaName":1483,"dataGaLocation":1851},{"text":1975,"config":1976},"Agile Entwicklung",{"href":1977,"dataGaName":1978,"dataGaLocation":1851},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1980,"config":1981},"SCM",{"href":1495,"dataGaName":1982,"dataGaLocation":1851},"source code management",{"text":1486,"config":1984},{"href":1488,"dataGaName":1985,"dataGaLocation":1851},"continuous integration & delivery",{"text":1537,"config":1987},{"href":1539,"dataGaName":1988,"dataGaLocation":1851},"value stream management",{"text":1932,"config":1990},{"href":1991,"dataGaName":1935,"dataGaLocation":1851},"/de-de/solutions/gitops/",{"text":1550,"config":1993},{"href":1553,"dataGaName":1554,"dataGaLocation":1851},{"text":1556,"config":1995},{"href":1559,"dataGaName":1560,"dataGaLocation":1851},{"text":1562,"config":1997},{"href":1565,"dataGaName":1566,"dataGaLocation":1851},{"text":1999,"config":2000},"Bildungswesen",{"href":2001,"dataGaName":2002,"dataGaLocation":1851},"/de-de/solutions/education/","education",{"text":2004,"config":2005},"Finanzdienstleistungen",{"href":2006,"dataGaName":2007,"dataGaLocation":1851},"/de-de/solutions/finance/","financial services",{"title":1573,"links":2009},[2010,2012,2014,2016,2019,2021,2024,2026,2028,2031,2033,2035,2037],{"text":1586,"config":2011},{"href":1588,"dataGaName":1589,"dataGaLocation":1851},{"text":1591,"config":2013},{"href":1593,"dataGaName":1594,"dataGaLocation":1851},{"text":1596,"config":2015},{"href":1598,"dataGaName":1599,"dataGaLocation":1851},{"text":1601,"config":2017},{"href":1603,"dataGaName":2018,"dataGaLocation":1851},"docs",{"text":1624,"config":2020},{"href":1626,"dataGaName":1627,"dataGaLocation":1851},{"text":2022,"config":2023},"Neuigkeiten",{"href":1674,"dataGaName":1675,"dataGaLocation":1851},{"text":1619,"config":2025},{"href":1621,"dataGaName":1622,"dataGaLocation":1851},{"text":1633,"config":2027},{"href":1635,"dataGaName":1636,"dataGaLocation":1851},{"text":2029,"config":2030},"GitLab Services",{"href":1643,"dataGaName":1644,"dataGaLocation":1851},{"text":1646,"config":2032},{"href":1648,"dataGaName":1649,"dataGaLocation":1851},{"text":1651,"config":2034},{"href":1653,"dataGaName":1654,"dataGaLocation":1851},{"text":1656,"config":2036},{"href":1658,"dataGaName":1659,"dataGaLocation":1851},{"text":1661,"config":2038},{"href":1663,"dataGaName":1664,"dataGaLocation":1851},{"title":2040,"links":2041},"Unternehmen",[2042,2044,2046,2048,2050,2052,2057,2062,2064,2066,2068],{"text":1685,"config":2043},{"href":1687,"dataGaName":1679,"dataGaLocation":1851},{"text":1690,"config":2045},{"href":1692,"dataGaName":1693,"dataGaLocation":1851},{"text":1698,"config":2047},{"href":1700,"dataGaName":1701,"dataGaLocation":1851},{"text":1703,"config":2049},{"href":1705,"dataGaName":1706,"dataGaLocation":1851},{"text":1708,"config":2051},{"href":1710,"dataGaName":1711,"dataGaLocation":1851},{"text":2053,"config":2054},"Nachhaltigkeit",{"href":2055,"dataGaName":2056,"dataGaLocation":1851},"/sustainability/","Sustainability",{"text":2058,"config":2059},"Vielfalt, Inklusion und Zugehörigkeit",{"href":2060,"dataGaName":2061,"dataGaLocation":1851},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1713,"config":2063},{"href":1715,"dataGaName":1716,"dataGaLocation":1851},{"text":1723,"config":2065},{"href":1725,"dataGaName":1726,"dataGaLocation":1851},{"text":1728,"config":2067},{"href":1730,"dataGaName":1731,"dataGaLocation":1851},{"text":2069,"config":2070},"Transparenzerklärung zu moderner Sklaverei",{"href":2071,"dataGaName":2072,"dataGaLocation":1851},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2074},[2075,2077,2080],{"text":1899,"config":2076},{"href":1901,"dataGaName":1902,"dataGaLocation":1851},{"text":2078,"config":2079},"Cookies",{"dataGaName":1911,"dataGaLocation":1851,"id":1912,"isOneTrustButton":555},{"text":1904,"config":2081},{"href":1906,"dataGaName":1907,"dataGaLocation":1851},[2083],{"id":2084,"title":7,"body":1397,"config":2085,"content":2087,"description":1397,"extension":2091,"meta":2092,"navigation":555,"path":2093,"seo":2094,"stem":2095,"__hash__":2096},"blogAuthors/en-us/blog/authors/kai-armstrong.yml",{"template":2086},"BlogAuthor",{"name":7,"config":2088},{"headshot":2089,"ctfId":2090},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682535/Blog/Author%20Headshots/phikai-headshot.png","phikai","yml",{},"/en-us/blog/authors/kai-armstrong",{},"en-us/blog/authors/kai-armstrong","Y-yZG9fBOoKU-_K9heV2LiGg7xuWxyCx1fnfpM9-82g",[2098,2106,2113],{"title":2099,"description":2100,"heroImage":2101,"category":1393,"date":2102,"authors":2103,"slug":2105,"externalUrl":1397},"Vollständiger Code- und Lifecycle-Kontext per Abfrage – dank GitLab Orbit","Mit Orbit sind Software-Agenten bis zu 11-mal schneller, nutzen bis zu 4,5-mal weniger Tokens und beantworten bisher unlösbare Fragen.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1780996524/sd1vpl8empy26wizarqj.png","2026-06-10",[2104],"Rebecca Carter","introducing-gitlab-orbit",{"title":2107,"description":2108,"heroImage":2109,"category":1393,"date":2102,"authors":2110,"slug":2112,"externalUrl":1397},"Seats und KI-Ausgaben flexibel steuern – mit GitLab Flex","In der agentischen Ära lassen sich Seat-Bedarf, KI-Nutzung und neue Funktionen kaum planen. GitLab Flex: eine Vereinbarung, monatlich anpassbar.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772047747/ntihfmnu2fepamqemaas.png",[2111],"Talia Armato-Helle","introducing-gitlab-flex",{"title":2114,"description":2115,"heroImage":2116,"category":1393,"date":2102,"authors":2117,"slug":2119,"externalUrl":1397},"GitLab: entwickelt für die Ära des agentischen Engineering","Alle Ankündigungen von GitLab Transcend – wie eine Plattform agentische Geschwindigkeit mit der Kontrolle liefert, die Unternehmen benötigen.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781032585/go3d7pb9opmux7rwhpev.png",[2118],"Manav Khurana","gitlab-transcend-announcements",{"promotions":2121},[2122,2135,2146,2158],{"id":2123,"categories":2124,"header":2125,"text":2126,"button":2127,"image":2132},"ai-modernization",[1393],"Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":2128,"config":2129},"Ermittle deinen KI-Reifegrad",{"href":2130,"dataGaName":2131,"dataGaLocation":1627},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":2133},{"src":2134},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":2136,"categories":2137,"header":2138,"text":2126,"button":2139,"image":2143},"devops-modernization",[1410,1950],"Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":2140,"config":2141},"Ermittle deinen DevOps-Reifegrad",{"href":2142,"dataGaName":2131,"dataGaLocation":1627},"/de-de/assessments/devops-modernization-assessment/",{"config":2144},{"src":2145},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":2147,"categories":2148,"header":2150,"text":2126,"button":2151,"image":2155},"security-modernization",[2149],"security","Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":2152,"config":2153},"Ermittle deinen Sicherheitsreifegrad",{"href":2154,"dataGaName":2131,"dataGaLocation":1627},"/de-de/assessments/security-modernization-assessment/",{"config":2156},{"src":2157},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":2159,"paths":2160,"header":2163,"text":2164,"button":2165,"image":2170},"github-azure-migration",[2161,2162],"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":2166,"config":2167},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":2168,"dataGaName":2169,"dataGaLocation":1627},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":2171},{"src":2145},{"header":2173,"blurb":2174,"button":2175,"secondaryButton":2180},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":2176,"config":2177},"Kostenlosen Test starten",{"href":2178,"dataGaName":1424,"dataGaLocation":2179},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1426,"config":2181},{"href":1428,"dataGaName":1429,"dataGaLocation":2179},1781392669195]