[{"data":1,"prerenderedAt":1015},["ShallowReactive",2],{"/blog/why-did-we-choose-to-integrate-fluxcd-with-gitlab":3,"navigation-en-us":229,"banner-en-us":657,"footer-en-us":667,"blog-post-authors-en-us-Viktor Nagy":910,"blog-related-posts-en-us-why-did-we-choose-to-integrate-fluxcd-with-gitlab":925,"blog-promotions-en-us":951,"next-steps-en-us":1005},{"id":4,"title":5,"authors":6,"body":8,"category":206,"date":207,"description":208,"extension":209,"externalUrl":210,"faq":210,"featured":211,"heroImage":212,"meta":213,"navigation":214,"path":215,"seo":216,"slug":220,"stem":221,"tags":222,"template":227,"updatedDate":210,"__hash__":228},"blogPosts/en-us/blog/why-did-we-choose-to-integrate-fluxcd-with-gitlab.md","GitOps with GitLab: What you need to know about the Flux CD integration",[7],"Viktor Nagy",{"type":9,"value":10,"toc":198},"minimark",[11,28,31,46,51,54,57,61,70,73,76,80,89,104,119,123,143,146,152,155],[12,13,14,15,21,22,27],"p",{},"In January, ",[16,17,20],"a",{"href":18,"rel":19},"https://gitlab.com/gitlab-org/gitlab/-/issues/357947",[],"we decided to integrate Flux CD with the GitLab agent for Kubernetes",". ",[16,23,26],{"href":24,"rel":25},"https://fluxcd.io/",[],"Flux CD"," is a mature GitOps solution and one of the market leaders in the area. We have since decided to make Flux CD our recommended approach to do GitOps with GitLab – previously, the agent for Kubernetes alone was the recommended approach. Let's discuss what this change means for current users and what our plans are for the integration.",[12,29,30],{},"First of all, let's remove the most worrying thought from the agenda: We are not deprecating any agent for Kubernetes functionality at this point. The GitOps offering remains fully supported and transitions to maintenance mode. We plan to deprecate it with at least one year of removal time once we consider the Flux integration solid. As a result, the removal is unlikely before the GitLab 17.0 release, which is expected in 2024. We are looking into providing tooling to facilitate (or automate) the migration once the time comes. If you use the agent for Kubernetes for GitOps, you don't have to do anything at this time.",[12,32,33,34,39,40,45],{},"This change does not affect the agent's other non-GitOps functionality either. The ",[16,35,38],{"href":36,"rel":37},"https://docs.gitlab.com/user/clusters/agent/ci_cd_workflow/",[],"CI/CD pipeline integration"," and ",[16,41,44],{"href":42,"rel":43},"https://docs.gitlab.com/user/clusters/agent/vulnerabilities/",[],"operational container scanning"," remain intact, and we will continue investing in them.",[47,48,50],"h2",{"id":49},"what-to-expect-from-this-change","What to expect from this change",[12,52,53],{},"From now on, instead of building our solution for GitOps, we will focus on supporting Flux and improving its user experience when it is used together with GitLab. Flux CD will become the recommended tool to do GitOps with GitLab. Initially, we will provide documentation on the Flux setup we recommend for our users while we focus on building out various integrations.",[12,55,56],{},"In terms of the integrations, we are looking at providing a UI built into GitLab. You might also be able to use the UI with other tools, including the CI pipeline integration of the agent, but it will work best with deployments managed by Flux. Besides the UI integration, we want to streamline Flux's access management. Flux accesses GitLab through the regular GitLab front door. As a result, it needs to authenticate with a token, requests might be rate-limited, and, in general, it does not seem to be the most efficient way to do its job. We plan to simplify this for our users to avoid the necessity of managing dozens of deploy keys and to decrease the load on GitLab at the same time.",[47,58,60],{"id":59},"why-flux","Why Flux?",[12,62,63,64,69],{},"Why did we choose Flux CD instead of something else? We evaluated several options. There are other open-source GitOps tools. The biggest contender was ",[16,65,68],{"href":66,"rel":67},"https://argoproj.github.io/cd",[],"ArgoCD",", another mature Cloud Native Computing Foundation project in the GitOps space. ArgoCD is a full-featured product for GitOps, while Flux is a GitOps toolkit. While we like and value ArgoCD a lot, we think it does not lend itself to integration with GitLab.",[12,71,72],{},"As we are already in the process of building out UI integrations with the cluster, we know how the GitLab UI will be able to reach the Kubernetes API. Flux relies on the standard Kubernetes API 100%, so we can easily integrate it into our UI access approach. Relying only on the Kubernetes API is a significant benefit over ArgoCD, which provides a custom API.",[12,74,75],{},"Besides going with another tool, we evaluated the work needed to build a competitive, in-house solution. We found in-house development is the strongest contender to Flux CD, and while it was very compelling, we decided to go with the integration instead. We believe this should give our customers more value faster than a custom solution. Moreover, it should enable existing Flux users to benefit from our integrations with minor modifications in their usage patterns as we roll out the integrations.",[47,77,79],{"id":78},"what-comes-next","What comes next?",[12,81,82,83,88],{},"First, we want to ",[16,84,87],{"href":85,"rel":86},"https://gitlab.com/gitlab-org/gitlab/-/issues/389382",[],"document our recommendations for using FluxCD with GitLab",". At the same time, we will change our GitOps documentation to recommend Flux instead of the legacy GitOps solution. We consider these the most important steps to minimize uncertainty and set you up for a successful start.",[12,90,91,92,97,98,103],{},"Together with the above, the team is working hard on shipping the first version of an ",[16,93,96],{"href":94,"rel":95},"https://gitlab.com/gitlab-org/gitlab/-/issues/375449",[],"integrated Kubernetes UI",". We are starting with an environment overview and build an ",[16,99,102],{"href":100,"rel":101},"https://gitlab.com/groups/gitlab-org/-/epics/2493",[],"entire Kubernetes dashboard"," as part of GitLab. The cluster UI integration will enable GitLab users to learn more about their cluster state without leaving the GitLab UI and should allow a nearly real-time view of GitOps deployments using Flux CD.",[12,105,106,107,112,113,118],{},"We have clear ideas on how to do what I described above. We are still researching and learning about many other topics, including ",[16,108,111],{"href":109,"rel":110},"https://gitlab.com/gitlab-org/gitlab/-/issues/389393",[],"how to simplify Flux best accessing GitLab",". If you have experience using Flux with GitLab and have any feedback, recommendations, or requests on what the integration should support, we would like to hear from you. Please, reach out to me using ",[16,114,117],{"href":115,"rel":116},"https://gitlab.com/nagyv-gitlab",[],"my GitLab profile",".",[47,120,122],{"id":121},"the-flux-community","The Flux community",[12,124,125,126,134,135,142],{},"Before I close this article, I would like to say hi and thank you to the Flux community. We already got invited to the Flux development meeting, and the core team was very welcoming. As we always actively contributed to the core tools – first ",[16,127,130],{"href":128,"rel":129},"https://github.com/argoproj/gitops-engine/",[],[131,132,133],"code",{},"gitops-engine",", later ",[16,136,139],{"href":137,"rel":138},"https://github.com/kubernetes-sigs/cli-utils/",[],[131,140,141],{},"cli-utils"," – supporting our GitOps offering, we are looking forward to contributing to Flux CD.",[12,144,145],{},"We are looking forward to working more closely with you. Thank you for building this great tool and community!",[12,147,148],{},[149,150,151],"em",{},"Disclaimer: This blog contains information related to upcoming products, features, and functionality. It is important to note that the information in this blog post is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. As with all projects, the items mentioned in this blog and linked pages are subject to change or delay. The development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab.",[12,153,154],{},"Read more:",[156,157,158,166,173,180,191],"ul",{},[159,160,161,162],"li",{},"More about the ",[16,163,165],{"href":18,"rel":164},[],"Flux CD integration decision",[159,167,168,169],{},"Docs for ",[16,170,172],{"href":36,"rel":171},[],"agent for Kubernetes",[159,174,175,176],{},"Issue on ",[16,177,179],{"href":85,"rel":178},[],"our current focus",[159,181,182,183,39,187],{},"Preparation issues: ",[16,184,186],{"href":109,"rel":185},[],"Flux to GitLab access management",[16,188,190],{"href":94,"rel":189},[],"Visualizing Kubernetes resources within the Environments page",[159,192,193,194],{},"Continued support for ",[16,195,197],{"href":196},"/blog/the-continued-support-of-fluxcd-at-gitlab/","Flux CD at GitLab",{"title":199,"searchDepth":200,"depth":200,"links":201},"",2,[202,203,204,205],{"id":49,"depth":200,"text":50},{"id":59,"depth":200,"text":60},{"id":78,"depth":200,"text":79},{"id":121,"depth":200,"text":122},"engineering","2023-02-08","Inside the decision to integrate Flux CD with the GitLab agent for Kubernetes and what it means to you.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678356/Blog/Hero%20Images/balance-speed-security-devops.jpg",{},true,"/en-us/blog/why-did-we-choose-to-integrate-fluxcd-with-gitlab",{"title":5,"description":208,"ogTitle":5,"ogDescription":208,"noIndex":211,"ogImage":212,"ogUrl":217,"ogSiteName":218,"ogType":219,"canonicalUrls":217},"https://about.gitlab.com/blog/why-did-we-choose-to-integrate-fluxcd-with-gitlab","https://about.gitlab.com","article","why-did-we-choose-to-integrate-fluxcd-with-gitlab","en-us/blog/why-did-we-choose-to-integrate-fluxcd-with-gitlab",[223,224,225,226],"GitOps","kubernetes","DevOps","news","BlogPost","dWmSKl-yFdymEaVBjv-Y2Jt84GyKYJO-TMX_OTopqD0",{"logo":230,"freeTrial":235,"sales":240,"login":245,"items":250,"search":577,"minimal":608,"duo":627,"switchNav":636,"pricingDeployment":647},{"config":231},{"href":232,"dataGaName":233,"dataGaLocation":234},"/","gitlab logo","header",{"text":236,"config":237},"Get free trial",{"href":238,"dataGaName":239,"dataGaLocation":234},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":241,"config":242},"Request a demo",{"href":243,"dataGaName":244,"dataGaLocation":234},"/sales/?contact-topic=request-demo","sales",{"text":246,"config":247},"Sign in",{"href":248,"dataGaName":249,"dataGaLocation":234},"https://gitlab.com/users/sign_in/","sign in",[251,280,380,385,499,555],{"text":252,"config":253,"menu":255},"Platform",{"dataNavLevelOne":254},"platform",{"type":256,"columns":257},"cards",[258,264,272],{"title":252,"description":259,"link":260},"The intelligent orchestration platform for DevSecOps",{"text":261,"config":262},"Explore our Platform",{"href":263,"dataGaName":254,"dataGaLocation":234},"/platform/",{"title":265,"description":266,"link":267},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":268,"config":269},"Meet GitLab Duo",{"href":270,"dataGaName":271,"dataGaLocation":234},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":273,"description":274,"link":275},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":276,"config":277},"Learn more",{"href":278,"dataGaName":279,"dataGaLocation":234},"/why-gitlab/","why gitlab",{"text":281,"left":214,"config":282,"menu":284},"Product",{"dataNavLevelOne":283},"solutions",{"type":285,"link":286,"columns":290,"feature":359},"lists",{"text":287,"config":288},"View all Solutions",{"href":289,"dataGaName":283,"dataGaLocation":234},"/solutions/",[291,315,338],{"title":292,"description":293,"link":294,"items":299},"Automation","CI/CD and automation to accelerate deployment",{"config":295},{"icon":296,"href":297,"dataGaName":298,"dataGaLocation":234},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[300,304,307,311],{"text":301,"config":302},"CI/CD",{"href":303,"dataGaLocation":234,"dataGaName":301},"/solutions/continuous-integration/",{"text":265,"config":305},{"href":270,"dataGaLocation":234,"dataGaName":306},"gitlab duo agent platform - product menu",{"text":308,"config":309},"Source Code Management",{"href":310,"dataGaLocation":234,"dataGaName":308},"/solutions/source-code-management/",{"text":312,"config":313},"Automated Software Delivery",{"href":297,"dataGaLocation":234,"dataGaName":314},"Automated software delivery",{"title":316,"description":317,"link":318,"items":323},"Security","Deliver code faster without compromising security",{"config":319},{"href":320,"dataGaName":321,"dataGaLocation":234,"icon":322},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[324,328,333],{"text":325,"config":326},"Application Security Testing",{"href":320,"dataGaName":327,"dataGaLocation":234},"Application security testing",{"text":329,"config":330},"Software Supply Chain Security",{"href":331,"dataGaLocation":234,"dataGaName":332},"/solutions/supply-chain/","Software supply chain security",{"text":334,"config":335},"Software Compliance",{"href":336,"dataGaName":337,"dataGaLocation":234},"/solutions/software-compliance/","software compliance",{"title":339,"link":340,"items":345},"Measurement",{"config":341},{"icon":342,"href":343,"dataGaName":344,"dataGaLocation":234},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[346,350,354],{"text":347,"config":348},"Visibility & Measurement",{"href":343,"dataGaLocation":234,"dataGaName":349},"Visibility and Measurement",{"text":351,"config":352},"Value Stream Management",{"href":353,"dataGaLocation":234,"dataGaName":351},"/solutions/value-stream-management/",{"text":355,"config":356},"Analytics & Insights",{"href":357,"dataGaLocation":234,"dataGaName":358},"/solutions/analytics-and-insights/","Analytics and insights",{"title":360,"type":285,"items":361},"GitLab for",[362,368,374],{"text":363,"config":364},"Enterprise",{"icon":365,"href":366,"dataGaLocation":234,"dataGaName":367},"Building","/enterprise/","enterprise",{"text":369,"config":370},"Small Business",{"icon":371,"href":372,"dataGaLocation":234,"dataGaName":373},"Work","/small-business/","small business",{"text":375,"config":376},"Public Sector",{"icon":377,"href":378,"dataGaLocation":234,"dataGaName":379},"Organization","/solutions/public-sector/","public sector",{"text":381,"config":382},"Pricing",{"href":383,"dataGaName":384,"dataGaLocation":234,"dataNavLevelOne":384},"/pricing/","pricing",{"text":386,"config":387,"menu":389},"Resources",{"dataNavLevelOne":388},"resources",{"type":285,"link":390,"columns":394,"feature":488},{"text":391,"config":392},"View all resources",{"href":393,"dataGaName":388,"dataGaLocation":234},"/resources/",[395,428,455],{"title":396,"items":397},"Getting started",[398,403,408,413,418,423],{"text":399,"config":400},"Install",{"href":401,"dataGaName":402,"dataGaLocation":234},"/install/","install",{"text":404,"config":405},"Quick start guides",{"href":406,"dataGaName":407,"dataGaLocation":234},"/get-started/","quick setup checklists",{"text":409,"config":410},"Learn",{"href":411,"dataGaLocation":234,"dataGaName":412},"https://university.gitlab.com/","learn",{"text":414,"config":415},"Product documentation",{"href":416,"dataGaName":417,"dataGaLocation":234},"https://docs.gitlab.com/","product documentation",{"text":419,"config":420},"Best practice videos",{"href":421,"dataGaName":422,"dataGaLocation":234},"/getting-started-videos/","best practice videos",{"text":424,"config":425},"Integrations",{"href":426,"dataGaName":427,"dataGaLocation":234},"/integrations/","integrations",{"title":429,"items":430},"Discover",[431,436,441,446,450],{"text":432,"config":433},"Customer success stories",{"href":434,"dataGaName":435,"dataGaLocation":234},"/customers/","customer success stories",{"text":437,"config":438},"Blog",{"href":439,"dataGaName":440,"dataGaLocation":234},"/blog/","blog",{"text":442,"config":443},"Demo Hub",{"href":444,"dataGaName":445,"dataGaLocation":234},"/demo-hub/","demo hub",{"text":447,"config":448},"The Source",{"href":449,"dataGaName":440,"dataGaLocation":234},"/the-source/",{"text":451,"config":452},"Remote",{"href":453,"dataGaName":454,"dataGaLocation":234},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":456,"items":457},"Connect",[458,463,468,473,478,483],{"text":459,"config":460},"GitLab Services",{"href":461,"dataGaName":462,"dataGaLocation":234},"/services/","services",{"text":464,"config":465},"Contribute",{"href":466,"dataGaName":467,"dataGaLocation":234},"https://contributors.gitlab.com","contribute",{"text":469,"config":470},"Community",{"href":471,"dataGaName":472,"dataGaLocation":234},"/community/","community",{"text":474,"config":475},"Forum",{"href":476,"dataGaName":477,"dataGaLocation":234},"https://forum.gitlab.com/","forum",{"text":479,"config":480},"Events",{"href":481,"dataGaName":482,"dataGaLocation":234},"/events/","events",{"text":484,"config":485},"Partners",{"href":486,"dataGaName":487,"dataGaLocation":234},"/partners/","partners",{"config":489,"title":492,"text":493,"link":494},{"background":490,"textColor":491},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":495,"config":496},"Read the latest",{"href":497,"dataGaName":498,"dataGaLocation":234},"/whats-new/","whats new",{"text":500,"config":501,"menu":503},"Company",{"dataNavLevelOne":502},"company",{"type":285,"columns":504},[505],{"items":506},[507,512,518,520,525,530,535,540,545,550],{"text":508,"config":509},"About",{"href":510,"dataGaName":511,"dataGaLocation":234},"/company/","about",{"text":513,"config":514,"footerGa":517},"Jobs",{"href":515,"dataGaName":516,"dataGaLocation":234},"/jobs/","jobs",{"dataGaName":516},{"text":479,"config":519},{"href":481,"dataGaName":482,"dataGaLocation":234},{"text":521,"config":522},"Leadership",{"href":523,"dataGaName":524,"dataGaLocation":234},"/company/team/e-group/","leadership",{"text":526,"config":527},"Handbook",{"href":528,"dataGaName":529,"dataGaLocation":234},"https://handbook.gitlab.com/","handbook",{"text":531,"config":532},"Investor relations",{"href":533,"dataGaName":534,"dataGaLocation":234},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":536,"config":537},"Trust Center",{"href":538,"dataGaName":539,"dataGaLocation":234},"/security/","trust center",{"text":541,"config":542},"AI Transparency Center",{"href":543,"dataGaName":544,"dataGaLocation":234},"/ai-transparency-center/","ai transparency center",{"text":546,"config":547},"Newsletter",{"href":548,"dataGaName":549,"dataGaLocation":234},"/company/contact/#contact-forms","newsletter",{"text":551,"config":552},"Press",{"href":553,"dataGaName":554,"dataGaLocation":234},"/press/","press",{"text":556,"config":557,"menu":558},"Contact us",{"dataNavLevelOne":502},{"type":285,"columns":559},[560],{"items":561},[562,567,572],{"text":563,"config":564},"Talk to sales",{"href":565,"dataGaName":566,"dataGaLocation":234},"/sales/","talk to sales",{"text":568,"config":569},"Support portal",{"href":570,"dataGaName":571,"dataGaLocation":234},"https://support.gitlab.com/hc/en-us","support portal",{"text":573,"config":574},"Customer portal",{"href":575,"dataGaName":576,"dataGaLocation":234},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":578,"login":579,"suggestions":586},"Close",{"text":580,"link":581},"To search repositories and projects, login to",{"text":582,"config":583},"gitlab.com",{"href":248,"dataGaName":584,"dataGaLocation":585},"search login","search",{"text":587,"default":588},"Suggestions",[589,591,595,597,601,605],{"text":265,"config":590},{"href":270,"dataGaName":265,"dataGaLocation":585},{"text":592,"config":593},"Code Suggestions (AI)",{"href":594,"dataGaName":592,"dataGaLocation":585},"/solutions/code-suggestions/",{"text":301,"config":596},{"href":303,"dataGaName":301,"dataGaLocation":585},{"text":598,"config":599},"GitLab on AWS",{"href":600,"dataGaName":598,"dataGaLocation":585},"/partners/technology-partners/aws/",{"text":602,"config":603},"GitLab on Google Cloud",{"href":604,"dataGaName":602,"dataGaLocation":585},"/partners/technology-partners/google-cloud-platform/",{"text":606,"config":607},"Why GitLab?",{"href":278,"dataGaName":606,"dataGaLocation":585},{"freeTrial":609,"mobileIcon":614,"desktopIcon":619,"secondaryButton":622},{"text":610,"config":611},"Start free trial",{"href":612,"dataGaName":239,"dataGaLocation":613},"https://gitlab.com/-/trials/new/","nav",{"altText":615,"config":616},"Gitlab Icon",{"src":617,"dataGaName":618,"dataGaLocation":613},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":615,"config":620},{"src":621,"dataGaName":618,"dataGaLocation":613},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":623,"config":624},"Get Started",{"href":625,"dataGaName":626,"dataGaLocation":613},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":628,"mobileIcon":632,"desktopIcon":634},{"text":629,"config":630},"Learn more about GitLab Duo",{"href":270,"dataGaName":631,"dataGaLocation":613},"gitlab duo",{"altText":615,"config":633},{"src":617,"dataGaName":618,"dataGaLocation":613},{"altText":615,"config":635},{"src":621,"dataGaName":618,"dataGaLocation":613},{"button":637,"mobileIcon":642,"desktopIcon":644},{"text":638,"config":639},"/switch",{"href":640,"dataGaName":641,"dataGaLocation":613},"#contact","switch",{"altText":615,"config":643},{"src":617,"dataGaName":618,"dataGaLocation":613},{"altText":615,"config":645},{"src":646,"dataGaName":618,"dataGaLocation":613},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":648,"mobileIcon":653,"desktopIcon":655},{"text":649,"config":650},"Back to pricing",{"href":383,"dataGaName":651,"dataGaLocation":613,"icon":652},"back to pricing","GoBack",{"altText":615,"config":654},{"src":617,"dataGaName":618,"dataGaLocation":613},{"altText":615,"config":656},{"src":621,"dataGaName":618,"dataGaLocation":613},{"title":658,"titleMobile":659,"button":660,"config":665},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":276,"config":661},{"href":662,"dataGaName":663,"dataGaLocation":664},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":666,"disabled":211},"release",{"data":668},{"text":669,"source":670,"edit":676,"contribute":681,"config":686,"items":691,"minimal":899},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":671,"config":672},"View page source",{"href":673,"dataGaName":674,"dataGaLocation":675},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":677,"config":678},"Edit this page",{"href":679,"dataGaName":680,"dataGaLocation":675},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":682,"config":683},"Please contribute",{"href":684,"dataGaName":685,"dataGaLocation":675},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":687,"facebook":688,"youtube":689,"linkedin":690},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[692,739,791,835,867],{"title":381,"links":693,"subMenu":708},[694,698,703],{"text":695,"config":696},"View plans",{"href":383,"dataGaName":697,"dataGaLocation":675},"view plans",{"text":699,"config":700},"Why Premium?",{"href":701,"dataGaName":702,"dataGaLocation":675},"/pricing/premium/","why premium",{"text":704,"config":705},"Why Ultimate?",{"href":706,"dataGaName":707,"dataGaLocation":675},"/pricing/ultimate/","why ultimate",[709],{"title":710,"links":711},"Contact Us",[712,715,717,719,724,729,734],{"text":713,"config":714},"Contact sales",{"href":565,"dataGaName":244,"dataGaLocation":675},{"text":568,"config":716},{"href":570,"dataGaName":571,"dataGaLocation":675},{"text":573,"config":718},{"href":575,"dataGaName":576,"dataGaLocation":675},{"text":720,"config":721},"Status",{"href":722,"dataGaName":723,"dataGaLocation":675},"https://status.gitlab.com/","status",{"text":725,"config":726},"Terms of use",{"href":727,"dataGaName":728,"dataGaLocation":675},"/terms/","terms of use",{"text":730,"config":731},"Privacy statement",{"href":732,"dataGaName":733,"dataGaLocation":675},"/privacy/","privacy statement",{"text":735,"config":736},"Cookie preferences",{"dataGaName":737,"dataGaLocation":675,"id":738,"isOneTrustButton":214},"cookie preferences","ot-sdk-btn",{"title":281,"links":740,"subMenu":749},[741,745],{"text":742,"config":743},"DevSecOps platform",{"href":263,"dataGaName":744,"dataGaLocation":675},"devsecops platform",{"text":746,"config":747},"AI-Assisted Development",{"href":270,"dataGaName":748,"dataGaLocation":675},"ai-assisted development",[750],{"title":751,"links":752},"Topics",[753,758,762,766,771,776,781,786],{"text":754,"config":755},"CICD",{"href":756,"dataGaName":757,"dataGaLocation":675},"/topics/ci-cd/","cicd",{"text":223,"config":759},{"href":760,"dataGaName":761,"dataGaLocation":675},"/topics/gitops/","gitops",{"text":225,"config":763},{"href":764,"dataGaName":765,"dataGaLocation":675},"/topics/devops/","devops",{"text":767,"config":768},"Version Control",{"href":769,"dataGaName":770,"dataGaLocation":675},"/topics/version-control/","version control",{"text":772,"config":773},"DevSecOps",{"href":774,"dataGaName":775,"dataGaLocation":675},"/topics/devsecops/","devsecops",{"text":777,"config":778},"Cloud Native",{"href":779,"dataGaName":780,"dataGaLocation":675},"/topics/cloud-native/","cloud native",{"text":782,"config":783},"AI for Coding",{"href":784,"dataGaName":785,"dataGaLocation":675},"/topics/devops/ai-for-coding/","ai for coding",{"text":787,"config":788},"Agentic AI",{"href":789,"dataGaName":790,"dataGaLocation":675},"/topics/agentic-ai/","agentic ai",{"title":792,"links":793},"Solutions",[794,796,798,803,807,810,814,817,819,822,825,830],{"text":325,"config":795},{"href":320,"dataGaName":325,"dataGaLocation":675},{"text":314,"config":797},{"href":297,"dataGaName":298,"dataGaLocation":675},{"text":799,"config":800},"Agile development",{"href":801,"dataGaName":802,"dataGaLocation":675},"/solutions/agile-delivery/","agile delivery",{"text":804,"config":805},"SCM",{"href":310,"dataGaName":806,"dataGaLocation":675},"source code management",{"text":754,"config":808},{"href":303,"dataGaName":809,"dataGaLocation":675},"continuous integration & delivery",{"text":811,"config":812},"Value stream management",{"href":353,"dataGaName":813,"dataGaLocation":675},"value stream management",{"text":223,"config":815},{"href":816,"dataGaName":761,"dataGaLocation":675},"/solutions/gitops/",{"text":363,"config":818},{"href":366,"dataGaName":367,"dataGaLocation":675},{"text":820,"config":821},"Small business",{"href":372,"dataGaName":373,"dataGaLocation":675},{"text":823,"config":824},"Public sector",{"href":378,"dataGaName":379,"dataGaLocation":675},{"text":826,"config":827},"Education",{"href":828,"dataGaName":829,"dataGaLocation":675},"/solutions/education/","education",{"text":831,"config":832},"Financial services",{"href":833,"dataGaName":834,"dataGaLocation":675},"/solutions/finance/","financial services",{"title":386,"links":836},[837,839,841,843,846,848,851,853,855,857,859,861,863,865],{"text":399,"config":838},{"href":401,"dataGaName":402,"dataGaLocation":675},{"text":404,"config":840},{"href":406,"dataGaName":407,"dataGaLocation":675},{"text":409,"config":842},{"href":411,"dataGaName":412,"dataGaLocation":675},{"text":414,"config":844},{"href":416,"dataGaName":845,"dataGaLocation":675},"docs",{"text":437,"config":847},{"href":439,"dataGaName":440,"dataGaLocation":675},{"text":849,"config":850},"What's new",{"href":497,"dataGaName":498,"dataGaLocation":675},{"text":432,"config":852},{"href":434,"dataGaName":435,"dataGaLocation":675},{"text":451,"config":854},{"href":453,"dataGaName":454,"dataGaLocation":675},{"text":459,"config":856},{"href":461,"dataGaName":462,"dataGaLocation":675},{"text":464,"config":858},{"href":466,"dataGaName":467,"dataGaLocation":675},{"text":469,"config":860},{"href":471,"dataGaName":472,"dataGaLocation":675},{"text":474,"config":862},{"href":476,"dataGaName":477,"dataGaLocation":675},{"text":479,"config":864},{"href":481,"dataGaName":482,"dataGaLocation":675},{"text":484,"config":866},{"href":486,"dataGaName":487,"dataGaLocation":675},{"title":500,"links":868},[869,871,873,875,877,879,883,888,890,892,894],{"text":508,"config":870},{"href":510,"dataGaName":502,"dataGaLocation":675},{"text":513,"config":872},{"href":515,"dataGaName":516,"dataGaLocation":675},{"text":521,"config":874},{"href":523,"dataGaName":524,"dataGaLocation":675},{"text":526,"config":876},{"href":528,"dataGaName":529,"dataGaLocation":675},{"text":531,"config":878},{"href":533,"dataGaName":534,"dataGaLocation":675},{"text":880,"config":881},"Sustainability",{"href":882,"dataGaName":880,"dataGaLocation":675},"/sustainability/",{"text":884,"config":885},"Diversity, inclusion and belonging (DIB)",{"href":886,"dataGaName":887,"dataGaLocation":675},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":536,"config":889},{"href":538,"dataGaName":539,"dataGaLocation":675},{"text":546,"config":891},{"href":548,"dataGaName":549,"dataGaLocation":675},{"text":551,"config":893},{"href":553,"dataGaName":554,"dataGaLocation":675},{"text":895,"config":896},"Modern Slavery Transparency Statement",{"href":897,"dataGaName":898,"dataGaLocation":675},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":900},[901,904,907],{"text":902,"config":903},"Terms",{"href":727,"dataGaName":728,"dataGaLocation":675},{"text":905,"config":906},"Cookies",{"dataGaName":737,"dataGaLocation":675,"id":738,"isOneTrustButton":214},{"text":908,"config":909},"Privacy",{"href":732,"dataGaName":733,"dataGaLocation":675},[911],{"id":912,"title":7,"body":210,"config":913,"content":915,"description":210,"extension":919,"meta":920,"navigation":214,"path":921,"seo":922,"stem":923,"__hash__":924},"blogAuthors/en-us/blog/authors/viktor-nagy.yml",{"template":914},"BlogAuthor",{"name":7,"config":916},{"headshot":917,"ctfId":918},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662918/Blog/Author%20Headshots/nagy-headshot.jpg","nagyvgitlab","yml",{},"/en-us/blog/authors/viktor-nagy",{},"en-us/blog/authors/viktor-nagy","rM3QZ5iaPa1fk9rDH9Dq-owlsuuFm699I03jWP1dUY4",[926,935,943],{"title":927,"description":928,"heroImage":929,"category":206,"date":930,"authors":931,"slug":934,"externalUrl":210},"Confidential AI for GitLab Self-Hosted","Give developers AI coding agents in GitLab Duo without source code leaving a hardware-encrypted boundary — no GPUs needed.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-08-06",[932,933],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":936,"description":937,"heroImage":938,"category":206,"date":939,"authors":940,"slug":942,"externalUrl":210},"Green DevOps: Why carbon measurement belongs in your CI/CD pipeline","CI/CD pipelines have a hidden carbon cost. Here's why measuring it matters, and how you can get started with Eco CI and Carmen in GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-09",[941],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":944,"description":945,"heroImage":946,"category":206,"date":947,"authors":948,"slug":950,"externalUrl":210},"How to build CI/CD observability at scale","This practical guide to GitLab pipeline analytics helps self-managed users gain operational insights using Prometheus and Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-28",[949],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":952},[953,967,979,991],{"id":954,"categories":955,"header":957,"text":958,"button":959,"image":964},"ai-modernization",[956],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":960,"config":961},"Get your AI maturity score",{"href":962,"dataGaName":963,"dataGaLocation":440},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":965},{"src":966},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":968,"categories":969,"header":971,"text":958,"button":972,"image":976},"devops-modernization",[970,775],"product","Are you just managing tools or shipping innovation?",{"text":973,"config":974},"Get your DevOps maturity score",{"href":975,"dataGaName":963,"dataGaLocation":440},"/assessments/devops-modernization-assessment/",{"config":977},{"src":978},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":980,"categories":981,"header":983,"text":958,"button":984,"image":988},"security-modernization",[982],"security","Are you trading speed for security?",{"text":985,"config":986},"Get your security maturity score",{"href":987,"dataGaName":963,"dataGaLocation":440},"/assessments/security-modernization-assessment/",{"config":989},{"src":990},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":992,"paths":993,"header":996,"text":997,"button":998,"image":1003},"github-azure-migration",[994,995],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":999,"config":1000},"See how GitLab compares to GitHub",{"href":1001,"dataGaName":1002,"dataGaLocation":440},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1004},{"src":978},{"header":1006,"blurb":1007,"button":1008,"secondaryButton":1013},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1009,"config":1010},"Get your free trial",{"href":1011,"dataGaName":239,"dataGaLocation":1012},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":713,"config":1014},{"href":565,"dataGaName":244,"dataGaLocation":1012},1786803756647]