[{"data":1,"prerenderedAt":789},["ShallowReactive",2],{"/de-de/blog/categories/devsecops":3,"navigation-de-de":21,"banner-de-de":435,"footer-de-de":445,"devsecops-category-page-total-items-de-de":679,"devsecops-category-page-featured-de-de":680,"devsecops-category-page-1-de-de":709},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":11,"description":6,"extension":13,"meta":14,"navigation":15,"path":16,"seo":17,"slug":6,"stem":19,"testContent":6,"type":6,"__hash__":20},"blogCategories/de-de/blog/categories/devsecops.yml","Devsecops",null,{"template":8,"slug":9,"hide":10},"BlogCategory","devsecops",false,{"name":12},"DevSecOps","yml",{},true,"/de-de/blog/categories/devsecops",{"title":12,"description":18},"Browse articles related to DevSecOps on the GitLab Blog","de-de/blog/categories/devsecops","-VYAbxDp8VgKNnix343UzZtmmsJMwVyVWyhmpemBm0U",{"data":22},{"logo":23,"freeTrial":28,"sales":33,"login":38,"items":43,"search":353,"minimal":387,"duo":405,"switchNav":414,"pricingDeployment":425},{"config":24},{"href":25,"dataGaName":26,"dataGaLocation":27},"/de-de/","gitlab logo","header",{"text":29,"config":30},"Kostenlose Testversion anfordern",{"href":31,"dataGaName":32,"dataGaLocation":27},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":34,"config":35},"Vertrieb kontaktieren",{"href":36,"dataGaName":37,"dataGaLocation":27},"/de-de/sales/","sales",{"text":39,"config":40},"Anmelden",{"href":41,"dataGaName":42,"dataGaLocation":27},"https://gitlab.com/users/sign_in/","sign in",[44,71,168,173,274,334],{"text":45,"config":46,"cards":48},"Plattform",{"dataNavLevelOne":47},"platform",[49,55,63],{"title":45,"description":50,"link":51},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":52,"config":53},"Die Plattform erkunden",{"href":54,"dataGaName":47,"dataGaLocation":27},"/de-de/platform/",{"title":56,"description":57,"link":58},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":59,"config":60},"Lerne GitLab Duo kennen",{"href":61,"dataGaName":62,"dataGaLocation":27},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":64,"description":65,"link":66},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":67,"config":68},"Mehr erfahren",{"href":69,"dataGaName":70,"dataGaLocation":27},"/de-de/why-gitlab/","why gitlab",{"text":72,"left":15,"config":73,"link":75,"lists":79,"footer":150},"Produkt",{"dataNavLevelOne":74},"solutions",{"text":76,"config":77},"Alle Lösungen anzeigen",{"href":78,"dataGaName":74,"dataGaLocation":27},"/de-de/solutions/",[80,105,128],{"title":81,"description":82,"link":83,"items":88},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":84},{"icon":85,"href":86,"dataGaName":87,"dataGaLocation":27},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[89,93,96,101],{"text":90,"config":91},"CI/CD",{"href":92,"dataGaLocation":27,"dataGaName":90},"/de-de/solutions/continuous-integration/",{"text":56,"config":94},{"href":61,"dataGaLocation":27,"dataGaName":95},"gitlab duo agent platform - product menu",{"text":97,"config":98},"Quellcodeverwaltung",{"href":99,"dataGaLocation":27,"dataGaName":100},"/de-de/solutions/source-code-management/","Source Code Management",{"text":102,"config":103},"Automatische Softwarebereitstellung",{"href":86,"dataGaLocation":27,"dataGaName":104},"Automated software delivery",{"title":106,"description":107,"link":108,"items":113},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":109},{"href":110,"dataGaName":111,"dataGaLocation":27,"icon":112},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[114,118,123],{"text":115,"config":116},"Anwendungssicherheitstests",{"href":110,"dataGaName":117,"dataGaLocation":27},"Application security testing",{"text":119,"config":120},"Schutz der Software-Lieferkette",{"href":121,"dataGaLocation":27,"dataGaName":122},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":124,"config":125},"Software-Compliance",{"href":126,"dataGaName":127,"dataGaLocation":27},"/de-de/solutions/software-compliance/","software compliance",{"title":129,"link":130,"items":135},"Auswertung",{"config":131},{"icon":132,"href":133,"dataGaName":134,"dataGaLocation":27},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[136,140,145],{"text":137,"config":138},"Sichtbarkeit und Auswertung",{"href":133,"dataGaLocation":27,"dataGaName":139},"Visibility and Measurement",{"text":141,"config":142},"Wertstrommanagement",{"href":143,"dataGaLocation":27,"dataGaName":144},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":146,"config":147},"Analysen und Einblicke",{"href":148,"dataGaLocation":27,"dataGaName":149},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":151,"items":152},"GitLab für",[153,158,163],{"text":154,"config":155},"Enterprise",{"href":156,"dataGaLocation":27,"dataGaName":157},"/de-de/enterprise/","enterprise",{"text":159,"config":160},"Kleinunternehmen",{"href":161,"dataGaLocation":27,"dataGaName":162},"/de-de/small-business/","small business",{"text":164,"config":165},"Öffentlicher Sektor",{"href":166,"dataGaLocation":27,"dataGaName":167},"/de-de/solutions/public-sector/","public sector",{"text":169,"config":170},"Preise",{"href":171,"dataGaName":172,"dataGaLocation":27,"dataNavLevelOne":172},"/de-de/pricing/","pricing",{"text":174,"config":175,"link":177,"lists":181,"feature":261},"Ressourcen",{"dataNavLevelOne":176},"resources",{"text":178,"config":179},"Alle Ressourcen anzeigen",{"href":180,"dataGaName":176,"dataGaLocation":27},"/de-de/resources/",[182,215,233],{"title":183,"items":184},"Erste Schritte",[185,190,195,200,205,210],{"text":186,"config":187},"Installieren",{"href":188,"dataGaName":189,"dataGaLocation":27},"/de-de/install/","install",{"text":191,"config":192},"Kurzanleitungen",{"href":193,"dataGaName":194,"dataGaLocation":27},"/de-de/get-started/","quick setup checklists",{"text":196,"config":197},"Lernen",{"href":198,"dataGaLocation":27,"dataGaName":199},"https://university.gitlab.com/","learn",{"text":201,"config":202},"Produktdokumentation",{"href":203,"dataGaName":204,"dataGaLocation":27},"https://docs.gitlab.com/","product documentation",{"text":206,"config":207},"Best-Practice-Videos",{"href":208,"dataGaName":209,"dataGaLocation":27},"/de-de/getting-started-videos/","best practice videos",{"text":211,"config":212},"Integrationen",{"href":213,"dataGaName":214,"dataGaLocation":27},"/de-de/integrations/","integrations",{"title":216,"items":217},"Entdecken",[218,223,228],{"text":219,"config":220},"Kundenerfolge",{"href":221,"dataGaName":222,"dataGaLocation":27},"/de-de/customers/","customer success stories",{"text":224,"config":225},"Blog",{"href":226,"dataGaName":227,"dataGaLocation":27},"/de-de/blog/","blog",{"text":229,"config":230},"Remote",{"href":231,"dataGaName":232,"dataGaLocation":27},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":234,"items":235},"Vernetzen",[236,241,246,251,256],{"text":237,"config":238},"GitLab Services",{"href":239,"dataGaName":240,"dataGaLocation":27},"/de-de/services/","services",{"text":242,"config":243},"Community",{"href":244,"dataGaName":245,"dataGaLocation":27},"/community/","community",{"text":247,"config":248},"Forum",{"href":249,"dataGaName":250,"dataGaLocation":27},"https://forum.gitlab.com/","forum",{"text":252,"config":253},"Veranstaltungen",{"href":254,"dataGaName":255,"dataGaLocation":27},"/events/","events",{"text":257,"config":258},"Partner",{"href":259,"dataGaName":260,"dataGaLocation":27},"/de-de/partners/","partners",{"background":262,"textColor":263,"text":264,"image":265,"link":269},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":266,"config":267},"The Source Promo-Karte",{"src":268},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":270,"config":271},"Aktuelles",{"href":272,"dataGaName":273,"dataGaLocation":27},"/de-de/the-source/","the source",{"text":275,"config":276,"lists":278},"Unternehmen",{"dataNavLevelOne":277},"company",[279],{"items":280},[281,286,292,294,299,304,309,314,319,324,329],{"text":282,"config":283},"Über",{"href":284,"dataGaName":285,"dataGaLocation":27},"/de-de/company/","about",{"text":287,"config":288,"footerGa":291},"Karriere",{"href":289,"dataGaName":290,"dataGaLocation":27},"/jobs/","jobs",{"dataGaName":290},{"text":252,"config":293},{"href":254,"dataGaName":255,"dataGaLocation":27},{"text":295,"config":296},"Geschäftsführung",{"href":297,"dataGaName":298,"dataGaLocation":27},"/company/team/e-group/","leadership",{"text":300,"config":301},"Team",{"href":302,"dataGaName":303,"dataGaLocation":27},"/company/team/","team",{"text":305,"config":306},"Handbuch",{"href":307,"dataGaName":308,"dataGaLocation":27},"https://handbook.gitlab.com/","handbook",{"text":310,"config":311},"Investor Relations",{"href":312,"dataGaName":313,"dataGaLocation":27},"https://ir.gitlab.com/","investor relations",{"text":315,"config":316},"Trust Center",{"href":317,"dataGaName":318,"dataGaLocation":27},"/de-de/security/","trust center",{"text":320,"config":321},"AI Transparency Center",{"href":322,"dataGaName":323,"dataGaLocation":27},"/de-de/ai-transparency-center/","ai transparency center",{"text":325,"config":326},"Newsletter",{"href":327,"dataGaName":328,"dataGaLocation":27},"/company/contact/#contact-forms","newsletter",{"text":330,"config":331},"Presse",{"href":332,"dataGaName":333,"dataGaLocation":27},"/press/","press",{"text":335,"config":336,"lists":337},"Kontakt",{"dataNavLevelOne":277},[338],{"items":339},[340,343,348],{"text":34,"config":341},{"href":36,"dataGaName":342,"dataGaLocation":27},"talk to sales",{"text":344,"config":345},"Support-Portal",{"href":346,"dataGaName":347,"dataGaLocation":27},"https://support.gitlab.com","support portal",{"text":349,"config":350},"Kundenportal",{"href":351,"dataGaName":352,"dataGaLocation":27},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":354,"login":355,"suggestions":362},"Schließen",{"text":356,"link":357},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":358,"config":359},"gitlab.com",{"href":41,"dataGaName":360,"dataGaLocation":361},"search login","search",{"text":363,"default":364},"Vorschläge",[365,367,372,374,379,384],{"text":56,"config":366},{"href":61,"dataGaName":56,"dataGaLocation":361},{"text":368,"config":369},"Codevorschläge (KI)",{"href":370,"dataGaName":371,"dataGaLocation":361},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":90,"config":373},{"href":92,"dataGaName":90,"dataGaLocation":361},{"text":375,"config":376},"GitLab auf AWS",{"href":377,"dataGaName":378,"dataGaLocation":361},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":380,"config":381},"GitLab auf Google Cloud",{"href":382,"dataGaName":383,"dataGaLocation":361},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":64,"config":385},{"href":69,"dataGaName":386,"dataGaLocation":361},"Why GitLab?",{"freeTrial":388,"mobileIcon":393,"desktopIcon":398,"secondaryButton":401},{"text":389,"config":390},"Kostenlos testen",{"href":391,"dataGaName":32,"dataGaLocation":392},"https://gitlab.com/-/trials/new/","nav",{"altText":394,"config":395},"GitLab-Symbol",{"src":396,"dataGaName":397,"dataGaLocation":392},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":394,"config":399},{"src":400,"dataGaName":397,"dataGaLocation":392},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":183,"config":402},{"href":403,"dataGaName":404,"dataGaLocation":392},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":406,"mobileIcon":410,"desktopIcon":412},{"text":407,"config":408},"Mehr über GitLab Duo erfahren",{"href":61,"dataGaName":409,"dataGaLocation":392},"gitlab duo",{"altText":394,"config":411},{"src":396,"dataGaName":397,"dataGaLocation":392},{"altText":394,"config":413},{"src":400,"dataGaName":397,"dataGaLocation":392},{"button":415,"mobileIcon":420,"desktopIcon":422},{"text":416,"config":417},"/Option",{"href":418,"dataGaName":419,"dataGaLocation":392},"#contact","switch",{"altText":394,"config":421},{"src":396,"dataGaName":397,"dataGaLocation":392},{"altText":394,"config":423},{"src":424,"dataGaName":397,"dataGaLocation":392},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":426,"mobileIcon":431,"desktopIcon":433},{"text":427,"config":428},"Zurück zur Preisübersicht",{"href":171,"dataGaName":429,"dataGaLocation":392,"icon":430},"back to pricing","GoBack",{"altText":394,"config":432},{"src":396,"dataGaName":397,"dataGaLocation":392},{"altText":394,"config":434},{"src":400,"dataGaName":397,"dataGaLocation":392},{"title":436,"button":437,"config":442},"Sieh dir an, wie agentische KI die Softwarebereitstellung transformiert",{"text":438,"config":439},"GitLab Transcend jetzt ansehen",{"href":440,"dataGaName":441,"dataGaLocation":27},"/de-de/events/transcend/virtual/","transcend event",{"layout":443,"icon":444,"disabled":15},"release","AiStar",{"data":446},{"text":447,"source":448,"edit":454,"contribute":459,"config":464,"items":469,"minimal":670},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":449,"config":450},"Quelltext der Seite anzeigen",{"href":451,"dataGaName":452,"dataGaLocation":453},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":455,"config":456},"Diese Seite bearbeiten",{"href":457,"dataGaName":458,"dataGaLocation":453},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":460,"config":461},"Beteilige dich",{"href":462,"dataGaName":463,"dataGaLocation":453},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":465,"facebook":466,"youtube":467,"linkedin":468},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[470,515,566,608,635],{"title":169,"links":471,"subMenu":486},[472,476,481],{"text":473,"config":474},"Tarife anzeigen",{"href":171,"dataGaName":475,"dataGaLocation":453},"view plans",{"text":477,"config":478},"Vorteile von Premium",{"href":479,"dataGaName":480,"dataGaLocation":453},"/de-de/pricing/premium/","why premium",{"text":482,"config":483},"Vorteile von Ultimate",{"href":484,"dataGaName":485,"dataGaLocation":453},"/de-de/pricing/ultimate/","why ultimate",[487],{"title":335,"links":488},[489,491,493,495,500,505,510],{"text":34,"config":490},{"href":36,"dataGaName":37,"dataGaLocation":453},{"text":344,"config":492},{"href":346,"dataGaName":347,"dataGaLocation":453},{"text":349,"config":494},{"href":351,"dataGaName":352,"dataGaLocation":453},{"text":496,"config":497},"Status",{"href":498,"dataGaName":499,"dataGaLocation":453},"https://status.gitlab.com/","status",{"text":501,"config":502},"Nutzungsbedingungen",{"href":503,"dataGaName":504,"dataGaLocation":453},"/terms/","terms of use",{"text":506,"config":507},"Datenschutzerklärung",{"href":508,"dataGaName":509,"dataGaLocation":453},"/de-de/privacy/","privacy statement",{"text":511,"config":512},"Cookie-Einstellungen",{"dataGaName":513,"dataGaLocation":453,"id":514,"isOneTrustButton":15},"cookie preferences","ot-sdk-btn",{"title":72,"links":516,"subMenu":525},[517,521],{"text":518,"config":519},"DevSecOps-Plattform",{"href":54,"dataGaName":520,"dataGaLocation":453},"devsecops platform",{"text":522,"config":523},"KI-unterstützte Entwicklung",{"href":61,"dataGaName":524,"dataGaLocation":453},"ai-assisted development",[526],{"title":527,"links":528},"Themen",[529,533,538,543,548,551,556,561],{"text":90,"config":530},{"href":531,"dataGaName":532,"dataGaLocation":453},"/de-de/topics/ci-cd/","cicd",{"text":534,"config":535},"GitOps",{"href":536,"dataGaName":537,"dataGaLocation":453},"/de-de/topics/gitops/","gitops",{"text":539,"config":540},"DevOps",{"href":541,"dataGaName":542,"dataGaLocation":453},"/de-de/topics/devops/","devops",{"text":544,"config":545},"Versionskontrolle",{"href":546,"dataGaName":547,"dataGaLocation":453},"/de-de/topics/version-control/","version control",{"text":12,"config":549},{"href":550,"dataGaName":9,"dataGaLocation":453},"/de-de/topics/devsecops/",{"text":552,"config":553},"Cloud-nativ",{"href":554,"dataGaName":555,"dataGaLocation":453},"/de-de/topics/cloud-native/","cloud native",{"text":557,"config":558},"KI für das Programmieren",{"href":559,"dataGaName":560,"dataGaLocation":453},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":562,"config":563},"Agentische KI",{"href":564,"dataGaName":565,"dataGaLocation":453},"/de-de/topics/agentic-ai/","agentic ai",{"title":567,"links":568},"Lösungen",[569,572,574,579,583,586,589,592,594,596,598,603],{"text":115,"config":570},{"href":110,"dataGaName":571,"dataGaLocation":453},"Application Security Testing",{"text":102,"config":573},{"href":86,"dataGaName":87,"dataGaLocation":453},{"text":575,"config":576},"Agile Entwicklung",{"href":577,"dataGaName":578,"dataGaLocation":453},"/de-de/solutions/agile-delivery/","agile delivery",{"text":580,"config":581},"SCM",{"href":99,"dataGaName":582,"dataGaLocation":453},"source code management",{"text":90,"config":584},{"href":92,"dataGaName":585,"dataGaLocation":453},"continuous integration & delivery",{"text":141,"config":587},{"href":143,"dataGaName":588,"dataGaLocation":453},"value stream management",{"text":534,"config":590},{"href":591,"dataGaName":537,"dataGaLocation":453},"/de-de/solutions/gitops/",{"text":154,"config":593},{"href":156,"dataGaName":157,"dataGaLocation":453},{"text":159,"config":595},{"href":161,"dataGaName":162,"dataGaLocation":453},{"text":164,"config":597},{"href":166,"dataGaName":167,"dataGaLocation":453},{"text":599,"config":600},"Bildungswesen",{"href":601,"dataGaName":602,"dataGaLocation":453},"/de-de/solutions/education/","education",{"text":604,"config":605},"Finanzdienstleistungen",{"href":606,"dataGaName":607,"dataGaLocation":453},"/de-de/solutions/finance/","financial services",{"title":174,"links":609},[610,612,614,616,619,621,623,625,627,629,631,633],{"text":186,"config":611},{"href":188,"dataGaName":189,"dataGaLocation":453},{"text":191,"config":613},{"href":193,"dataGaName":194,"dataGaLocation":453},{"text":196,"config":615},{"href":198,"dataGaName":199,"dataGaLocation":453},{"text":201,"config":617},{"href":203,"dataGaName":618,"dataGaLocation":453},"docs",{"text":224,"config":620},{"href":226,"dataGaName":227,"dataGaLocation":453},{"text":219,"config":622},{"href":221,"dataGaName":222,"dataGaLocation":453},{"text":229,"config":624},{"href":231,"dataGaName":232,"dataGaLocation":453},{"text":237,"config":626},{"href":239,"dataGaName":240,"dataGaLocation":453},{"text":242,"config":628},{"href":244,"dataGaName":245,"dataGaLocation":453},{"text":247,"config":630},{"href":249,"dataGaName":250,"dataGaLocation":453},{"text":252,"config":632},{"href":254,"dataGaName":255,"dataGaLocation":453},{"text":257,"config":634},{"href":259,"dataGaName":260,"dataGaLocation":453},{"title":275,"links":636},[637,639,641,643,645,647,649,654,659,661,663,665],{"text":282,"config":638},{"href":284,"dataGaName":277,"dataGaLocation":453},{"text":287,"config":640},{"href":289,"dataGaName":290,"dataGaLocation":453},{"text":295,"config":642},{"href":297,"dataGaName":298,"dataGaLocation":453},{"text":300,"config":644},{"href":302,"dataGaName":303,"dataGaLocation":453},{"text":305,"config":646},{"href":307,"dataGaName":308,"dataGaLocation":453},{"text":310,"config":648},{"href":312,"dataGaName":313,"dataGaLocation":453},{"text":650,"config":651},"Nachhaltigkeit",{"href":652,"dataGaName":653,"dataGaLocation":453},"/sustainability/","Sustainability",{"text":655,"config":656},"Vielfalt, Inklusion und Zugehörigkeit",{"href":657,"dataGaName":658,"dataGaLocation":453},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":315,"config":660},{"href":317,"dataGaName":318,"dataGaLocation":453},{"text":325,"config":662},{"href":327,"dataGaName":328,"dataGaLocation":453},{"text":330,"config":664},{"href":332,"dataGaName":333,"dataGaLocation":453},{"text":666,"config":667},"Transparenzerklärung zu moderner Sklaverei",{"href":668,"dataGaName":669,"dataGaLocation":453},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":671},[672,674,677],{"text":501,"config":673},{"href":503,"dataGaName":504,"dataGaLocation":453},{"text":675,"config":676},"Cookies",{"dataGaName":513,"dataGaLocation":453,"id":514,"isOneTrustButton":15},{"text":506,"config":678},{"href":508,"dataGaName":509,"dataGaLocation":453},14,{"id":681,"title":682,"authorSlugs":683,"authors":685,"body":687,"category":9,"categorySlug":9,"config":688,"content":691,"date":695,"description":692,"extension":13,"externalUrl":6,"featured":10,"heroImage":694,"isFeatured":10,"meta":698,"navigation":15,"path":699,"publishedDate":695,"rawbody":700,"seo":701,"slug":690,"stem":704,"tagSlugs":705,"tags":707,"template":689,"updatedDate":6,"__hash__":708},"blogPosts/de-de/blog/teaching-software-development-the-easy-way-using-gitlab.yml","Softwareentwicklung lehren mit GitLab: ein Praxisbericht",[684],"rod-burns",[686],"Rod Burns","Für Lehrende in der Softwareentwicklung ist die Verwaltung von Assignments\nund Feedback im großen Maßstab eine der größten logistischen Herausforderungen.\nWie gibt man vielen Studierenden Zugang zu Kursmaterialien, hält Musterlösungen\nprivat und liefert trotzdem kontextbezogenes, aussagekräftiges Feedback – ohne\nübermäßigen Verwaltungsaufwand?\n\nDas **[GitLab for Education-Programm](https://about.gitlab.com/de-de/solutions/education/)**\nstellt qualifizierten Bildungseinrichtungen kostenlosen Zugang zu\n**GitLab Ultimate** bereit. Damit können Lehrende professionelle Workflows\naufbauen, die reale Softwareentwicklungsumgebungen abbilden. Stephen G. Dame,\nLehrbeauftragter an der University of Washington mit langjähriger Erfahrung\nals leitender Softwareingenieur bei Boeing Commercial Airplanes, nutzt\ngenau diese Workflows – vom Kursmaterial bis zum Studierendenfeedback, über\nmehrere Lehrveranstaltungen hinweg.\n\n\n## Von der Luft- und Raumfahrt in den Hörsaal\n\nDame brachte aus seiner Zeit bei Boeing umfangreiche GitLab-Erfahrung mit\nin die Hochschullehre. Als früher Fürsprecher von GitLab an seiner Universität\ntrat er dem GitLab for Education-Programm bei, um Zugang zum vollständigen\nFeature-Set für strukturierte, skalierbare Kurs-Workflows zu erhalten.\n\n> **„GitLab bietet die beste Möglichkeit, mehrere Kurse, studentische\n> Assignments, Vorlesungen und Code-Beispiele über Groups und Subgroups\n> zu organisieren – eine Funktion, die ich in dieser Form bei anderen\n> Repository-Plattformen nicht gefunden habe.\"**\n>\n> – Stephen G. Dame, University of Washington, Bothell\n\n\n## Groups aufsetzen: Die richtige Struktur vor der ersten Codezeile\n\nDie Grundlage eines effektiven GitLab-basierten Kurses ist eine\ndurchdachte Group-Hierarchie. GitLabs\n**[Groups und Subgroups](https://docs.gitlab.com/tutorials/manage_user/#create-the-organization-parent-group-and-subgroups)**\nermöglichen es Lehrenden, die natürliche Struktur einer Hochschule –\nInstitution, Kurs und Rolle – mit präzisen, vererbbaren Berechtigungen\nauf jeder Ebene abzubilden.\n\nDames Struktur platziert die Universität als Wurzel (`UWTeaching`), jeder\nKurs erhält eine eigene Subgroup (z. B. `css430`). Innerhalb jedes Kurses\nbefinden sich Repositories für `lecture-materials` und `code` sowie\ndedizierte Subgroups für `students` und `graders`. Unterrichtsmaterialien\nbleiben privat; Studierenden- und Grader-Subgroups sind mit kontrollierten\nBerechtigungen konfiguriert, sodass Aufgabenstellungen und Musterlösungen\nnur den richtigen Personen zugänglich sind.\n\n![Screenshot der GitLab-Group-Hierarchie – Institution, Kurs-Subgroup und studierende-spezifische Subgroups](https://res.cloudinary.com/about-gitlab-com/image/upload/v1777463673/dpxfnitv76pdmvcqtgag.png)\n\nBerechtigungen werden über **Manage > Members** durch die Hierarchie\nweitergegeben. Dame fügt Studierende mit `Reporter`-Zugriff und einem\nAblaufdatum zum Ende der Lehrperiode zur `students`-Subgroup des jeweiligen\nKurses hinzu. Studierende können Assignment-Repositories klonen und pullen,\naber nicht pushen – Musterlösungen bleiben fest unter der Kontrolle der\nLehrenden.\n\nStudierende richten SSH-Schlüssel in all ihren Arbeitsumgebungen (lokale\nRechner, Cloud-Shells, virtuelle Maschinen) ein, um Repositories zu klonen\nund wöchentliche Updates via `git pull` zu erhalten. Sie kopieren relevanten\nCode in eigene private Repositories, um ihre eigene Versionshistorie zu\nverwalten.\n\n**Hinweis für große Lehrveranstaltungen:** Bei größeren Kohorten ist das\nmanuelle Hinzufügen von Studierenden unpraktisch. GitLabs REST-API\nermöglicht die Automatisierung von Subgroup-Erstellung und Mitgliedschaft\naus einer Liste von Benutzernamen. Hier ein Beispiel-Python-Skript:\n\n```python\nimport gitlab\nfrom datetime import datetime\n\n# Verbindung zur GitLab-Instanz herstellen\ngl = gitlab.Gitlab('https://gitlab.com', private_token='YOUR_PRIVATE_TOKEN')\n\n# ID der übergeordneten Group (z. B. die ID für \"css430 > students\")\nparent_group_id = 12345678\n\n# Ablaufdatum: typischerweise Beginn des nächsten Monats nach Ende der Lehrperiode\nexpiry_date = '2025-01-01'\n\n# Liste der gesammelten Studierenden-Benutzernamen\nstudent_list = ['alice_css430', 'bob_css430', 'carol_css430', 'dave_css430', 'eve_css430']\n\nfor username in student_list:\n    try:\n        # 1. Persönliche Subgroup für Studierende erstellen\n        subgroup = gl.groups.create({\n            'name': username,\n            'path': username,\n            'parent_id': parent_group_id,\n            'visibility': 'private'\n        })\n\n        # 2. Studierende mit Ablaufdatum zur neuen Subgroup hinzufügen\n        user = gl.users.list(username=username)[0]\n        subgroup.members.create({\n            'user_id': user.id,\n            'access_level': gitlab.const.REPORTER_ACCESS,\n            'expires_at': expiry_date\n        })\n        print(f\"Erfolg: Subgroup erstellt und Studierende/r hinzugefügt für {username}\")\n    except Exception as e:\n        print(f\"Fehler bei der Verarbeitung von {username}: {e}\")\n```\n\nDarüber hinaus gibt es ein von GitLab veröffentlichtes\n[Open-Source-Projekt zur Automatisierung der Kursverwaltung](https://gitlab.com/edu-docs/class-management-automation),\ndas zusätzliche Werkzeuge für diesen Workflow bereitstellt.\n\n\n## Feedback dort geben, wo die Arbeit wirklich stattfindet\n\nSobald die Struktur steht, zeigt sich der eigentliche Mehrwert von GitLab\nim Feedback-Workflow. Dame bittet Studierende, Assignments durch Öffnen\neines **[Merge Requests](https://docs.gitlab.com/user/project/merge_requests/)**\nin ihrem Repository einzureichen. Das gibt Lehrenden sofort einen sauberen\nDiff von allem, was die Studierenden geschrieben haben.\n\n![Ein GitLab Merge Request mit Inline-Kommentarfunktion für Lehrende](https://res.cloudinary.com/about-gitlab-com/image/upload/v1777467468/icclzyglbkwlvfysggbi.png)\n\nLehrende können auf jede Codezeile klicken und einen **Inline-Kommentar**\nhinterlassen – nicht nur um zu markieren, was falsch ist, sondern um zu\nerklären, warum, und um auf den nächsten Schritt hinzuweisen. Studierende\nerhalten dieses Feedback direkt im Kontext ihres Codes – deutlich\nhandlungsrelevanter als ein Kommentar am Ende eines eingereichten Dokuments.\n\n\n## GitLab for Education nutzen\n\nDie Einrichtung des ersten GitLab-Assignments erfordert anfänglichen Aufwand,\nläuft danach aber weitgehend von selbst. Der eigentliche Mehrwert geht über\ndie Organisation hinaus: Studierende schließen ihr Studium ab, nachdem sie\ntäglich in einer Umgebung gearbeitet haben, die professionelle\nSoftwareentwicklung abbildet – und dabei Gewohnheiten rund um\n[Versionskontrolle](https://about.gitlab.com/de-de/topics/version-control/)\nund [Code-Review](https://docs.gitlab.com/development/code_review/) nicht\nals abstrakte Konzepte kennenlernen, sondern praktisch einüben.\n\nEmpfehlenswert ist ein einfacher Einstieg: eine einzelne Kurs-Group, ein\nAssignment-Template, eine grundlegende Pipeline. Die Struktur wächst\nnatürlich mit der Erfahrung auf der Plattform.\n\n**[Für GitLab for Education anmelden](https://about.gitlab.com/de-de/solutions/education/join/)**,\num Zugang zu allen Top-Tier-Funktionen zu erhalten – darunter unbegrenzte\nReviewer bei Merge Requests, zusätzliche Compute-Minuten und erweiterter\nSpeicherplatz.\n\n> [Jetzt für das GitLab for Education-Programm bewerben](https://about.gitlab.com/de-de/solutions/education/join/).\n",{"featured":10,"template":689,"slug":690},"BlogPost","teaching-software-development-the-easy-way-using-gitlab",{"title":682,"description":692,"authors":693,"heroImage":694,"date":695,"body":687,"category":9,"tags":696},"Wie Lehrbeauftragter Stephen G. Dame GitLab for Education für Kursverwaltung, Assignment-Verteilung und direktes Code-Feedback im Hochschulalltag einsetzt.",[686],"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659537/Blog/Hero%20Images/display-article-image-0679-1800x945-fy26.png","2026-04-29",[602,697],"open source",{},"/de-de/blog/teaching-software-development-the-easy-way-using-gitlab","seo:\n  config:\n    noIndex: false\n  title: 'Softwareentwicklung lehren mit GitLab: ein Praxisbericht'\n  description: 'Wie ein Dozent GitLab for Education nutzt, um Assignments zu verwalten, Kursmaterialien zu verteilen und Studierenden Feedback direkt im Code zu geben.'\ncontent:\n  title: 'Softwareentwicklung lehren mit GitLab: ein Praxisbericht'\n  description: 'Wie Lehrbeauftragter Stephen G. Dame GitLab for Education für Kursverwaltung, Assignment-Verteilung und direktes Code-Feedback im Hochschulalltag einsetzt.'\n  authors:\n    - Rod Burns\n  heroImage: https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659537/Blog/Hero%20Images/display-article-image-0679-1800x945-fy26.png\n  date: 2026-04-29\n  body: |\n    Für Lehrende in der Softwareentwicklung ist die Verwaltung von Assignments\n    und Feedback im großen Maßstab eine der größten logistischen Herausforderungen.\n    Wie gibt man vielen Studierenden Zugang zu Kursmaterialien, hält Musterlösungen\n    privat und liefert trotzdem kontextbezogenes, aussagekräftiges Feedback – ohne\n    übermäßigen Verwaltungsaufwand?\n\n    Das **[GitLab for Education-Programm](https://about.gitlab.com/de-de/solutions/education/)**\n    stellt qualifizierten Bildungseinrichtungen kostenlosen Zugang zu\n    **GitLab Ultimate** bereit. Damit können Lehrende professionelle Workflows\n    aufbauen, die reale Softwareentwicklungsumgebungen abbilden. Stephen G. Dame,\n    Lehrbeauftragter an der University of Washington mit langjähriger Erfahrung\n    als leitender Softwareingenieur bei Boeing Commercial Airplanes, nutzt\n    genau diese Workflows – vom Kursmaterial bis zum Studierendenfeedback, über\n    mehrere Lehrveranstaltungen hinweg.\n\n\n    ## Von der Luft- und Raumfahrt in den Hörsaal\n\n    Dame brachte aus seiner Zeit bei Boeing umfangreiche GitLab-Erfahrung mit\n    in die Hochschullehre. Als früher Fürsprecher von GitLab an seiner Universität\n    trat er dem GitLab for Education-Programm bei, um Zugang zum vollständigen\n    Feature-Set für strukturierte, skalierbare Kurs-Workflows zu erhalten.\n\n    > **„GitLab bietet die beste Möglichkeit, mehrere Kurse, studentische\n    > Assignments, Vorlesungen und Code-Beispiele über Groups und Subgroups\n    > zu organisieren – eine Funktion, die ich in dieser Form bei anderen\n    > Repository-Plattformen nicht gefunden habe.\"**\n    >\n    > – Stephen G. Dame, University of Washington, Bothell\n\n\n    ## Groups aufsetzen: Die richtige Struktur vor der ersten Codezeile\n\n    Die Grundlage eines effektiven GitLab-basierten Kurses ist eine\n    durchdachte Group-Hierarchie. GitLabs\n    **[Groups und Subgroups](https://docs.gitlab.com/tutorials/manage_user/#create-the-organization-parent-group-and-subgroups)**\n    ermöglichen es Lehrenden, die natürliche Struktur einer Hochschule –\n    Institution, Kurs und Rolle – mit präzisen, vererbbaren Berechtigungen\n    auf jeder Ebene abzubilden.\n\n    Dames Struktur platziert die Universität als Wurzel (`UWTeaching`), jeder\n    Kurs erhält eine eigene Subgroup (z. B. `css430`). Innerhalb jedes Kurses\n    befinden sich Repositories für `lecture-materials` und `code` sowie\n    dedizierte Subgroups für `students` und `graders`. Unterrichtsmaterialien\n    bleiben privat; Studierenden- und Grader-Subgroups sind mit kontrollierten\n    Berechtigungen konfiguriert, sodass Aufgabenstellungen und Musterlösungen\n    nur den richtigen Personen zugänglich sind.\n\n    ![Screenshot der GitLab-Group-Hierarchie – Institution, Kurs-Subgroup und studierende-spezifische Subgroups](https://res.cloudinary.com/about-gitlab-com/image/upload/v1777463673/dpxfnitv76pdmvcqtgag.png)\n\n    Berechtigungen werden über **Manage > Members** durch die Hierarchie\n    weitergegeben. Dame fügt Studierende mit `Reporter`-Zugriff und einem\n    Ablaufdatum zum Ende der Lehrperiode zur `students`-Subgroup des jeweiligen\n    Kurses hinzu. Studierende können Assignment-Repositories klonen und pullen,\n    aber nicht pushen – Musterlösungen bleiben fest unter der Kontrolle der\n    Lehrenden.\n\n    Studierende richten SSH-Schlüssel in all ihren Arbeitsumgebungen (lokale\n    Rechner, Cloud-Shells, virtuelle Maschinen) ein, um Repositories zu klonen\n    und wöchentliche Updates via `git pull` zu erhalten. Sie kopieren relevanten\n    Code in eigene private Repositories, um ihre eigene Versionshistorie zu\n    verwalten.\n\n    **Hinweis für große Lehrveranstaltungen:** Bei größeren Kohorten ist das\n    manuelle Hinzufügen von Studierenden unpraktisch. GitLabs REST-API\n    ermöglicht die Automatisierung von Subgroup-Erstellung und Mitgliedschaft\n    aus einer Liste von Benutzernamen. Hier ein Beispiel-Python-Skript:\n\n    ```python\n    import gitlab\n    from datetime import datetime\n\n    # Verbindung zur GitLab-Instanz herstellen\n    gl = gitlab.Gitlab('https://gitlab.com', private_token='YOUR_PRIVATE_TOKEN')\n\n    # ID der übergeordneten Group (z. B. die ID für \"css430 > students\")\n    parent_group_id = 12345678\n\n    # Ablaufdatum: typischerweise Beginn des nächsten Monats nach Ende der Lehrperiode\n    expiry_date = '2025-01-01'\n\n    # Liste der gesammelten Studierenden-Benutzernamen\n    student_list = ['alice_css430', 'bob_css430', 'carol_css430', 'dave_css430', 'eve_css430']\n\n    for username in student_list:\n        try:\n            # 1. Persönliche Subgroup für Studierende erstellen\n            subgroup = gl.groups.create({\n                'name': username,\n                'path': username,\n                'parent_id': parent_group_id,\n                'visibility': 'private'\n            })\n\n            # 2. Studierende mit Ablaufdatum zur neuen Subgroup hinzufügen\n            user = gl.users.list(username=username)[0]\n            subgroup.members.create({\n                'user_id': user.id,\n                'access_level': gitlab.const.REPORTER_ACCESS,\n                'expires_at': expiry_date\n            })\n            print(f\"Erfolg: Subgroup erstellt und Studierende/r hinzugefügt für {username}\")\n        except Exception as e:\n            print(f\"Fehler bei der Verarbeitung von {username}: {e}\")\n    ```\n\n    Darüber hinaus gibt es ein von GitLab veröffentlichtes\n    [Open-Source-Projekt zur Automatisierung der Kursverwaltung](https://gitlab.com/edu-docs/class-management-automation),\n    das zusätzliche Werkzeuge für diesen Workflow bereitstellt.\n\n\n    ## Feedback dort geben, wo die Arbeit wirklich stattfindet\n\n    Sobald die Struktur steht, zeigt sich der eigentliche Mehrwert von GitLab\n    im Feedback-Workflow. Dame bittet Studierende, Assignments durch Öffnen\n    eines **[Merge Requests](https://docs.gitlab.com/user/project/merge_requests/)**\n    in ihrem Repository einzureichen. Das gibt Lehrenden sofort einen sauberen\n    Diff von allem, was die Studierenden geschrieben haben.\n\n    ![Ein GitLab Merge Request mit Inline-Kommentarfunktion für Lehrende](https://res.cloudinary.com/about-gitlab-com/image/upload/v1777467468/icclzyglbkwlvfysggbi.png)\n\n    Lehrende können auf jede Codezeile klicken und einen **Inline-Kommentar**\n    hinterlassen – nicht nur um zu markieren, was falsch ist, sondern um zu\n    erklären, warum, und um auf den nächsten Schritt hinzuweisen. Studierende\n    erhalten dieses Feedback direkt im Kontext ihres Codes – deutlich\n    handlungsrelevanter als ein Kommentar am Ende eines eingereichten Dokuments.\n\n\n    ## GitLab for Education nutzen\n\n    Die Einrichtung des ersten GitLab-Assignments erfordert anfänglichen Aufwand,\n    läuft danach aber weitgehend von selbst. Der eigentliche Mehrwert geht über\n    die Organisation hinaus: Studierende schließen ihr Studium ab, nachdem sie\n    täglich in einer Umgebung gearbeitet haben, die professionelle\n    Softwareentwicklung abbildet – und dabei Gewohnheiten rund um\n    [Versionskontrolle](https://about.gitlab.com/de-de/topics/version-control/)\n    und [Code-Review](https://docs.gitlab.com/development/code_review/) nicht\n    als abstrakte Konzepte kennenlernen, sondern praktisch einüben.\n\n    Empfehlenswert ist ein einfacher Einstieg: eine einzelne Kurs-Group, ein\n    Assignment-Template, eine grundlegende Pipeline. Die Struktur wächst\n    natürlich mit der Erfahrung auf der Plattform.\n\n    **[Für GitLab for Education anmelden](https://about.gitlab.com/de-de/solutions/education/join/)**,\n    um Zugang zu allen Top-Tier-Funktionen zu erhalten – darunter unbegrenzte\n    Reviewer bei Merge Requests, zusätzliche Compute-Minuten und erweiterter\n    Speicherplatz.\n\n    > [Jetzt für das GitLab for Education-Programm bewerben](https://about.gitlab.com/de-de/solutions/education/join/).\n  category: devsecops\n  tags:\n    - education\n    - open source\nconfig:\n  featured: false\n  template: BlogPost\n  slug: teaching-software-development-the-easy-way-using-gitlab\n",{"config":702,"title":682,"description":703},{"noIndex":10},"Wie ein Dozent GitLab for Education nutzt, um Assignments zu verwalten, Kursmaterialien zu verteilen und Studierenden Feedback direkt im Code zu geben.","de-de/blog/teaching-software-development-the-easy-way-using-gitlab",[602,706],"open-source",[602,697],"wEoqOruhYaRjq_g3Ha76tLG8GCzUQj1fS--XitlAteo",[710,719,728,737,745,754,763,772,780],{"content":711,"config":717},{"title":712,"heroImage":713,"category":9,"description":714,"authors":715},"Von Jenkins zu GitLab: Der vollständige Migrationsleitfaden","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663000/Blog/Hero%20Images/tanukilifecycle.png","Schwachstellen in Jenkins-Umgebungen systematisch adressieren – mit GitLab CI als integrierter DevSecOps-Plattform.",[716],"Itzik Gan Baruch",{"externalUrl":-1,"slug":718},"jenkins-gitlab-ultimate-guide-to-modernizing-cicd-environment",{"content":720,"config":726},{"title":721,"heroImage":722,"category":9,"description":723,"authors":724},"KI verändert DevSecOps: Triff GitLab und erfahre, was als Nächstes kommt","https://res.cloudinary.com/about-gitlab-com/image/upload/v1767982271/e9ogyosmuummq7j65zqg.png","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.",[725],"Manav Khurana",{"externalUrl":-1,"slug":727},"ai-is-reshaping-devsecops-attend-gitlab-transcend-to-see-whats-next",{"content":729,"config":735},{"title":730,"heroImage":731,"category":9,"description":732,"authors":733},"Shift Left Security: DevSecOps richtig umsetzen – ein Praxisleitfaden","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765222301/czfqu7ajwcwyyn4beg6k.jpg","Erkenne und behebe Sicherheitslücken früh mit Shift-Left-Security. Lerne aus HackerOnes GitLab-Story und erhalte praxisnahe DevSecOps-Tipps.",[734],"GitLab Germany Team",{"externalUrl":-1,"slug":736},"devsecops-shift-left-guide",{"content":738,"config":743},{"title":739,"heroImage":740,"category":9,"description":741,"authors":742},"Cloud-Kosten systematisch steuern – mit FinOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1760520341/suhp5cpbgzqikafvl7p1.jpg","FinOps verbindet Finance und IT, macht Cloud-Kosten transparent und wandelt reaktive Rechnungszahlung in proaktive Wert-Optimierung um.",[734],{"externalUrl":-1,"slug":744},"what-is-finops",{"content":746,"config":752},{"title":747,"heroImage":748,"category":9,"description":749,"authors":750},"Die Transformation von DevSecOps: Ein Business-Value-Framework für die KI-Integration","https://res.cloudinary.com/about-gitlab-com/image/upload/v1760641309/x7ki2pc5exyhdal7mb5x.png","Wie messe ich den Wert von KI-Integration im Unternehmen? Ein neues Business-Value-Framework aus Sicht der DevSecOps.",[751],"Siyka Andreeva",{"externalUrl":-1,"slug":753},"business-value-framework",{"content":755,"config":761},{"title":756,"heroImage":757,"category":9,"description":758,"authors":759},"Atlassian beendet Data Center – GitLab bietet Wahlfreiheit","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098354/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%281%29_5XrohmuWBNuqL89BxVUzWm_1750098354056.png","Während Atlassian Data Center-Kunden zur Cloud-Migration zwingt, bietet GitLab weiterhin flexible Deployment-Optionen für unterschiedliche Geschäftsanforderungen.",[760],"Emilio Salvador",{"externalUrl":-1,"slug":762},"atlassian-ending-data-center-as-gitlab-maintains-deployment-choice",{"content":764,"config":770},{"title":765,"heroImage":766,"category":9,"description":767,"authors":768},"Warum jetzt die Zeit für Embedded DevSecOps ist","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,w_1640,h_1000,c_lfill/v1749659978/Blog/Hero%20Images/automation.png","Erfahre, wie Embedded-Entwicklungsteams lange Feedback-Zyklen, manuelle Compliance und isolierte Entwicklung mit DevSecOps bewältigen.",[769],"Matt DeLaney",{"externalUrl":-1,"slug":771},"why-now-is-the-time-for-embedded-devsecops",{"content":773,"config":778},{"title":774,"heroImage":775,"category":9,"description":776,"authors":777},"Warum steigen Unternehmen auf eine einheitliche DevSecOps-Plattform um?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097063/Blog/Hero%20Images/Blog/Hero%20Images/securitylifecycle-light_securitylifecycle-light.png_1750097063583.png","Erfahre mehr über die einheitliche DevSecOps-Plattform von GitLab, die Tools integriert, Sicherheit verbessert und KI für eine effiziente Softwareentwicklung nutzt.",[716],{"externalUrl":-1,"slug":779},"why-are-organizations-moving-to-a-unified-devsecops-platform",{"content":781,"config":787},{"title":782,"heroImage":783,"category":9,"description":784,"authors":785},"Der ultimative CI/CD-Leitfaden: Grundlagen für die erweiterte Implementierung","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660151/Blog/Hero%20Images/blog-image-template-1800x945__26_.png","Erfahre, wie du die kontinuierliche Integration/kontinuierliche Bereitstellung modernisierst und die Entwicklung, Lieferung und Sicherheit von Pipelines automatisierst.",[786],"Sandra Gittlen",{"externalUrl":-1,"slug":788},"ultimate-guide-to-ci-cd-fundamentals-to-advanced-implementation",1777493568889]