[{"data":1,"prerenderedAt":948},["ShallowReactive",2],{"/blog/humangeo-switches-jenkins-gitlab-ci":3,"navigation-en-us":161,"banner-en-us":589,"footer-en-us":599,"blog-post-authors-en-us-William Chia":844,"blog-related-posts-en-us-humangeo-switches-jenkins-gitlab-ci":858,"blog-promotions-en-us":884,"next-steps-en-us":938},{"id":4,"title":5,"authors":6,"body":8,"category":132,"date":133,"description":134,"extension":135,"externalUrl":136,"faq":136,"featured":137,"heroImage":138,"meta":139,"navigation":147,"path":148,"seo":149,"slug":153,"stem":154,"tags":155,"template":159,"updatedDate":136,"__hash__":160},"blogPosts/en-us/blog/humangeo-switches-jenkins-gitlab-ci.md","HumanGeo switched from Jenkins to GitLab and cut costs by 1/3",[7],"William Chia",{"type":9,"value":10,"toc":124},"minimark",[11,22,31,36,43,49,52,55,59,70,75,79,84,89,97,101,109],[12,13,14,15,21],"p",{},"As a software development company, ",[16,17,20],"a",{"href":18,"rel":19},"http://www.thehumangeo.com/",[],"HumanGeo"," ships a lot of code. Specializing in geospatial visualization, they have clients in every sector from video game companies to government agencies. The ability to manage multiple projects, iterate quickly, and operate at scale is critical to their success. Over time, a robust DevOps practice has evolved to allow them to quicken their pace of innovation. But traditional tools in their stack, like Jenkins CI, haven’t be able to deliver.",[12,23,24,25,30],{},"I recently caught up with ",[16,26,29],{"href":27,"rel":28},"https://twitter.com/kwonstant",[],"Justin Shelton",", an engineer at HumanGeo, to talk about their expanded use of GitLab and how it’s improved both their workflow and budget. Here’s what he had to say:",[32,33,35],"h2",{"id":34},"ease-of-use-cuts-admin-time-by-96","Ease of use cuts admin time by 96%",[12,37,38,42],{},[39,40,41],"strong",{},"William",": Can you tell me about the benefits you’ve seen from GitLab in terms of ease-of-use?",[12,44,45,48],{},[39,46,47],{},"Justin",": Defining CI as code fits great with the \"Infrastructure as Code\" philosophy. We already push hard to have AWS environments expressed in CloudFormation templates, provisioning via Ansible, and so on. With GitLab CI, we can manage our CI pipeline the same way – with code.",[12,50,51],{},"Managing YAML for Domain Specific Language (DSL) is way easier than managing Groovy for Jenkinsfiles (or most other config formats, for that matter). YAML is far more widespread and easy to understand, so more developers at junior and senior levels are exposed to it. The path to getting smart on writing GitLab CI DSL is much faster than coming up to speed on Groovy. While Jenkins is overwhelmingly customizable and familiar, it became Yet Another Thing to Manage™. In the end, GitLab CI shares a lot of the same (and in some cases more) configuration options.",[12,53,54],{},"As full stack engineers we do a lot of our own systems administration. Reducing our platform management burden is a huge plus. We used to spend a 5-6 hours each month managing Jenkins and keeping it running. Now, I might spend 10-15 minutes a month managing GitLab CI.",[32,56,58],{"id":57},"flexible-ci-runners-cuts-costs-33","Flexible CI runners cuts costs 33%",[12,60,61,63,64,69],{},[39,62,41],{},": In ",[16,65,68],{"href":66,"rel":67},"http://blog.thehumangeo.com/gitlab-autoscale-runners.html",[],"your blog post"," you shared that GitLab helped to cut infrastructure costs. How did that work in practice?",[12,71,72,74],{},[39,73,47],{},": The ability to integrate with handlers, like the Docker Machine interface I talk about in the post, is huge for helping to manage costs. We get resources when we need them, and can spin them down when we don't. That saves big money compared to maintaining a large instance and having to manage the JVM size and other factors whenever we run out of space. With Jenkins we used to run a dedicated m2.xlarge on AWS all the time for CI purposes. Now, with GitLab, we are able to run spot instances for only around 40 hours a week, resulting in about 1/3 cost savings. Engineers can change a few config items, and managers can see savings. Win!",[32,76,78],{"id":77},"increasing-the-pace-of-innovation","Increasing the pace of innovation",[12,80,81,83],{},[39,82,41],{},": How else has GitLab adoption impacted your workflow?",[12,85,86,88],{},[39,87,47],{},": The speed of development is huge – new features get added every month, and I get genuinely excited to check out the release notes and update our instance every month. (Another perk is how simple this is, upgrading with two apt commands is as easy as it gets.)",[12,90,91,96],{},[16,92,95],{"href":93,"rel":94},"https://docs.gitlab.com/topics/autodevops/",[],"Auto DevOps"," is the thing I'm most excited to dig into further that's come out recently. I'm excited about taking some of our bespoke release processes and tightening them up using this process. We're sticklers for code quality, so the Code Quality features were big, and we want to start utilizing Auto DevOps for canary releases as well.",[32,98,100],{"id":99},"learn-exactly-how-they-did-it","Learn exactly how they did it",[12,102,103,104,108],{},"At HumanGeo using Jenkins CI proved to be costly in both time and money. Switching to GitLab reduced administration overhead, lowered spend, and increased development velocity. Justin wrote up a post to share all the technical details on ",[16,105,107],{"href":66,"rel":106},[],"how HumanGeo scaled GitLab CI runners",". Check it out and let know us know what you think in the comments or on Twitter.",[12,110,111,112,117,118,123],{},"\"",[16,113,116],{"href":114,"rel":115},"https://unsplash.com/photos/T7s_TnKO-dk",[],"Pipe Dream","\" by ",[16,119,122],{"href":120,"rel":121},"https://unsplash.com/@sharosh",[],"Sharosh Rajasekher"," on Unsplash",{"title":125,"searchDepth":126,"depth":126,"links":127},"",2,[128,129,130,131],{"id":34,"depth":126,"text":35},{"id":57,"depth":126,"text":58},{"id":77,"depth":126,"text":78},{"id":99,"depth":126,"text":100},"engineering","2017-11-14","Management overhead was bogging down the team at HumanGeo. GitLab freed up more than just cash.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680315/Blog/Hero%20Images/humangeo-switches-jenkins-to-gitlab.jpg",{"excerpt":140},{"type":9,"value":141},[142],[12,143,14,144,21],{},[16,145,20],{"href":18,"rel":146},[],true,"/en-us/blog/humangeo-switches-jenkins-gitlab-ci",{"title":5,"description":134,"ogTitle":5,"ogDescription":134,"noIndex":137,"ogImage":138,"ogUrl":150,"ogSiteName":151,"ogType":152,"canonicalUrls":150},"https://about.gitlab.com/blog/humangeo-switches-jenkins-gitlab-ci","https://about.gitlab.com","article","humangeo-switches-jenkins-gitlab-ci","en-us/blog/humangeo-switches-jenkins-gitlab-ci",[156,157,158],"customers","CI","user stories","BlogPost","CQ5h3Er_3cNjHabu71ccaY6Cx1x7n3c7PT4LWFR1c6g",{"logo":162,"freeTrial":167,"sales":172,"login":177,"items":182,"search":509,"minimal":540,"duo":559,"switchNav":568,"pricingDeployment":579},{"config":163},{"href":164,"dataGaName":165,"dataGaLocation":166},"/","gitlab logo","header",{"text":168,"config":169},"Get free trial",{"href":170,"dataGaName":171,"dataGaLocation":166},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":173,"config":174},"Request a demo",{"href":175,"dataGaName":176,"dataGaLocation":166},"/sales/?contact-topic=request-demo","sales",{"text":178,"config":179},"Sign in",{"href":180,"dataGaName":181,"dataGaLocation":166},"https://gitlab.com/users/sign_in/","sign in",[183,212,312,317,431,487],{"text":184,"config":185,"menu":187},"Platform",{"dataNavLevelOne":186},"platform",{"type":188,"columns":189},"cards",[190,196,204],{"title":184,"description":191,"link":192},"The intelligent orchestration platform for DevSecOps",{"text":193,"config":194},"Explore our Platform",{"href":195,"dataGaName":186,"dataGaLocation":166},"/platform/",{"title":197,"description":198,"link":199},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":200,"config":201},"Meet GitLab Duo",{"href":202,"dataGaName":203,"dataGaLocation":166},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":205,"description":206,"link":207},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":208,"config":209},"Learn more",{"href":210,"dataGaName":211,"dataGaLocation":166},"/why-gitlab/","why gitlab",{"text":213,"left":147,"config":214,"menu":216},"Product",{"dataNavLevelOne":215},"solutions",{"type":217,"link":218,"columns":222,"feature":291},"lists",{"text":219,"config":220},"View all Solutions",{"href":221,"dataGaName":215,"dataGaLocation":166},"/solutions/",[223,247,270],{"title":224,"description":225,"link":226,"items":231},"Automation","CI/CD and automation to accelerate deployment",{"config":227},{"icon":228,"href":229,"dataGaName":230,"dataGaLocation":166},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[232,236,239,243],{"text":233,"config":234},"CI/CD",{"href":235,"dataGaLocation":166,"dataGaName":233},"/solutions/continuous-integration/",{"text":197,"config":237},{"href":202,"dataGaLocation":166,"dataGaName":238},"gitlab duo agent platform - product menu",{"text":240,"config":241},"Source Code Management",{"href":242,"dataGaLocation":166,"dataGaName":240},"/solutions/source-code-management/",{"text":244,"config":245},"Automated Software Delivery",{"href":229,"dataGaLocation":166,"dataGaName":246},"Automated software delivery",{"title":248,"description":249,"link":250,"items":255},"Security","Deliver code faster without compromising security",{"config":251},{"href":252,"dataGaName":253,"dataGaLocation":166,"icon":254},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[256,260,265],{"text":257,"config":258},"Application Security Testing",{"href":252,"dataGaName":259,"dataGaLocation":166},"Application security testing",{"text":261,"config":262},"Software Supply Chain Security",{"href":263,"dataGaLocation":166,"dataGaName":264},"/solutions/supply-chain/","Software supply chain security",{"text":266,"config":267},"Software Compliance",{"href":268,"dataGaName":269,"dataGaLocation":166},"/solutions/software-compliance/","software compliance",{"title":271,"link":272,"items":277},"Measurement",{"config":273},{"icon":274,"href":275,"dataGaName":276,"dataGaLocation":166},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[278,282,286],{"text":279,"config":280},"Visibility & Measurement",{"href":275,"dataGaLocation":166,"dataGaName":281},"Visibility and Measurement",{"text":283,"config":284},"Value Stream Management",{"href":285,"dataGaLocation":166,"dataGaName":283},"/solutions/value-stream-management/",{"text":287,"config":288},"Analytics & Insights",{"href":289,"dataGaLocation":166,"dataGaName":290},"/solutions/analytics-and-insights/","Analytics and insights",{"title":292,"type":217,"items":293},"GitLab for",[294,300,306],{"text":295,"config":296},"Enterprise",{"icon":297,"href":298,"dataGaLocation":166,"dataGaName":299},"Building","/enterprise/","enterprise",{"text":301,"config":302},"Small Business",{"icon":303,"href":304,"dataGaLocation":166,"dataGaName":305},"Work","/small-business/","small business",{"text":307,"config":308},"Public Sector",{"icon":309,"href":310,"dataGaLocation":166,"dataGaName":311},"Organization","/solutions/public-sector/","public sector",{"text":313,"config":314},"Pricing",{"href":315,"dataGaName":316,"dataGaLocation":166,"dataNavLevelOne":316},"/pricing/","pricing",{"text":318,"config":319,"menu":321},"Resources",{"dataNavLevelOne":320},"resources",{"type":217,"link":322,"columns":326,"feature":420},{"text":323,"config":324},"View all resources",{"href":325,"dataGaName":320,"dataGaLocation":166},"/resources/",[327,360,387],{"title":328,"items":329},"Getting started",[330,335,340,345,350,355],{"text":331,"config":332},"Install",{"href":333,"dataGaName":334,"dataGaLocation":166},"/install/","install",{"text":336,"config":337},"Quick start guides",{"href":338,"dataGaName":339,"dataGaLocation":166},"/get-started/","quick setup checklists",{"text":341,"config":342},"Learn",{"href":343,"dataGaLocation":166,"dataGaName":344},"https://university.gitlab.com/","learn",{"text":346,"config":347},"Product documentation",{"href":348,"dataGaName":349,"dataGaLocation":166},"https://docs.gitlab.com/","product documentation",{"text":351,"config":352},"Best practice videos",{"href":353,"dataGaName":354,"dataGaLocation":166},"/getting-started-videos/","best practice videos",{"text":356,"config":357},"Integrations",{"href":358,"dataGaName":359,"dataGaLocation":166},"/integrations/","integrations",{"title":361,"items":362},"Discover",[363,368,373,378,382],{"text":364,"config":365},"Customer success stories",{"href":366,"dataGaName":367,"dataGaLocation":166},"/customers/","customer success stories",{"text":369,"config":370},"Blog",{"href":371,"dataGaName":372,"dataGaLocation":166},"/blog/","blog",{"text":374,"config":375},"Demo Hub",{"href":376,"dataGaName":377,"dataGaLocation":166},"/demo-hub/","demo hub",{"text":379,"config":380},"The Source",{"href":381,"dataGaName":372,"dataGaLocation":166},"/the-source/",{"text":383,"config":384},"Remote",{"href":385,"dataGaName":386,"dataGaLocation":166},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":388,"items":389},"Connect",[390,395,400,405,410,415],{"text":391,"config":392},"GitLab Services",{"href":393,"dataGaName":394,"dataGaLocation":166},"/services/","services",{"text":396,"config":397},"Contribute",{"href":398,"dataGaName":399,"dataGaLocation":166},"https://contributors.gitlab.com","contribute",{"text":401,"config":402},"Community",{"href":403,"dataGaName":404,"dataGaLocation":166},"/community/","community",{"text":406,"config":407},"Forum",{"href":408,"dataGaName":409,"dataGaLocation":166},"https://forum.gitlab.com/","forum",{"text":411,"config":412},"Events",{"href":413,"dataGaName":414,"dataGaLocation":166},"/events/","events",{"text":416,"config":417},"Partners",{"href":418,"dataGaName":419,"dataGaLocation":166},"/partners/","partners",{"config":421,"title":424,"text":425,"link":426},{"background":422,"textColor":423},"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":427,"config":428},"Read the latest",{"href":429,"dataGaName":430,"dataGaLocation":166},"/whats-new/","whats new",{"text":432,"config":433,"menu":435},"Company",{"dataNavLevelOne":434},"company",{"type":217,"columns":436},[437],{"items":438},[439,444,450,452,457,462,467,472,477,482],{"text":440,"config":441},"About",{"href":442,"dataGaName":443,"dataGaLocation":166},"/company/","about",{"text":445,"config":446,"footerGa":449},"Jobs",{"href":447,"dataGaName":448,"dataGaLocation":166},"/jobs/","jobs",{"dataGaName":448},{"text":411,"config":451},{"href":413,"dataGaName":414,"dataGaLocation":166},{"text":453,"config":454},"Leadership",{"href":455,"dataGaName":456,"dataGaLocation":166},"/company/team/e-group/","leadership",{"text":458,"config":459},"Handbook",{"href":460,"dataGaName":461,"dataGaLocation":166},"https://handbook.gitlab.com/","handbook",{"text":463,"config":464},"Investor relations",{"href":465,"dataGaName":466,"dataGaLocation":166},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":468,"config":469},"Trust Center",{"href":470,"dataGaName":471,"dataGaLocation":166},"/security/","trust center",{"text":473,"config":474},"AI Transparency Center",{"href":475,"dataGaName":476,"dataGaLocation":166},"/ai-transparency-center/","ai transparency center",{"text":478,"config":479},"Newsletter",{"href":480,"dataGaName":481,"dataGaLocation":166},"/company/contact/#contact-forms","newsletter",{"text":483,"config":484},"Press",{"href":485,"dataGaName":486,"dataGaLocation":166},"/press/","press",{"text":488,"config":489,"menu":490},"Contact us",{"dataNavLevelOne":434},{"type":217,"columns":491},[492],{"items":493},[494,499,504],{"text":495,"config":496},"Talk to sales",{"href":497,"dataGaName":498,"dataGaLocation":166},"/sales/","talk to sales",{"text":500,"config":501},"Support portal",{"href":502,"dataGaName":503,"dataGaLocation":166},"https://support.gitlab.com/hc/en-us","support portal",{"text":505,"config":506},"Customer portal",{"href":507,"dataGaName":508,"dataGaLocation":166},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":510,"login":511,"suggestions":518},"Close",{"text":512,"link":513},"To search repositories and projects, login to",{"text":514,"config":515},"gitlab.com",{"href":180,"dataGaName":516,"dataGaLocation":517},"search login","search",{"text":519,"default":520},"Suggestions",[521,523,527,529,533,537],{"text":197,"config":522},{"href":202,"dataGaName":197,"dataGaLocation":517},{"text":524,"config":525},"Code Suggestions (AI)",{"href":526,"dataGaName":524,"dataGaLocation":517},"/solutions/code-suggestions/",{"text":233,"config":528},{"href":235,"dataGaName":233,"dataGaLocation":517},{"text":530,"config":531},"GitLab on AWS",{"href":532,"dataGaName":530,"dataGaLocation":517},"/partners/technology-partners/aws/",{"text":534,"config":535},"GitLab on Google Cloud",{"href":536,"dataGaName":534,"dataGaLocation":517},"/partners/technology-partners/google-cloud-platform/",{"text":538,"config":539},"Why GitLab?",{"href":210,"dataGaName":538,"dataGaLocation":517},{"freeTrial":541,"mobileIcon":546,"desktopIcon":551,"secondaryButton":554},{"text":542,"config":543},"Start free trial",{"href":544,"dataGaName":171,"dataGaLocation":545},"https://gitlab.com/-/trials/new/","nav",{"altText":547,"config":548},"Gitlab Icon",{"src":549,"dataGaName":550,"dataGaLocation":545},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":547,"config":552},{"src":553,"dataGaName":550,"dataGaLocation":545},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":555,"config":556},"Get Started",{"href":557,"dataGaName":558,"dataGaLocation":545},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":560,"mobileIcon":564,"desktopIcon":566},{"text":561,"config":562},"Learn more about GitLab Duo",{"href":202,"dataGaName":563,"dataGaLocation":545},"gitlab duo",{"altText":547,"config":565},{"src":549,"dataGaName":550,"dataGaLocation":545},{"altText":547,"config":567},{"src":553,"dataGaName":550,"dataGaLocation":545},{"button":569,"mobileIcon":574,"desktopIcon":576},{"text":570,"config":571},"/switch",{"href":572,"dataGaName":573,"dataGaLocation":545},"#contact","switch",{"altText":547,"config":575},{"src":549,"dataGaName":550,"dataGaLocation":545},{"altText":547,"config":577},{"src":578,"dataGaName":550,"dataGaLocation":545},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":580,"mobileIcon":585,"desktopIcon":587},{"text":581,"config":582},"Back to pricing",{"href":315,"dataGaName":583,"dataGaLocation":545,"icon":584},"back to pricing","GoBack",{"altText":547,"config":586},{"src":549,"dataGaName":550,"dataGaLocation":545},{"altText":547,"config":588},{"src":553,"dataGaName":550,"dataGaLocation":545},{"title":590,"titleMobile":591,"button":592,"config":597},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":208,"config":593},{"href":594,"dataGaName":595,"dataGaLocation":596},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":598,"disabled":137},"release",{"data":600},{"text":601,"source":602,"edit":608,"contribute":613,"config":618,"items":623,"minimal":833},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":603,"config":604},"View page source",{"href":605,"dataGaName":606,"dataGaLocation":607},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":609,"config":610},"Edit this page",{"href":611,"dataGaName":612,"dataGaLocation":607},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":614,"config":615},"Please contribute",{"href":616,"dataGaName":617,"dataGaLocation":607},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":619,"facebook":620,"youtube":621,"linkedin":622},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[624,671,725,769,801],{"title":313,"links":625,"subMenu":640},[626,630,635],{"text":627,"config":628},"View plans",{"href":315,"dataGaName":629,"dataGaLocation":607},"view plans",{"text":631,"config":632},"Why Premium?",{"href":633,"dataGaName":634,"dataGaLocation":607},"/pricing/premium/","why premium",{"text":636,"config":637},"Why Ultimate?",{"href":638,"dataGaName":639,"dataGaLocation":607},"/pricing/ultimate/","why ultimate",[641],{"title":642,"links":643},"Contact Us",[644,647,649,651,656,661,666],{"text":645,"config":646},"Contact sales",{"href":497,"dataGaName":176,"dataGaLocation":607},{"text":500,"config":648},{"href":502,"dataGaName":503,"dataGaLocation":607},{"text":505,"config":650},{"href":507,"dataGaName":508,"dataGaLocation":607},{"text":652,"config":653},"Status",{"href":654,"dataGaName":655,"dataGaLocation":607},"https://status.gitlab.com/","status",{"text":657,"config":658},"Terms of use",{"href":659,"dataGaName":660,"dataGaLocation":607},"/terms/","terms of use",{"text":662,"config":663},"Privacy statement",{"href":664,"dataGaName":665,"dataGaLocation":607},"/privacy/","privacy statement",{"text":667,"config":668},"Cookie preferences",{"dataGaName":669,"dataGaLocation":607,"id":670,"isOneTrustButton":147},"cookie preferences","ot-sdk-btn",{"title":213,"links":672,"subMenu":681},[673,677],{"text":674,"config":675},"DevSecOps platform",{"href":195,"dataGaName":676,"dataGaLocation":607},"devsecops platform",{"text":678,"config":679},"AI-Assisted Development",{"href":202,"dataGaName":680,"dataGaLocation":607},"ai-assisted development",[682],{"title":683,"links":684},"Topics",[685,690,695,700,705,710,715,720],{"text":686,"config":687},"CICD",{"href":688,"dataGaName":689,"dataGaLocation":607},"/topics/ci-cd/","cicd",{"text":691,"config":692},"GitOps",{"href":693,"dataGaName":694,"dataGaLocation":607},"/topics/gitops/","gitops",{"text":696,"config":697},"DevOps",{"href":698,"dataGaName":699,"dataGaLocation":607},"/topics/devops/","devops",{"text":701,"config":702},"Version Control",{"href":703,"dataGaName":704,"dataGaLocation":607},"/topics/version-control/","version control",{"text":706,"config":707},"DevSecOps",{"href":708,"dataGaName":709,"dataGaLocation":607},"/topics/devsecops/","devsecops",{"text":711,"config":712},"Cloud Native",{"href":713,"dataGaName":714,"dataGaLocation":607},"/topics/cloud-native/","cloud native",{"text":716,"config":717},"AI for Coding",{"href":718,"dataGaName":719,"dataGaLocation":607},"/topics/devops/ai-for-coding/","ai for coding",{"text":721,"config":722},"Agentic AI",{"href":723,"dataGaName":724,"dataGaLocation":607},"/topics/agentic-ai/","agentic ai",{"title":726,"links":727},"Solutions",[728,730,732,737,741,744,748,751,753,756,759,764],{"text":257,"config":729},{"href":252,"dataGaName":257,"dataGaLocation":607},{"text":246,"config":731},{"href":229,"dataGaName":230,"dataGaLocation":607},{"text":733,"config":734},"Agile development",{"href":735,"dataGaName":736,"dataGaLocation":607},"/solutions/agile-delivery/","agile delivery",{"text":738,"config":739},"SCM",{"href":242,"dataGaName":740,"dataGaLocation":607},"source code management",{"text":686,"config":742},{"href":235,"dataGaName":743,"dataGaLocation":607},"continuous integration & delivery",{"text":745,"config":746},"Value stream management",{"href":285,"dataGaName":747,"dataGaLocation":607},"value stream management",{"text":691,"config":749},{"href":750,"dataGaName":694,"dataGaLocation":607},"/solutions/gitops/",{"text":295,"config":752},{"href":298,"dataGaName":299,"dataGaLocation":607},{"text":754,"config":755},"Small business",{"href":304,"dataGaName":305,"dataGaLocation":607},{"text":757,"config":758},"Public sector",{"href":310,"dataGaName":311,"dataGaLocation":607},{"text":760,"config":761},"Education",{"href":762,"dataGaName":763,"dataGaLocation":607},"/solutions/education/","education",{"text":765,"config":766},"Financial services",{"href":767,"dataGaName":768,"dataGaLocation":607},"/solutions/finance/","financial services",{"title":318,"links":770},[771,773,775,777,780,782,785,787,789,791,793,795,797,799],{"text":331,"config":772},{"href":333,"dataGaName":334,"dataGaLocation":607},{"text":336,"config":774},{"href":338,"dataGaName":339,"dataGaLocation":607},{"text":341,"config":776},{"href":343,"dataGaName":344,"dataGaLocation":607},{"text":346,"config":778},{"href":348,"dataGaName":779,"dataGaLocation":607},"docs",{"text":369,"config":781},{"href":371,"dataGaName":372,"dataGaLocation":607},{"text":783,"config":784},"What's new",{"href":429,"dataGaName":430,"dataGaLocation":607},{"text":364,"config":786},{"href":366,"dataGaName":367,"dataGaLocation":607},{"text":383,"config":788},{"href":385,"dataGaName":386,"dataGaLocation":607},{"text":391,"config":790},{"href":393,"dataGaName":394,"dataGaLocation":607},{"text":396,"config":792},{"href":398,"dataGaName":399,"dataGaLocation":607},{"text":401,"config":794},{"href":403,"dataGaName":404,"dataGaLocation":607},{"text":406,"config":796},{"href":408,"dataGaName":409,"dataGaLocation":607},{"text":411,"config":798},{"href":413,"dataGaName":414,"dataGaLocation":607},{"text":416,"config":800},{"href":418,"dataGaName":419,"dataGaLocation":607},{"title":432,"links":802},[803,805,807,809,811,813,817,822,824,826,828],{"text":440,"config":804},{"href":442,"dataGaName":434,"dataGaLocation":607},{"text":445,"config":806},{"href":447,"dataGaName":448,"dataGaLocation":607},{"text":453,"config":808},{"href":455,"dataGaName":456,"dataGaLocation":607},{"text":458,"config":810},{"href":460,"dataGaName":461,"dataGaLocation":607},{"text":463,"config":812},{"href":465,"dataGaName":466,"dataGaLocation":607},{"text":814,"config":815},"Sustainability",{"href":816,"dataGaName":814,"dataGaLocation":607},"/sustainability/",{"text":818,"config":819},"Diversity, inclusion and belonging (DIB)",{"href":820,"dataGaName":821,"dataGaLocation":607},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":468,"config":823},{"href":470,"dataGaName":471,"dataGaLocation":607},{"text":478,"config":825},{"href":480,"dataGaName":481,"dataGaLocation":607},{"text":483,"config":827},{"href":485,"dataGaName":486,"dataGaLocation":607},{"text":829,"config":830},"Modern Slavery Transparency Statement",{"href":831,"dataGaName":832,"dataGaLocation":607},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":834},[835,838,841],{"text":836,"config":837},"Terms",{"href":659,"dataGaName":660,"dataGaLocation":607},{"text":839,"config":840},"Cookies",{"dataGaName":669,"dataGaLocation":607,"id":670,"isOneTrustButton":147},{"text":842,"config":843},"Privacy",{"href":664,"dataGaName":665,"dataGaLocation":607},[845],{"id":846,"title":7,"body":136,"config":847,"content":849,"description":136,"extension":852,"meta":853,"navigation":147,"path":854,"seo":855,"stem":856,"__hash__":857},"blogAuthors/en-us/blog/authors/william-chia.yml",{"template":848},"BlogAuthor",{"name":7,"config":850},{"headshot":125,"ctfId":851},"williamchia","yml",{},"/en-us/blog/authors/william-chia",{},"en-us/blog/authors/william-chia","FIgq0palUGC4TES_u61geTkaCT4yZABjKceDTMRuU5w",[859,868,876],{"title":860,"description":861,"heroImage":862,"category":132,"date":863,"authors":864,"slug":867,"externalUrl":136},"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",[865,866],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":869,"description":870,"heroImage":871,"category":132,"date":872,"authors":873,"slug":875,"externalUrl":136},"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",[874],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":877,"description":878,"heroImage":879,"category":132,"date":880,"authors":881,"slug":883,"externalUrl":136},"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",[882],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":885},[886,900,912,924],{"id":887,"categories":888,"header":890,"text":891,"button":892,"image":897},"ai-modernization",[889],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":893,"config":894},"Get your AI maturity score",{"href":895,"dataGaName":896,"dataGaLocation":372},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":898},{"src":899},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":901,"categories":902,"header":904,"text":891,"button":905,"image":909},"devops-modernization",[903,709],"product","Are you just managing tools or shipping innovation?",{"text":906,"config":907},"Get your DevOps maturity score",{"href":908,"dataGaName":896,"dataGaLocation":372},"/assessments/devops-modernization-assessment/",{"config":910},{"src":911},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":913,"categories":914,"header":916,"text":891,"button":917,"image":921},"security-modernization",[915],"security","Are you trading speed for security?",{"text":918,"config":919},"Get your security maturity score",{"href":920,"dataGaName":896,"dataGaLocation":372},"/assessments/security-modernization-assessment/",{"config":922},{"src":923},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":925,"paths":926,"header":929,"text":930,"button":931,"image":936},"github-azure-migration",[927,928],"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":932,"config":933},"See how GitLab compares to GitHub",{"href":934,"dataGaName":935,"dataGaLocation":372},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":937},{"src":911},{"header":939,"blurb":940,"button":941,"secondaryButton":946},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":942,"config":943},"Get your free trial",{"href":944,"dataGaName":171,"dataGaLocation":945},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":645,"config":947},{"href":497,"dataGaName":176,"dataGaLocation":945},1786803750218]