[{"data":1,"prerenderedAt":890},["ShallowReactive",2],{"/blog/devops-containers-gitlab-openshift":3,"navigation-en-us":132,"banner-en-us":562,"footer-en-us":572,"blog-post-authors-en-us-Erica Lindberg":830,"blog-related-posts-en-us-devops-containers-gitlab-openshift":845,"blog-share-wrapper-en-us":870,"next-steps-en-us":880},{"id":4,"title":5,"authors":6,"body":8,"category":106,"date":107,"description":108,"extension":109,"externalUrl":110,"faq":110,"featured":111,"heroImage":112,"meta":113,"navigation":122,"path":123,"seo":124,"slug":128,"stem":129,"tags":110,"template":130,"updatedDate":110,"__hash__":131},"blogPosts/en-us/blog/devops-containers-gitlab-openshift.md","Demo - Auto Deploy from GitLab to an OpenShift container cluster",[7],"Erica Lindberg",{"type":9,"value":10,"toc":97},"minimark",[11,26,31,34,37,40,54,59,62,75,79],[12,13,14,15,20,21,25],"p",{},"Containers are an essential tool for achieving ",[16,17,19],"a",{"href":18},"/platform/","DevOps"," at scale. Bringing code and infrastructure closer together, containers provide consistency across environments and tools for developers, QA, and IT. Using GitLab's ",[16,22,24],{"href":23},"/solutions/continuous-integration/","built-in CI/CD"," and our integration with OpenShift, you can run all of your CI/CD jobs in a container cluster.",[27,28,30],"h2",{"id":29},"what-is-a-container","What is a container?",[12,32,33],{},"Containers work much like a virtual machine except that, instead of packaging your code with an operating system, containers are run as a Linux process inside of the kernel. This means that each container only contains the code and dependencies needed to run that specific application, making them smaller and faster to run.",[12,35,36],{},"For developers, containers make it possible to build one version of an application that can be easily deployed to multiple types of environments. Essentially, whatever developers and QA runs, is exactly what finds its way to production. What you see in development is what you see in testing, staging, and production. Code can be shipped faster when packaged in a container because errors and bugs are caught earlier in process.",[12,38,39],{},"Communication and collaboration between developers and operations also improves because developers have seen exactly what it is that operations is getting, and operations are running exactly what the developers gave them. The result is that everyone can focus more on shipping quality code faster because applications don't have to be rebuilt as they move through the development lifecycle.",[12,41,42,43,47,48,53],{},"GitLab integrates with both Kubernetes and OpenShift container orchestration platforms, making it possible to run ",[16,44,46],{"href":45},"/topics/ci-cd/","continuous integration and continuous delivery"," related jobs in the cluster. It also gives you the ability to set up different environments, called ",[16,49,52],{"href":50,"rel":51},"https://docs.gitlab.com/ci/review_apps/",[],"Review Apps",", for different branches of your code base. Review Apps make it easy to view and test changes in an environment, in the cluster, so you can iterate and test faster.",[55,56,58],"h3",{"id":57},"demo","Demo",[12,60,61],{},"In this demonstration, Senior Build Engineer DJ Mountney, will show how you can build, test, and deploy a basic application in a container from GitLab to an OpenShift container cluster.",[63,64,67,68],"figure",{"className":65},[66],"video_container","\n  ",[69,70,74],"iframe",{"src":71,"frameBorder":72,"allowFullScreen":73},"https://www.youtube.com/embed/EwbhA53Jpp4","0","true"," ",[55,76,78],{"id":77},"watch-the-webcast","Watch the webcast",[12,80,81,82,86,87,74,92,96],{},"To learn more about containers, how they can help scale your ",[16,83,85],{"href":84},"/topics/devops/","DevOps workflow",", and the GitLab/OpenShift integration, ",[16,88,91],{"href":89,"rel":90},"https://www.youtube.com/watch?v=uofcDMclUnk&feature=youtu.be",[],"watch",[93,94,95],"strong",{},"The DevOps Journey: Using Containers webcast",".",{"title":98,"searchDepth":99,"depth":99,"links":100},"",2,[101],{"id":29,"depth":99,"text":30,"children":102},[103,105],{"id":57,"depth":104,"text":58},3,{"id":77,"depth":104,"text":78},"engineering","2017-05-16","See how to reliably and repeatably build, test, and deploy an application in a container from GitLab to the OpenShift container cluster.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671657/Blog/Hero%20Images/devops-openshift-webcast-blog-cover.png",{"excerpt":114},{"type":9,"value":115},[116],[12,117,14,118,20,120,25],{},[16,119,19],{"href":18},[16,121,24],{"href":23},true,"/en-us/blog/devops-containers-gitlab-openshift",{"title":5,"description":108,"ogTitle":5,"ogDescription":108,"noIndex":111,"ogImage":112,"ogUrl":125,"ogSiteName":126,"ogType":127,"canonicalUrls":125},"https://about.gitlab.com/blog/devops-containers-gitlab-openshift","https://about.gitlab.com","article","devops-containers-gitlab-openshift","en-us/blog/devops-containers-gitlab-openshift","BlogPost","Ja1TRnjkvyAvletK6jryUms1WnLGdTy8zdwBRu8PlnY",{"logo":133,"freeTrial":138,"sales":143,"login":148,"items":153,"search":482,"minimal":513,"duo":532,"switchNav":541,"pricingDeployment":552},{"config":134},{"href":135,"dataGaName":136,"dataGaLocation":137},"/","gitlab logo","header",{"text":139,"config":140},"Get free trial",{"href":141,"dataGaName":142,"dataGaLocation":137},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":144,"config":145},"Request a demo",{"href":146,"dataGaName":147,"dataGaLocation":137},"/request-a-demo/","sales",{"text":149,"config":150},"Sign in",{"href":151,"dataGaName":152,"dataGaLocation":137},"https://gitlab.com/users/sign_in/","sign in",[154,238,326,331,406,460],{"text":155,"left":122,"config":156,"menu":158},"Platform",{"dataNavLevelOne":157},"platform",{"type":159,"link":160,"columns":163,"feature":227},"lists",{"text":161,"config":162},"Explore the Platform",{"href":18,"dataGaName":157,"dataGaLocation":137},[164,186,209],{"title":165,"items":166},"Execution & Workflows",[167,171,176,181],{"text":168,"config":169},"CI/CD",{"href":23,"dataGaLocation":137,"dataGaName":170},"ci/cd",{"text":172,"config":173},"Source Code Management",{"href":174,"dataGaLocation":137,"dataGaName":175},"/solutions/source-code-management/","source code management",{"text":177,"config":178},"Agile Delivery",{"href":179,"dataGaLocation":137,"dataGaName":180},"/solutions/agile-delivery/","agile delivery",{"text":182,"config":183},"Artifact Management",{"href":184,"dataGaLocation":137,"dataGaName":185},"/artifact-central/","artifact management",{"title":187,"items":188},"Security & Governance",[189,194,199,204],{"text":190,"config":191},"Application Security Testing",{"href":192,"dataGaLocation":137,"dataGaName":193},"/solutions/application-security-testing/","application security testing",{"text":195,"config":196},"Governance & Compliance",{"href":197,"dataGaLocation":137,"dataGaName":198},"/solutions/software-compliance/","governance and compliance",{"text":200,"config":201},"Secrets Management",{"href":202,"dataGaLocation":137,"dataGaName":203},"/gitlab-secrets-manager/","secrets management",{"text":205,"config":206},"Supply Chain Security",{"href":207,"dataGaLocation":137,"dataGaName":208},"/solutions/supply-chain/","supply chain security",{"title":210,"items":211},"Context & AI",[212,217,222],{"text":213,"config":214},"Agentic Orchestration",{"href":215,"dataGaLocation":137,"dataGaName":216},"/gitlab-duo-agent-platform/","agentic orchestration",{"text":218,"config":219},"Context Graph",{"href":220,"dataGaLocation":137,"dataGaName":221},"/gitlab-orbit/","context graph",{"text":223,"config":224},"Visibility & Measurement",{"href":225,"dataGaLocation":137,"dataGaName":226},"/solutions/visibility-measurement/","visibility and measurement",{"config":228,"title":231,"text":232,"link":233},{"background":229,"textColor":230},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Why GitLab","One platform for speed with control across your software lifecycle.",{"text":234,"config":235},"Learn more",{"href":236,"dataGaName":237,"dataGaLocation":137},"/why-gitlab/","why gitlab",{"text":239,"left":122,"config":240,"menu":242},"Solutions",{"dataNavLevelOne":241},"solutions",{"type":159,"link":243,"columns":247,"feature":317},{"text":244,"config":245},"View all Solutions",{"href":246,"dataGaName":241,"dataGaLocation":137},"/solutions/",[248,266,284],{"title":249,"items":250},"Outcomes",[251,256,261],{"text":252,"config":253},"DevOps Modernization",{"href":254,"dataGaLocation":137,"dataGaName":255},"/assessments/devops-modernization-assessment/","devops modernization",{"text":257,"config":258},"Security Modernization",{"href":259,"dataGaLocation":137,"dataGaName":260},"/assessments/security-modernization-assessment/","security modernization",{"text":262,"config":263},"AI Modernization",{"href":264,"dataGaLocation":137,"dataGaName":265},"/assessments/ai-modernization-assessment/","ai modernization",{"title":267,"items":268},"By size",[269,274,279],{"text":270,"config":271},"Enterprise",{"href":272,"dataGaLocation":137,"dataGaName":273},"/enterprise/","enterprise",{"text":275,"config":276},"Small Business",{"href":277,"dataGaLocation":137,"dataGaName":278},"/small-business/","small business",{"text":280,"config":281},"Startups",{"href":282,"dataGaLocation":137,"dataGaName":283},"/solutions/startups/","startups",{"title":285,"items":286},"Industries",[287,292,297,302,307,312],{"text":288,"config":289},"Financial Services",{"href":290,"dataGaLocation":137,"dataGaName":291},"/solutions/finance/","financial services",{"text":293,"config":294},"Public Sector",{"href":295,"dataGaLocation":137,"dataGaName":296},"/solutions/public-sector/","public sector",{"text":298,"config":299},"Telecommunications",{"href":300,"dataGaLocation":137,"dataGaName":301},"/solutions/telecommunications/","telecommunications",{"text":303,"config":304},"Automotive",{"href":305,"dataGaLocation":137,"dataGaName":306},"/solutions/automotive/","automotive",{"text":308,"config":309},"Education",{"href":310,"dataGaLocation":137,"dataGaName":311},"/solutions/education/","education",{"text":313,"config":314},"Aerospace",{"href":315,"dataGaLocation":137,"dataGaName":316},"/solutions/aerospace/","aerospace",{"config":318,"title":319,"text":320,"link":321},{"background":229,"textColor":230},"GitLab Security Standard","Learn how to harden your software factory and let AI agents earn autonomy, without trading away security.",{"text":322,"config":323},"Explore the standard",{"href":324,"dataGaName":325,"dataGaLocation":137},"/gitlab-security-standard/","gitlab security standard",{"text":327,"config":328},"Pricing",{"href":329,"dataGaName":330,"dataGaLocation":137,"dataNavLevelOne":330},"/pricing/","pricing",{"text":332,"config":333,"menu":335},"Resources",{"dataNavLevelOne":334},"resources",{"type":159,"link":336,"columns":340,"feature":397},{"text":337,"config":338},"View all resources",{"href":339,"dataGaName":334,"dataGaLocation":137},"/resources/",[341,369],{"title":342,"items":343},"Discover",[344,349,354,359,364],{"text":345,"config":346},"Docs",{"href":347,"dataGaName":348,"dataGaLocation":137},"https://docs.gitlab.com/","docs",{"text":350,"config":351},"University",{"href":352,"dataGaName":353,"dataGaLocation":137},"https://university.gitlab.com/","university",{"text":355,"config":356},"Demo Series",{"href":357,"dataGaName":358,"dataGaLocation":137},"/gitlab-technical-demo-series/","demo series",{"text":360,"config":361},"Demo Hub",{"href":362,"dataGaName":363,"dataGaLocation":137},"/demo-hub/","demo hub",{"text":365,"config":366},"Services",{"href":367,"dataGaName":368,"dataGaLocation":137},"/services/","services",{"title":370,"items":371},"Connect",[372,377,382,387,392],{"text":373,"config":374},"Blog",{"href":375,"dataGaName":376,"dataGaLocation":137},"/blog/","blog",{"text":378,"config":379},"Community",{"href":380,"dataGaName":381,"dataGaLocation":137},"/community/","community",{"text":383,"config":384},"Customers",{"href":385,"dataGaName":386,"dataGaLocation":137},"/customers/","customers",{"text":388,"config":389},"Partners",{"href":390,"dataGaName":391,"dataGaLocation":137},"/partners/","partners",{"text":393,"config":394},"Events",{"href":395,"dataGaName":396,"dataGaLocation":137},"/events/","events",{"config":398,"title":399,"text":400,"link":401},{"background":229,"textColor":230},"What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":402,"config":403},"Read the latest",{"href":404,"dataGaName":405,"dataGaLocation":137},"/whats-new/","whats new",{"text":407,"config":408,"menu":410},"Company",{"dataNavLevelOne":409},"company",{"type":159,"columns":411},[412],{"items":413},[414,419,425,430,435,440,445,450,455],{"text":415,"config":416},"About",{"href":417,"dataGaName":418,"dataGaLocation":137},"/company/","about",{"text":420,"config":421,"footerGa":424},"Jobs",{"href":422,"dataGaName":423,"dataGaLocation":137},"/jobs/","jobs",{"dataGaName":423},{"text":426,"config":427},"Press",{"href":428,"dataGaName":429,"dataGaLocation":137},"/press/","press",{"text":431,"config":432},"Handbook",{"href":433,"dataGaName":434,"dataGaLocation":137},"https://handbook.gitlab.com/","handbook",{"text":436,"config":437},"Leadership",{"href":438,"dataGaName":439,"dataGaLocation":137},"/company/team/e-group/","leadership",{"text":441,"config":442},"Investor relations",{"href":443,"dataGaName":444,"dataGaLocation":137},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":446,"config":447},"Trust Center",{"href":448,"dataGaName":449,"dataGaLocation":137},"/security/","trust center",{"text":451,"config":452},"AI Transparency Center",{"href":453,"dataGaName":454,"dataGaLocation":137},"/ai-transparency-center/","ai transparency center",{"text":456,"config":457},"Newsletter",{"href":458,"dataGaName":459,"dataGaLocation":137},"/company/contact/#contact-forms","newsletter",{"text":461,"config":462,"menu":463},"Contact us",{"dataNavLevelOne":409},{"type":159,"columns":464},[465],{"items":466},[467,472,477],{"text":468,"config":469},"Talk to sales",{"href":470,"dataGaName":471,"dataGaLocation":137},"/sales/","talk to sales",{"text":473,"config":474},"Support portal",{"href":475,"dataGaName":476,"dataGaLocation":137},"https://support.gitlab.com/hc/en-us","support portal",{"text":478,"config":479},"Customer portal",{"href":480,"dataGaName":481,"dataGaLocation":137},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":483,"login":484,"suggestions":491},"Close",{"text":485,"link":486},"To search repositories and projects, login to",{"text":487,"config":488},"gitlab.com",{"href":151,"dataGaName":489,"dataGaLocation":490},"search login","search",{"text":492,"default":493},"Suggestions",[494,497,500,502,506,510],{"text":495,"config":496},"GitLab Duo Agent Platform",{"href":215,"dataGaName":495,"dataGaLocation":490},{"text":498,"config":499},"Code Suggestions (AI)",{"href":215,"dataGaName":498,"dataGaLocation":490},{"text":168,"config":501},{"href":23,"dataGaName":168,"dataGaLocation":490},{"text":503,"config":504},"GitLab on AWS",{"href":505,"dataGaName":503,"dataGaLocation":490},"/partners/technology-partners/aws/",{"text":507,"config":508},"GitLab on Google Cloud",{"href":509,"dataGaName":507,"dataGaLocation":490},"/partners/technology-partners/google-cloud-platform/",{"text":511,"config":512},"Why GitLab?",{"href":236,"dataGaName":511,"dataGaLocation":490},{"freeTrial":514,"mobileIcon":519,"desktopIcon":524,"secondaryButton":527},{"text":515,"config":516},"Start free trial",{"href":517,"dataGaName":142,"dataGaLocation":518},"https://gitlab.com/-/trials/new/","nav",{"altText":520,"config":521},"Gitlab Icon",{"src":522,"dataGaName":523,"dataGaLocation":518},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":520,"config":525},{"src":526,"dataGaName":523,"dataGaLocation":518},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":528,"config":529},"Get Started",{"href":530,"dataGaName":531,"dataGaLocation":518},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":533,"mobileIcon":537,"desktopIcon":539},{"text":534,"config":535},"Learn more about GitLab Duo",{"href":215,"dataGaName":536,"dataGaLocation":518},"gitlab duo",{"altText":520,"config":538},{"src":522,"dataGaName":523,"dataGaLocation":518},{"altText":520,"config":540},{"src":526,"dataGaName":523,"dataGaLocation":518},{"button":542,"mobileIcon":547,"desktopIcon":549},{"text":543,"config":544},"/switch",{"href":545,"dataGaName":546,"dataGaLocation":518},"#contact","switch",{"altText":520,"config":548},{"src":522,"dataGaName":523,"dataGaLocation":518},{"altText":520,"config":550},{"src":551,"dataGaName":523,"dataGaLocation":518},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":553,"mobileIcon":558,"desktopIcon":560},{"text":554,"config":555},"Back to pricing",{"href":329,"dataGaName":556,"dataGaLocation":518,"icon":557},"back to pricing","GoBack",{"altText":520,"config":559},{"src":522,"dataGaName":523,"dataGaLocation":518},{"altText":520,"config":561},{"src":526,"dataGaName":523,"dataGaLocation":518},{"title":563,"button":564,"config":570},"Ship at agent speed. Prove every step. Transcend is here.",{"text":565,"config":566},"Watch now",{"href":567,"dataGaName":568,"dataGaLocation":569},"/events/transcend/virtual/#watch-gitlab-transcend","transcend-october-2026-banner","global-banner",{"layout":571,"disabled":111},"release",{"data":573},{"text":574,"source":575,"edit":581,"contribute":586,"config":591,"items":596,"minimal":819},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":576,"config":577},"View page source",{"href":578,"dataGaName":579,"dataGaLocation":580},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":582,"config":583},"Edit this page",{"href":584,"dataGaName":585,"dataGaLocation":580},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":587,"config":588},"Please contribute",{"href":589,"dataGaName":590,"dataGaLocation":580},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":592,"facebook":593,"youtube":594,"linkedin":595},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[597,644,699,746,787],{"title":327,"links":598,"subMenu":613},[599,603,608],{"text":600,"config":601},"View plans",{"href":329,"dataGaName":602,"dataGaLocation":580},"view plans",{"text":604,"config":605},"Why Premium?",{"href":606,"dataGaName":607,"dataGaLocation":580},"/pricing/premium/","why premium",{"text":609,"config":610},"Why Ultimate?",{"href":611,"dataGaName":612,"dataGaLocation":580},"/pricing/ultimate/","why ultimate",[614],{"title":615,"links":616},"Contact Us",[617,620,622,624,629,634,639],{"text":618,"config":619},"Contact sales",{"href":470,"dataGaName":147,"dataGaLocation":580},{"text":473,"config":621},{"href":475,"dataGaName":476,"dataGaLocation":580},{"text":478,"config":623},{"href":480,"dataGaName":481,"dataGaLocation":580},{"text":625,"config":626},"Status",{"href":627,"dataGaName":628,"dataGaLocation":580},"https://status.gitlab.com/","status",{"text":630,"config":631},"Terms of use",{"href":632,"dataGaName":633,"dataGaLocation":580},"/terms/","terms of use",{"text":635,"config":636},"Privacy statement",{"href":637,"dataGaName":638,"dataGaLocation":580},"/privacy/","privacy statement",{"text":640,"config":641},"Cookie preferences",{"dataGaName":642,"dataGaLocation":580,"id":643,"isOneTrustButton":122},"cookie preferences","ot-sdk-btn",{"title":155,"links":645,"subMenu":659},[646,649,651,653,655,657],{"text":647,"config":648},"Explore the platform",{"href":18,"dataGaName":157,"dataGaLocation":580},{"text":213,"config":650},{"href":215,"dataGaName":216,"dataGaLocation":580},{"text":168,"config":652},{"href":23,"dataGaName":170,"dataGaLocation":580},{"text":218,"config":654},{"href":220,"dataGaName":221,"dataGaLocation":580},{"text":200,"config":656},{"href":202,"dataGaName":203,"dataGaLocation":580},{"text":231,"config":658},{"href":236,"dataGaName":237,"dataGaLocation":580},[660],{"title":661,"links":662},"Topics",[663,666,671,674,679,684,689,694],{"text":168,"config":664},{"href":45,"dataGaName":665,"dataGaLocation":580},"cicd",{"text":667,"config":668},"GitOps",{"href":669,"dataGaName":670,"dataGaLocation":580},"/topics/gitops/","gitops",{"text":19,"config":672},{"href":84,"dataGaName":673,"dataGaLocation":580},"devops",{"text":675,"config":676},"Version Control",{"href":677,"dataGaName":678,"dataGaLocation":580},"/topics/version-control/","version control",{"text":680,"config":681},"DevSecOps",{"href":682,"dataGaName":683,"dataGaLocation":580},"/topics/devsecops/","devsecops",{"text":685,"config":686},"Cloud Native",{"href":687,"dataGaName":688,"dataGaLocation":580},"/topics/cloud-native/","cloud native",{"text":690,"config":691},"AI for Coding",{"href":692,"dataGaName":693,"dataGaLocation":580},"/topics/devops/ai-for-coding/","ai for coding",{"text":695,"config":696},"Agentic AI",{"href":697,"dataGaName":698,"dataGaLocation":580},"/topics/agentic-ai/","agentic ai",{"title":239,"links":700},[701,704,707,710,713,716,718,720,722,724,726,729,731,734,738,742],{"text":702,"config":703},"DevOps modernization",{"href":254,"dataGaName":255,"dataGaLocation":580},{"text":705,"config":706},"Security modernization",{"href":259,"dataGaName":260,"dataGaLocation":580},{"text":708,"config":709},"AI modernization",{"href":264,"dataGaName":265,"dataGaLocation":580},{"text":711,"config":712},"Financial services",{"href":290,"dataGaName":291,"dataGaLocation":580},{"text":714,"config":715},"Public sector",{"href":295,"dataGaName":296,"dataGaLocation":580},{"text":298,"config":717},{"href":300,"dataGaName":301,"dataGaLocation":580},{"text":303,"config":719},{"href":305,"dataGaName":306,"dataGaLocation":580},{"text":308,"config":721},{"href":310,"dataGaName":311,"dataGaLocation":580},{"text":313,"config":723},{"href":315,"dataGaName":316,"dataGaLocation":580},{"text":270,"config":725},{"href":272,"dataGaName":273,"dataGaLocation":580},{"text":727,"config":728},"Small business",{"href":277,"dataGaName":278,"dataGaLocation":580},{"text":280,"config":730},{"href":282,"dataGaName":283,"dataGaLocation":580},{"text":667,"config":732},{"href":733,"dataGaName":670,"dataGaLocation":580},"/solutions/gitops/",{"text":735,"config":736},"Software composition analysis",{"href":207,"dataGaName":737,"dataGaLocation":580},"software composition analysis",{"text":739,"config":740},"Value stream management",{"href":225,"dataGaName":741,"dataGaLocation":580},"value stream management",{"text":743,"config":744},"All solutions",{"href":246,"dataGaName":745,"dataGaLocation":580},"all solutions",{"title":332,"links":747},[748,753,758,760,762,764,766,768,770,772,774,776,778,780,783],{"text":749,"config":750},"Install",{"href":751,"dataGaName":752,"dataGaLocation":580},"/install/","install",{"text":754,"config":755},"Quick start guides",{"href":756,"dataGaName":757,"dataGaLocation":580},"/get-started/","quick setup checklists",{"text":345,"config":759},{"href":347,"dataGaName":348,"dataGaLocation":580},{"text":350,"config":761},{"href":352,"dataGaName":353,"dataGaLocation":580},{"text":355,"config":763},{"href":357,"dataGaName":358,"dataGaLocation":580},{"text":360,"config":765},{"href":362,"dataGaName":363,"dataGaLocation":580},{"text":365,"config":767},{"href":367,"dataGaName":368,"dataGaLocation":580},{"text":373,"config":769},{"href":375,"dataGaName":376,"dataGaLocation":580},{"text":378,"config":771},{"href":380,"dataGaName":381,"dataGaLocation":580},{"text":383,"config":773},{"href":385,"dataGaName":386,"dataGaLocation":580},{"text":388,"config":775},{"href":390,"dataGaName":391,"dataGaLocation":580},{"text":393,"config":777},{"href":395,"dataGaName":396,"dataGaLocation":580},{"text":456,"config":779},{"href":458,"dataGaName":459,"dataGaLocation":580},{"text":781,"config":782},"What's new",{"href":404,"dataGaName":405,"dataGaLocation":580},{"text":784,"config":785},"All resources",{"href":339,"dataGaName":786,"dataGaLocation":580},"all resources",{"title":407,"links":788},[789,791,793,795,797,799,801,803,805,809,814],{"text":415,"config":790},{"href":417,"dataGaName":409,"dataGaLocation":580},{"text":420,"config":792},{"href":422,"dataGaName":423,"dataGaLocation":580},{"text":426,"config":794},{"href":428,"dataGaName":429,"dataGaLocation":580},{"text":431,"config":796},{"href":433,"dataGaName":434,"dataGaLocation":580},{"text":436,"config":798},{"href":438,"dataGaName":439,"dataGaLocation":580},{"text":441,"config":800},{"href":443,"dataGaName":444,"dataGaLocation":580},{"text":446,"config":802},{"href":448,"dataGaName":449,"dataGaLocation":580},{"text":451,"config":804},{"href":453,"dataGaName":454,"dataGaLocation":580},{"text":806,"config":807},"Sustainability",{"href":808,"dataGaName":806,"dataGaLocation":580},"/sustainability/",{"text":810,"config":811},"Diversity, inclusion and belonging (DIB)",{"href":812,"dataGaName":813,"dataGaLocation":580},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":815,"config":816},"Modern Slavery Transparency Statement",{"href":817,"dataGaName":818,"dataGaLocation":580},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":820},[821,824,827],{"text":822,"config":823},"Terms",{"href":632,"dataGaName":633,"dataGaLocation":580},{"text":825,"config":826},"Cookies",{"dataGaName":642,"dataGaLocation":580,"id":643,"isOneTrustButton":122},{"text":828,"config":829},"Privacy",{"href":637,"dataGaName":638,"dataGaLocation":580},[831],{"id":832,"title":7,"body":110,"config":833,"content":835,"description":110,"extension":839,"meta":840,"navigation":122,"path":841,"seo":842,"stem":843,"__hash__":844},"blogAuthors/en-us/blog/authors/erica-lindberg.yml",{"template":834},"BlogAuthor",{"name":7,"config":836},{"headshot":837,"ctfId":838},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Erica-Lindberg","yml",{},"/en-us/blog/authors/erica-lindberg",{},"en-us/blog/authors/erica-lindberg","2NuAghiMZoP3e2gZ-QRtP0bFevE5RWHqMYcdWxlVeeQ",[846,854,862],{"title":847,"description":848,"heroImage":849,"category":106,"date":850,"authors":851,"slug":853,"externalUrl":110},"Two front doors: Module-level access in a Django GRC app","A technical deep-dive on restructuring a Django internal tool to support two distinct GitLab teams: Security Compliance and Internal Audit.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097663/Blog/Hero%20Images/Blog/Hero%20Images/Workflow%201800x945_2gQoQIbY9NvjLFpXtsxtXy_1750097663612.png","2026-10-05",[852],"Donovan Felton","module-level-access-in-a-django-grc-app",{"title":855,"description":856,"heroImage":857,"category":106,"date":858,"authors":859,"slug":861,"externalUrl":110},"How GitLab reduced code-per-agentic-flow ratio by 45%","Learn how Flow Registry, a component-based framework that compiles YAML configurations into fully functional LangGraph flows, helped improve scalability and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-09-22",[860],"Mikolaj Wawrzyniak","how-gitlab-reduced-code-per-agentic-flow-ratio",{"title":863,"description":864,"heroImage":865,"category":106,"date":866,"authors":867,"slug":869,"externalUrl":110},"Co-Create: Building GitLab with our users","How GitLab users collaborated with us to build practical product improvements in the first half of 2026.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-09-10",[868],"Isa Huerga","co-create-h1-2026",{"header":871,"text":872,"button":876,"disclaimer":879},"Start your free\n\n30-day GitLab trial\n",[873,874,875],"GitLab Duo Agent Platform access","Try our most advanced features","Automate complex tasks with AI",{"text":139,"config":877},{"href":878,"dataGaName":142,"dataGaLocation":376},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/blog/","No credit card required.",{"header":881,"blurb":882,"button":883,"secondaryButton":888},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":884,"config":885},"Get your free trial",{"href":886,"dataGaName":142,"dataGaLocation":887},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":618,"config":889},{"href":470,"dataGaName":147,"dataGaLocation":887},1792008631860]