[{"data":1,"prerenderedAt":1158},["ShallowReactive",2],{"/blog/green-devops-carbon-measurement-cicd-pipeline":3,"navigation-en-us":370,"banner-en-us":797,"footer-en-us":808,"blog-post-authors-en-us-Lysanne Pinto":1052,"blog-related-posts-en-us-green-devops-carbon-measurement-cicd-pipeline":1068,"blog-promotions-en-us":1094,"next-steps-en-us":1148},{"id":4,"title":5,"authors":6,"body":8,"category":353,"date":354,"description":355,"extension":356,"externalUrl":357,"faq":357,"featured":358,"heroImage":359,"meta":360,"navigation":358,"path":361,"seo":362,"slug":363,"stem":364,"tags":365,"template":368,"updatedDate":357,"__hash__":369},"blogPosts/en-us/blog/green-devops-carbon-measurement-cicd-pipeline.md","Green DevOps: Why carbon measurement belongs in your CI/CD pipeline",[7],"Lysanne Pinto",{"type":9,"value":10,"toc":341},"minimark",[11,15,21,24,29,32,36,39,44,53,56,60,83,86,96,100,107,242,245,249,255,258,261,264,268,271,280,288,296,300,309,312,316,337],[12,13,14],"p",{},"A typical software team runs hundreds of CI/CD jobs a day. Each one runs on compute and burns energy that doesn't show up in your pipeline logs, including its carbon impact.\nThat invisibility is exactly the problem.",[12,16,17],{},[18,19,20],"strong",{},"You can't reduce what you don't measure.",[12,22,23],{},"Eco CI and Carmen are third-party integrations that add a carbon lens to the pipelines you're already running in GitLab. Both are open source tools you can wire into any pipeline today. Here's why that's worth doing, and how to get started with Green DevOps.",[25,26,28],"h2",{"id":27},"why-it-matters","Why it matters",[12,30,31],{},"The compute footprint of a modern pipeline is growing. AI-assisted testing, code review, and pipeline automation all add jobs that didn't exist a few years ago, and each one carries an energy cost that never shows up in your pipeline metrics or your architecture diagram. Green DevOps is the practice of changing that. It means measuring emissions per pipeline run, per service, and per pod, and then using that data to make better engineering decisions.",[25,33,35],{"id":34},"where-carbon-shows-up-in-your-stack","Where carbon shows up in your stack",[12,37,38],{},"Two of the most actionable layers for engineering teams are:",[40,41,43],"h3",{"id":42},"pipeline-level","Pipeline level",[12,45,46,52],{},[47,48,51],"a",{"href":49,"rel":50},"https://docs.gitlab.com/ci/sustainability/eco_ci/",[],"Eco CI"," measures energy consumption and carbon emissions from your CI/CD jobs. It runs as lightweight bash scripts, with no separate servers or databases. You get per-job emission data, identify your most resource-intensive jobs, track trends over time, and display a carbon badge in your README.",[12,54,55],{},"For most teams, it's a good starting point. Your pipeline is already instrumented; Eco CI adds a carbon lens to it.",[40,57,59],{"id":58},"infrastructure-and-application-levels","Infrastructure and application levels",[12,61,62,67,68,73,74,78,79,82],{},[47,63,66],{"href":64,"rel":65},"https://docs.gitlab.com/ci/sustainability/carmen/",[],"Carmen"," (Carbon Measurement Engine) goes deeper. Built on the ",[47,69,72],{"href":70,"rel":71},"https://if.greensoftware.foundation/",[],"Green Software Foundation Impact Framework",", it measures emissions from virtual machines, pods, and individual application workloads running\nin Kubernetes. You get a per-component CSV report, broken down by operational carbon (energy use) and embodied carbon (hardware manufacturing and disposal), that you can feed into Grafana, FinOps dashboards, or your own tooling. Output fields include ",[75,76,77],"code",{},"EnergykWh"," and ",[75,80,81],{},"TotalCarbonGramsCO2eq"," per component, so the data slots into existing dashboards without transformation.",[12,84,85],{},"Carmen is particularly powerful for answering questions like:",[87,88,89,93],"ul",{},[90,91,92],"li",{},"Which service in our stack emits the most CO2?",[90,94,95],{},"How does our API gateway compare to our data processing layer?",[25,97,99],{"id":98},"getting-started-in-your-pipeline","Getting started in your pipeline",[12,101,102,103,106],{},"Both tools integrate directly into ",[75,104,105],{},".gitlab-ci.yml",". A Carmen job looks like this:",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-yaml shiki shiki-themes github-light","carbon-report:\n  image: python:3.12\n  before_script:\n    # Install Carmen and the IF toolchain\n    - apt-get update && apt-get install -y nodejs npm git lsb-release\n    - git clone https://github.com/Green-Software-Foundation/if-carmen.git\n    - npm install -g \"@grnsft/if@1.0.0\" \"@grnsft/if-plugins@0.3.2\" \"@grnsft/if-unofficial-plugins@0.3.1\"\n    - pip install --upgrade pip && pip install -e $CI_PROJECT_DIR/if-carmen\n  script:\n    - cd $CI_PROJECT_DIR/if-carmen/example-data && carbon-daemon\n  artifacts:\n    paths:\n      - if-carmen/example-data/output/\n    expire_in: 1 week\n","yaml","",[75,115,116,129,142,150,157,166,174,182,190,198,206,214,222,231],{"__ignoreMap":113},[117,118,121,125],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"shJU0","carbon-report",[117,126,128],{"class":127},"sgsFI",":\n",[117,130,132,135,138],{"class":119,"line":131},2,[117,133,134],{"class":123},"  image",[117,136,137],{"class":127},": ",[117,139,141],{"class":140},"sYBdl","python:3.12\n",[117,143,145,148],{"class":119,"line":144},3,[117,146,147],{"class":123},"  before_script",[117,149,128],{"class":127},[117,151,153],{"class":119,"line":152},4,[117,154,156],{"class":155},"sAwPA","    # Install Carmen and the IF toolchain\n",[117,158,160,163],{"class":119,"line":159},5,[117,161,162],{"class":127},"    - ",[117,164,165],{"class":140},"apt-get update && apt-get install -y nodejs npm git lsb-release\n",[117,167,169,171],{"class":119,"line":168},6,[117,170,162],{"class":127},[117,172,173],{"class":140},"git clone https://github.com/Green-Software-Foundation/if-carmen.git\n",[117,175,177,179],{"class":119,"line":176},7,[117,178,162],{"class":127},[117,180,181],{"class":140},"npm install -g \"@grnsft/if@1.0.0\" \"@grnsft/if-plugins@0.3.2\" \"@grnsft/if-unofficial-plugins@0.3.1\"\n",[117,183,185,187],{"class":119,"line":184},8,[117,186,162],{"class":127},[117,188,189],{"class":140},"pip install --upgrade pip && pip install -e $CI_PROJECT_DIR/if-carmen\n",[117,191,193,196],{"class":119,"line":192},9,[117,194,195],{"class":123},"  script",[117,197,128],{"class":127},[117,199,201,203],{"class":119,"line":200},10,[117,202,162],{"class":127},[117,204,205],{"class":140},"cd $CI_PROJECT_DIR/if-carmen/example-data && carbon-daemon\n",[117,207,209,212],{"class":119,"line":208},11,[117,210,211],{"class":123},"  artifacts",[117,213,128],{"class":127},[117,215,217,220],{"class":119,"line":216},12,[117,218,219],{"class":123},"    paths",[117,221,128],{"class":127},[117,223,225,228],{"class":119,"line":224},13,[117,226,227],{"class":127},"      - ",[117,229,230],{"class":140},"if-carmen/example-data/output/\n",[117,232,234,237,239],{"class":119,"line":233},14,[117,235,236],{"class":123},"    expire_in",[117,238,137],{"class":127},[117,240,241],{"class":140},"1 week\n",[12,243,244],{},"Run it, download the artifact, and you have your first carbon report.",[25,246,248],{"id":247},"what-it-looks-like-in-practice","What it looks like in practice",[12,250,251,252,254],{},"Consider a team running hundreds of pipeline jobs a day. They add Eco CI in an afternoon, with a few lines in ",[75,253,105],{}," and a README badge. Their first weekly report surfaces an unexpected finding: Their integration test suite accounts for a disproportionate share of\ntotal pipeline emissions, more than any other job type.",[12,256,257],{},"The culprit isn't the tests themselves, but the setup: Every run reinstalls its full dependency set from scratch. Caching the dependency layer can cut both test job runtime and its emission footprint. No new infrastructure, no architectural decisions. A one-line cache config.",[12,259,260],{},"Six weeks later, they run Carmen against their staging cluster and find a different kind of problem: A data processing service left over from a deprecated feature is still running, idle, consuming embodied and operational carbon for work that no longer happens. A ticket gets filed. The service is decommissioned.",[12,262,263],{},"Neither fix required a sustainability initiative, just visibility. Most carbon waste isn't intentional, it's invisible, and that's what Eco CI and Carmen are built to fix.",[25,265,267],{"id":266},"low-effort-real-payoff","Low effort, real payoff",[12,269,270],{},"This Green DevOps strategy is low effort because it slots into pipelines you already run. It also has real payoff because the data compounds, whether that shows up as a compliance baseline or a lower CI bill.",[12,272,273,276,279],{},[18,274,275],{},"Small numbers still build a baseline",[277,278],"br",{},"\nAt the individual company level, your pipeline's emissions are probably a rounding error against global totals. But measurement isn't primarily about your share of the total. It's about building the data, tooling, and culture you'll need as emissions reporting expectations evolve. Teams measuring now will already have baselines and internal habits in place when that day comes, instead of starting from zero under pressure.",[12,281,282,285,287],{},[18,283,284],{},"It fits into pipelines you already have",[277,286],{},"\nEco CI is a handful of lines and a bash script. It doesn't spin up additional infrastructure or add meaningful latency. Carmen runs as a separate, non-blocking job. Neither is in your critical path. If your pipeline can run a linting check, it can run a carbon measurement.",[12,289,290,293,295],{},[18,291,292],{},"The payoff shows up in your FinOps numbers, too",[277,294],{},"\nCarbon-efficient code is often also faster and cheaper code. Bloated pipelines burn developer time and cloud budget before they burn carbon. The same cache that reduces emissions can also help reduce your CI bill. Right-sizing runners is a FinOps win as much as a sustainability one, and you\ndon't have to frame it as an environmental initiative to benefit from it.",[25,297,299],{"id":298},"the-bigger-picture","The bigger picture",[12,301,302,303,308],{},"Carbon-aware engineering is becoming a professional expectation, not a nice-to-have. Regulations like the ",[47,304,307],{"href":305,"rel":306},"https://finance.ec.europa.eu/financial-markets/company-reporting-and-auditing/company-reporting/corporate-sustainability-reporting_en",[],"EU's Corporate Sustainability Reporting Directive (CSRD)"," require large companies to disclose emissions across their value chain, including cloud usage, and enterprise customers increasingly ask vendors about sustainability practices during procurement.",[12,310,311],{},"You don't need a mandate to start. You can add Eco CI to a single pipeline, then bring Carmen in for the infrastructure-level view.",[25,313,315],{"id":314},"learn-more","Learn more",[87,317,318,325,331],{},[90,319,320],{},[47,321,324],{"href":322,"rel":323},"https://docs.gitlab.com/ci/sustainability/",[],"CI/CD sustainability overview",[90,326,327],{},[47,328,330],{"href":49,"rel":329},[],"Eco CI integration",[90,332,333],{},[47,334,336],{"href":64,"rel":335},[],"Carmen integration",[338,339,340],"style",{},"html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":113,"searchDepth":131,"depth":131,"links":342},[343,344,348,349,350,351,352],{"id":27,"depth":131,"text":28},{"id":34,"depth":131,"text":35,"children":345},[346,347],{"id":42,"depth":144,"text":43},{"id":58,"depth":144,"text":59},{"id":98,"depth":131,"text":99},{"id":247,"depth":131,"text":248},{"id":266,"depth":131,"text":267},{"id":298,"depth":131,"text":299},{"id":314,"depth":131,"text":315},"engineering","2026-07-09","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.","md",null,true,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png",{},"/en-us/blog/green-devops-carbon-measurement-cicd-pipeline",{"title":5,"description":355},"green-devops-carbon-measurement-cicd-pipeline","en-us/blog/green-devops-carbon-measurement-cicd-pipeline",[366,367],"ci-cd","devops","BlogPost","LkabvOdaZ2xlBe9vaGq6u8RsLI2NTkUSlEm_SUS-njc",{"logo":371,"freeTrial":376,"sales":381,"login":386,"items":391,"search":717,"minimal":748,"duo":767,"switchNav":776,"pricingDeployment":787},{"config":372},{"href":373,"dataGaName":374,"dataGaLocation":375},"/","gitlab logo","header",{"text":377,"config":378},"Get free trial",{"href":379,"dataGaName":380,"dataGaLocation":375},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":382,"config":383},"Request a demo",{"href":384,"dataGaName":385,"dataGaLocation":375},"/sales/?contact-topic=request-demo","sales",{"text":387,"config":388},"Sign in",{"href":389,"dataGaName":390,"dataGaLocation":375},"https://gitlab.com/users/sign_in/","sign in",[392,420,520,525,639,695],{"text":393,"config":394,"menu":396},"Platform",{"dataNavLevelOne":395},"platform",{"type":397,"columns":398},"cards",[399,405,413],{"title":393,"description":400,"link":401},"The intelligent orchestration platform for DevSecOps",{"text":402,"config":403},"Explore our Platform",{"href":404,"dataGaName":395,"dataGaLocation":375},"/platform/",{"title":406,"description":407,"link":408},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":409,"config":410},"Meet GitLab Duo",{"href":411,"dataGaName":412,"dataGaLocation":375},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":414,"description":415,"link":416},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":315,"config":417},{"href":418,"dataGaName":419,"dataGaLocation":375},"/why-gitlab/","why gitlab",{"text":421,"left":358,"config":422,"menu":424},"Product",{"dataNavLevelOne":423},"solutions",{"type":425,"link":426,"columns":430,"feature":499},"lists",{"text":427,"config":428},"View all Solutions",{"href":429,"dataGaName":423,"dataGaLocation":375},"/solutions/",[431,455,478],{"title":432,"description":433,"link":434,"items":439},"Automation","CI/CD and automation to accelerate deployment",{"config":435},{"icon":436,"href":437,"dataGaName":438,"dataGaLocation":375},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[440,444,447,451],{"text":441,"config":442},"CI/CD",{"href":443,"dataGaLocation":375,"dataGaName":441},"/solutions/continuous-integration/",{"text":406,"config":445},{"href":411,"dataGaLocation":375,"dataGaName":446},"gitlab duo agent platform - product menu",{"text":448,"config":449},"Source Code Management",{"href":450,"dataGaLocation":375,"dataGaName":448},"/solutions/source-code-management/",{"text":452,"config":453},"Automated Software Delivery",{"href":437,"dataGaLocation":375,"dataGaName":454},"Automated software delivery",{"title":456,"description":457,"link":458,"items":463},"Security","Deliver code faster without compromising security",{"config":459},{"href":460,"dataGaName":461,"dataGaLocation":375,"icon":462},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[464,468,473],{"text":465,"config":466},"Application Security Testing",{"href":460,"dataGaName":467,"dataGaLocation":375},"Application security testing",{"text":469,"config":470},"Software Supply Chain Security",{"href":471,"dataGaLocation":375,"dataGaName":472},"/solutions/supply-chain/","Software supply chain security",{"text":474,"config":475},"Software Compliance",{"href":476,"dataGaName":477,"dataGaLocation":375},"/solutions/software-compliance/","software compliance",{"title":479,"link":480,"items":485},"Measurement",{"config":481},{"icon":482,"href":483,"dataGaName":484,"dataGaLocation":375},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[486,490,494],{"text":487,"config":488},"Visibility & Measurement",{"href":483,"dataGaLocation":375,"dataGaName":489},"Visibility and Measurement",{"text":491,"config":492},"Value Stream Management",{"href":493,"dataGaLocation":375,"dataGaName":491},"/solutions/value-stream-management/",{"text":495,"config":496},"Analytics & Insights",{"href":497,"dataGaLocation":375,"dataGaName":498},"/solutions/analytics-and-insights/","Analytics and insights",{"title":500,"type":425,"items":501},"GitLab for",[502,508,514],{"text":503,"config":504},"Enterprise",{"icon":505,"href":506,"dataGaLocation":375,"dataGaName":507},"Building","/enterprise/","enterprise",{"text":509,"config":510},"Small Business",{"icon":511,"href":512,"dataGaLocation":375,"dataGaName":513},"Work","/small-business/","small business",{"text":515,"config":516},"Public Sector",{"icon":517,"href":518,"dataGaLocation":375,"dataGaName":519},"Organization","/solutions/public-sector/","public sector",{"text":521,"config":522},"Pricing",{"href":523,"dataGaName":524,"dataGaLocation":375,"dataNavLevelOne":524},"/pricing/","pricing",{"text":526,"config":527,"menu":529},"Resources",{"dataNavLevelOne":528},"resources",{"type":425,"link":530,"columns":534,"feature":628},{"text":531,"config":532},"View all resources",{"href":533,"dataGaName":528,"dataGaLocation":375},"/resources/",[535,568,595],{"title":536,"items":537},"Getting started",[538,543,548,553,558,563],{"text":539,"config":540},"Install",{"href":541,"dataGaName":542,"dataGaLocation":375},"/install/","install",{"text":544,"config":545},"Quick start guides",{"href":546,"dataGaName":547,"dataGaLocation":375},"/get-started/","quick setup checklists",{"text":549,"config":550},"Learn",{"href":551,"dataGaLocation":375,"dataGaName":552},"https://university.gitlab.com/","learn",{"text":554,"config":555},"Product documentation",{"href":556,"dataGaName":557,"dataGaLocation":375},"https://docs.gitlab.com/","product documentation",{"text":559,"config":560},"Best practice videos",{"href":561,"dataGaName":562,"dataGaLocation":375},"/getting-started-videos/","best practice videos",{"text":564,"config":565},"Integrations",{"href":566,"dataGaName":567,"dataGaLocation":375},"/integrations/","integrations",{"title":569,"items":570},"Discover",[571,576,581,586,590],{"text":572,"config":573},"Customer success stories",{"href":574,"dataGaName":575,"dataGaLocation":375},"/customers/","customer success stories",{"text":577,"config":578},"Blog",{"href":579,"dataGaName":580,"dataGaLocation":375},"/blog/","blog",{"text":582,"config":583},"Demo Hub",{"href":584,"dataGaName":585,"dataGaLocation":375},"/demo-hub/","demo hub",{"text":587,"config":588},"The Source",{"href":589,"dataGaName":580,"dataGaLocation":375},"/the-source/",{"text":591,"config":592},"Remote",{"href":593,"dataGaName":594,"dataGaLocation":375},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":596,"items":597},"Connect",[598,603,608,613,618,623],{"text":599,"config":600},"GitLab Services",{"href":601,"dataGaName":602,"dataGaLocation":375},"/services/","services",{"text":604,"config":605},"Contribute",{"href":606,"dataGaName":607,"dataGaLocation":375},"https://contributors.gitlab.com","contribute",{"text":609,"config":610},"Community",{"href":611,"dataGaName":612,"dataGaLocation":375},"/community/","community",{"text":614,"config":615},"Forum",{"href":616,"dataGaName":617,"dataGaLocation":375},"https://forum.gitlab.com/","forum",{"text":619,"config":620},"Events",{"href":621,"dataGaName":622,"dataGaLocation":375},"/events/","events",{"text":624,"config":625},"Partners",{"href":626,"dataGaName":627,"dataGaLocation":375},"/partners/","partners",{"config":629,"title":632,"text":633,"link":634},{"background":630,"textColor":631},"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":635,"config":636},"Read the latest",{"href":637,"dataGaName":638,"dataGaLocation":375},"/whats-new/","whats new",{"text":640,"config":641,"menu":643},"Company",{"dataNavLevelOne":642},"company",{"type":425,"columns":644},[645],{"items":646},[647,652,658,660,665,670,675,680,685,690],{"text":648,"config":649},"About",{"href":650,"dataGaName":651,"dataGaLocation":375},"/company/","about",{"text":653,"config":654,"footerGa":657},"Jobs",{"href":655,"dataGaName":656,"dataGaLocation":375},"/jobs/","jobs",{"dataGaName":656},{"text":619,"config":659},{"href":621,"dataGaName":622,"dataGaLocation":375},{"text":661,"config":662},"Leadership",{"href":663,"dataGaName":664,"dataGaLocation":375},"/company/team/e-group/","leadership",{"text":666,"config":667},"Handbook",{"href":668,"dataGaName":669,"dataGaLocation":375},"https://handbook.gitlab.com/","handbook",{"text":671,"config":672},"Investor relations",{"href":673,"dataGaName":674,"dataGaLocation":375},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":676,"config":677},"Trust Center",{"href":678,"dataGaName":679,"dataGaLocation":375},"/security/","trust center",{"text":681,"config":682},"AI Transparency Center",{"href":683,"dataGaName":684,"dataGaLocation":375},"/ai-transparency-center/","ai transparency center",{"text":686,"config":687},"Newsletter",{"href":688,"dataGaName":689,"dataGaLocation":375},"/company/contact/#contact-forms","newsletter",{"text":691,"config":692},"Press",{"href":693,"dataGaName":694,"dataGaLocation":375},"/press/","press",{"text":696,"config":697,"menu":698},"Contact us",{"dataNavLevelOne":642},{"type":425,"columns":699},[700],{"items":701},[702,707,712],{"text":703,"config":704},"Talk to sales",{"href":705,"dataGaName":706,"dataGaLocation":375},"/sales/","talk to sales",{"text":708,"config":709},"Support portal",{"href":710,"dataGaName":711,"dataGaLocation":375},"https://support.gitlab.com/hc/en-us","support portal",{"text":713,"config":714},"Customer portal",{"href":715,"dataGaName":716,"dataGaLocation":375},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":718,"login":719,"suggestions":726},"Close",{"text":720,"link":721},"To search repositories and projects, login to",{"text":722,"config":723},"gitlab.com",{"href":389,"dataGaName":724,"dataGaLocation":725},"search login","search",{"text":727,"default":728},"Suggestions",[729,731,735,737,741,745],{"text":406,"config":730},{"href":411,"dataGaName":406,"dataGaLocation":725},{"text":732,"config":733},"Code Suggestions (AI)",{"href":734,"dataGaName":732,"dataGaLocation":725},"/solutions/code-suggestions/",{"text":441,"config":736},{"href":443,"dataGaName":441,"dataGaLocation":725},{"text":738,"config":739},"GitLab on AWS",{"href":740,"dataGaName":738,"dataGaLocation":725},"/partners/technology-partners/aws/",{"text":742,"config":743},"GitLab on Google Cloud",{"href":744,"dataGaName":742,"dataGaLocation":725},"/partners/technology-partners/google-cloud-platform/",{"text":746,"config":747},"Why GitLab?",{"href":418,"dataGaName":746,"dataGaLocation":725},{"freeTrial":749,"mobileIcon":754,"desktopIcon":759,"secondaryButton":762},{"text":750,"config":751},"Start free trial",{"href":752,"dataGaName":380,"dataGaLocation":753},"https://gitlab.com/-/trials/new/","nav",{"altText":755,"config":756},"Gitlab Icon",{"src":757,"dataGaName":758,"dataGaLocation":753},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":755,"config":760},{"src":761,"dataGaName":758,"dataGaLocation":753},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":763,"config":764},"Get Started",{"href":765,"dataGaName":766,"dataGaLocation":753},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":768,"mobileIcon":772,"desktopIcon":774},{"text":769,"config":770},"Learn more about GitLab Duo",{"href":411,"dataGaName":771,"dataGaLocation":753},"gitlab duo",{"altText":755,"config":773},{"src":757,"dataGaName":758,"dataGaLocation":753},{"altText":755,"config":775},{"src":761,"dataGaName":758,"dataGaLocation":753},{"button":777,"mobileIcon":782,"desktopIcon":784},{"text":778,"config":779},"/switch",{"href":780,"dataGaName":781,"dataGaLocation":753},"#contact","switch",{"altText":755,"config":783},{"src":757,"dataGaName":758,"dataGaLocation":753},{"altText":755,"config":785},{"src":786,"dataGaName":758,"dataGaLocation":753},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":788,"mobileIcon":793,"desktopIcon":795},{"text":789,"config":790},"Back to pricing",{"href":523,"dataGaName":791,"dataGaLocation":753,"icon":792},"back to pricing","GoBack",{"altText":755,"config":794},{"src":757,"dataGaName":758,"dataGaLocation":753},{"altText":755,"config":796},{"src":761,"dataGaName":758,"dataGaLocation":753},{"title":798,"titleMobile":799,"button":800,"config":805},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":315,"config":801},{"href":802,"dataGaName":803,"dataGaLocation":804},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":806,"disabled":807},"release",false,{"data":809},{"text":810,"source":811,"edit":817,"contribute":822,"config":827,"items":832,"minimal":1041},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":812,"config":813},"View page source",{"href":814,"dataGaName":815,"dataGaLocation":816},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":818,"config":819},"Edit this page",{"href":820,"dataGaName":821,"dataGaLocation":816},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":823,"config":824},"Please contribute",{"href":825,"dataGaName":826,"dataGaLocation":816},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":828,"facebook":829,"youtube":830,"linkedin":831},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[833,880,933,977,1009],{"title":521,"links":834,"subMenu":849},[835,839,844],{"text":836,"config":837},"View plans",{"href":523,"dataGaName":838,"dataGaLocation":816},"view plans",{"text":840,"config":841},"Why Premium?",{"href":842,"dataGaName":843,"dataGaLocation":816},"/pricing/premium/","why premium",{"text":845,"config":846},"Why Ultimate?",{"href":847,"dataGaName":848,"dataGaLocation":816},"/pricing/ultimate/","why ultimate",[850],{"title":851,"links":852},"Contact Us",[853,856,858,860,865,870,875],{"text":854,"config":855},"Contact sales",{"href":705,"dataGaName":385,"dataGaLocation":816},{"text":708,"config":857},{"href":710,"dataGaName":711,"dataGaLocation":816},{"text":713,"config":859},{"href":715,"dataGaName":716,"dataGaLocation":816},{"text":861,"config":862},"Status",{"href":863,"dataGaName":864,"dataGaLocation":816},"https://status.gitlab.com/","status",{"text":866,"config":867},"Terms of use",{"href":868,"dataGaName":869,"dataGaLocation":816},"/terms/","terms of use",{"text":871,"config":872},"Privacy statement",{"href":873,"dataGaName":874,"dataGaLocation":816},"/privacy/","privacy statement",{"text":876,"config":877},"Cookie preferences",{"dataGaName":878,"dataGaLocation":816,"id":879,"isOneTrustButton":358},"cookie preferences","ot-sdk-btn",{"title":421,"links":881,"subMenu":890},[882,886],{"text":883,"config":884},"DevSecOps platform",{"href":404,"dataGaName":885,"dataGaLocation":816},"devsecops platform",{"text":887,"config":888},"AI-Assisted Development",{"href":411,"dataGaName":889,"dataGaLocation":816},"ai-assisted development",[891],{"title":892,"links":893},"Topics",[894,899,904,908,913,918,923,928],{"text":895,"config":896},"CICD",{"href":897,"dataGaName":898,"dataGaLocation":816},"/topics/ci-cd/","cicd",{"text":900,"config":901},"GitOps",{"href":902,"dataGaName":903,"dataGaLocation":816},"/topics/gitops/","gitops",{"text":905,"config":906},"DevOps",{"href":907,"dataGaName":367,"dataGaLocation":816},"/topics/devops/",{"text":909,"config":910},"Version Control",{"href":911,"dataGaName":912,"dataGaLocation":816},"/topics/version-control/","version control",{"text":914,"config":915},"DevSecOps",{"href":916,"dataGaName":917,"dataGaLocation":816},"/topics/devsecops/","devsecops",{"text":919,"config":920},"Cloud Native",{"href":921,"dataGaName":922,"dataGaLocation":816},"/topics/cloud-native/","cloud native",{"text":924,"config":925},"AI for Coding",{"href":926,"dataGaName":927,"dataGaLocation":816},"/topics/devops/ai-for-coding/","ai for coding",{"text":929,"config":930},"Agentic AI",{"href":931,"dataGaName":932,"dataGaLocation":816},"/topics/agentic-ai/","agentic ai",{"title":934,"links":935},"Solutions",[936,938,940,945,949,952,956,959,961,964,967,972],{"text":465,"config":937},{"href":460,"dataGaName":465,"dataGaLocation":816},{"text":454,"config":939},{"href":437,"dataGaName":438,"dataGaLocation":816},{"text":941,"config":942},"Agile development",{"href":943,"dataGaName":944,"dataGaLocation":816},"/solutions/agile-delivery/","agile delivery",{"text":946,"config":947},"SCM",{"href":450,"dataGaName":948,"dataGaLocation":816},"source code management",{"text":895,"config":950},{"href":443,"dataGaName":951,"dataGaLocation":816},"continuous integration & delivery",{"text":953,"config":954},"Value stream management",{"href":493,"dataGaName":955,"dataGaLocation":816},"value stream management",{"text":900,"config":957},{"href":958,"dataGaName":903,"dataGaLocation":816},"/solutions/gitops/",{"text":503,"config":960},{"href":506,"dataGaName":507,"dataGaLocation":816},{"text":962,"config":963},"Small business",{"href":512,"dataGaName":513,"dataGaLocation":816},{"text":965,"config":966},"Public sector",{"href":518,"dataGaName":519,"dataGaLocation":816},{"text":968,"config":969},"Education",{"href":970,"dataGaName":971,"dataGaLocation":816},"/solutions/education/","education",{"text":973,"config":974},"Financial services",{"href":975,"dataGaName":976,"dataGaLocation":816},"/solutions/finance/","financial services",{"title":526,"links":978},[979,981,983,985,988,990,993,995,997,999,1001,1003,1005,1007],{"text":539,"config":980},{"href":541,"dataGaName":542,"dataGaLocation":816},{"text":544,"config":982},{"href":546,"dataGaName":547,"dataGaLocation":816},{"text":549,"config":984},{"href":551,"dataGaName":552,"dataGaLocation":816},{"text":554,"config":986},{"href":556,"dataGaName":987,"dataGaLocation":816},"docs",{"text":577,"config":989},{"href":579,"dataGaName":580,"dataGaLocation":816},{"text":991,"config":992},"What's new",{"href":637,"dataGaName":638,"dataGaLocation":816},{"text":572,"config":994},{"href":574,"dataGaName":575,"dataGaLocation":816},{"text":591,"config":996},{"href":593,"dataGaName":594,"dataGaLocation":816},{"text":599,"config":998},{"href":601,"dataGaName":602,"dataGaLocation":816},{"text":604,"config":1000},{"href":606,"dataGaName":607,"dataGaLocation":816},{"text":609,"config":1002},{"href":611,"dataGaName":612,"dataGaLocation":816},{"text":614,"config":1004},{"href":616,"dataGaName":617,"dataGaLocation":816},{"text":619,"config":1006},{"href":621,"dataGaName":622,"dataGaLocation":816},{"text":624,"config":1008},{"href":626,"dataGaName":627,"dataGaLocation":816},{"title":640,"links":1010},[1011,1013,1015,1017,1019,1021,1025,1030,1032,1034,1036],{"text":648,"config":1012},{"href":650,"dataGaName":642,"dataGaLocation":816},{"text":653,"config":1014},{"href":655,"dataGaName":656,"dataGaLocation":816},{"text":661,"config":1016},{"href":663,"dataGaName":664,"dataGaLocation":816},{"text":666,"config":1018},{"href":668,"dataGaName":669,"dataGaLocation":816},{"text":671,"config":1020},{"href":673,"dataGaName":674,"dataGaLocation":816},{"text":1022,"config":1023},"Sustainability",{"href":1024,"dataGaName":1022,"dataGaLocation":816},"/sustainability/",{"text":1026,"config":1027},"Diversity, inclusion and belonging (DIB)",{"href":1028,"dataGaName":1029,"dataGaLocation":816},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":676,"config":1031},{"href":678,"dataGaName":679,"dataGaLocation":816},{"text":686,"config":1033},{"href":688,"dataGaName":689,"dataGaLocation":816},{"text":691,"config":1035},{"href":693,"dataGaName":694,"dataGaLocation":816},{"text":1037,"config":1038},"Modern Slavery Transparency Statement",{"href":1039,"dataGaName":1040,"dataGaLocation":816},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1042},[1043,1046,1049],{"text":1044,"config":1045},"Terms",{"href":868,"dataGaName":869,"dataGaLocation":816},{"text":1047,"config":1048},"Cookies",{"dataGaName":878,"dataGaLocation":816,"id":879,"isOneTrustButton":358},{"text":1050,"config":1051},"Privacy",{"href":873,"dataGaName":874,"dataGaLocation":816},[1053],{"id":1054,"title":7,"body":357,"config":1055,"content":1057,"description":357,"extension":1062,"meta":1063,"navigation":358,"path":1064,"seo":1065,"stem":1066,"__hash__":1067},"blogAuthors/en-us/blog/authors/lysanne-pinto.yml",{"template":1056},"BlogAuthor",{"name":7,"config":1058},{"headshot":1059,"socialProof":1060},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1783534282/r23fzyebe9ph7l0myyeo.jpg",{"gitlabHandle":1061},"lyspin","yml",{},"/en-us/blog/authors/lysanne-pinto",{},"en-us/blog/authors/lysanne-pinto","zhpc7MTfxnHpfTR0eueYyMFS1sJDVxw-TgUIXQdwshw",[1069,1078,1086],{"title":1070,"description":1071,"heroImage":1072,"category":353,"date":1073,"authors":1074,"slug":1077,"externalUrl":357},"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",[1075,1076],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1079,"description":1080,"heroImage":1081,"category":353,"date":1082,"authors":1083,"slug":1085,"externalUrl":357},"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",[1084],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"title":1087,"description":1088,"heroImage":1089,"category":353,"date":1090,"authors":1091,"slug":1093,"externalUrl":357},"5 ways GitLab pipeline logic solves real engineering problems","Learn how to scale CI/CD with composable patterns for monorepos, microservices, environments, and governance.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772721753/frfsm1qfscwrmsyzj1qn.png","2026-04-09",[1092],"Omid Khan","5-ways-gitlab-pipeline-logic-solves-real-engineering-problems",{"promotions":1095},[1096,1110,1122,1134],{"id":1097,"categories":1098,"header":1100,"text":1101,"button":1102,"image":1107},"ai-modernization",[1099],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1103,"config":1104},"Get your AI maturity score",{"href":1105,"dataGaName":1106,"dataGaLocation":580},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1108},{"src":1109},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1111,"categories":1112,"header":1114,"text":1101,"button":1115,"image":1119},"devops-modernization",[1113,917],"product","Are you just managing tools or shipping innovation?",{"text":1116,"config":1117},"Get your DevOps maturity score",{"href":1118,"dataGaName":1106,"dataGaLocation":580},"/assessments/devops-modernization-assessment/",{"config":1120},{"src":1121},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1123,"categories":1124,"header":1126,"text":1101,"button":1127,"image":1131},"security-modernization",[1125],"security","Are you trading speed for security?",{"text":1128,"config":1129},"Get your security maturity score",{"href":1130,"dataGaName":1106,"dataGaLocation":580},"/assessments/security-modernization-assessment/",{"config":1132},{"src":1133},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1135,"paths":1136,"header":1139,"text":1140,"button":1141,"image":1146},"github-azure-migration",[1137,1138],"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":1142,"config":1143},"See how GitLab compares to GitHub",{"href":1144,"dataGaName":1145,"dataGaLocation":580},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1147},{"src":1121},{"header":1149,"blurb":1150,"button":1151,"secondaryButton":1156},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1152,"config":1153},"Get your free trial",{"href":1154,"dataGaName":380,"dataGaLocation":1155},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":854,"config":1157},{"href":705,"dataGaName":385,"dataGaLocation":1155},1786803749209]