[{"data":1,"prerenderedAt":1082},["ShallowReactive",2],{"/blog/how-we-reduced-mr-review-time-with-value-stream-management":3,"navigation-en-us":296,"banner-en-us":724,"footer-en-us":734,"blog-post-authors-en-us-Haim Snir":978,"blog-related-posts-en-us-how-we-reduced-mr-review-time-with-value-stream-management":993,"blog-promotions-en-us":1019,"next-steps-en-us":1072},{"id":4,"title":5,"authors":6,"body":8,"category":272,"date":273,"description":274,"extension":275,"externalUrl":276,"faq":276,"featured":277,"heroImage":278,"meta":279,"navigation":280,"path":281,"seo":282,"slug":286,"stem":287,"tags":288,"template":294,"updatedDate":276,"__hash__":295},"blogPosts/en-us/blog/how-we-reduced-mr-review-time-with-value-stream-management.md","How we reduced MR review time with Value Stream Management ",[7],"Haim Snir",{"type":9,"value":10,"toc":258},"minimark",[11,22,27,39,42,55,59,62,65,70,84,92,95,102,106,122,128,132,139,147,151,160,186,192,201,205,208,225,229],[12,13,14,15,21],"p",{},"At GitLab, we're passionate about using our own products internally, a.k.a. dogfooding. Dogfooding has led to significant improvements in accelerating our software delivery cycle time for customers. This article spotlights a specific use case where ",[16,17,20],"a",{"href":18,"rel":19},"https://about.gitlab.com/solutions/value-stream-management/",[],"GitLab Value Stream Management (VSM)"," has driven significant improvements for our engineering team. You'll learn how VSM helped us tackle two critical challenges: measuring the journey from idea conception to merge request completion, and streamlining our deployment workflows.",[23,24,26],"h2",{"id":25},"the-challenge-identifying-bottlenecks-in-mr-reviews","The Challenge: Identifying bottlenecks in MR reviews",[12,28,29,30,34,35,38],{},"Despite having well-defined workflows, one team noticed that MRs were taking longer than expected to be reviewed and merged. The challenge wasn’t just about the delays themselves, but about understanding ",[31,32,33],"em",{},"where"," in the review process these delays were happening and ",[31,36,37],{},"why",".",[12,40,41],{},"Our team’s goal was clear:",[43,44,45,49,52],"ul",{},[46,47,48],"li",{},"Identify where time was being spent from the initial idea to the final merge of an MR.",[46,50,51],{},"Pinpoint specific bottlenecks in the review process.",[46,53,54],{},"Understand how MR size, complexity, or documentation quality affect review time.",[23,56,58],{"id":57},"the-approach-measures-the-mr-review-time-in-gitlab-value-stream-analytics","The Approach: Measures the MR review time in GitLab Value Stream Analytics",[12,60,61],{},"Value Stream Analytics (VSA) enables organizations to map their entire workflow from idea to delivery, distinguishing between value-adding activities (VA) and non-value-adding activities (NVA) in the process flow. By calculating the ratio of value-added time to total lead time, the team can identify wasteful activities resulting in delays in MR reviews.",[12,63,64],{},"To obtain the necessary metrics, the team customized GitLab VSA to gain better visibility into our MR review process.",[66,67,69],"h3",{"id":68},"_1-setting-up-a-custom-stage-for-mr-review","1. Setting up a custom stage for MR review",[12,71,72,73,78,79,83],{},"The team added a ",[16,74,77],{"href":75,"rel":76},"https://docs.gitlab.com/user/group/value_stream_analytics/#value-stream-stage-events",[],"new custom stage"," in VSA called ",[80,81,82],"strong",{},"Review Time to Merge"," to specifically track the time from when a reviewer was first assigned to when the MR was merged.",[43,85,86,89],{},[46,87,88],{},"Start event: MR first reviewer assigned",[46,90,91],{},"End event: MR merged",[12,93,94],{},"By defining this stage, VSA began measuring the duration of the MR review process, giving us precise data on where time was being spent.",[12,96,97],{},[98,99],"img",{"alt":100,"src":101},"Defining stage of VSA","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097884/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097883929.png",[66,103,105],{"id":104},"_2-using-the-total-time-chart-for-clarity","2. Using the Total Time Chart for clarity",[12,107,108,109,117,118,121],{},"With the custom stage in place, the team used the ",[16,110,113,116],{"href":111,"rel":112},"https://about.gitlab.com/blog/value-stream-total-time-chart/",[],[80,114,115],{},"Total Time Chart"," on the VSA Overview page"," (",[80,119,120],{},"Analyze > Value Stream",") to visualize how much time was spent during the new MR Review stage. By comparing the values represented by each area on the chart, the team could quickly identify how this stage contributed to the total software delivery lifecycle (SDLC) time.",[12,123,124],{},[98,125],{"alt":126,"src":127},"total time chart for VSA","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097884/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097883930.png",[66,129,131],{"id":130},"_3-drilling-down-for-deeper-insights","3. Drilling down for deeper insights",[12,133,134,135,138],{},"To investigate specific delays, the team used the ",[80,136,137],{},"Stage Navigation Bar"," to dive deeper into the MR Review stage. This view allowed them to:",[43,140,141,144],{},[46,142,143],{},"Sort MRs by review time: The stage table showed all related MRs, sorted by review duration, making it easy to detect slow MRs.",[46,145,146],{},"Analyze individual MRs: For each MR, that team could examine factors such as reviewer assignment delays, multiple rounds of feedback, idle time after approval, and MR size/complexity.",[23,148,150],{"id":149},"the-outcome-actionable-insights-and-improvements","The outcome: Actionable insights and improvements",[12,152,153,154,159],{},"By customizing VSA to track ",[16,155,158],{"href":156,"rel":157},"https://docs.gitlab.com/user/project/merge_requests/reviews/",[],"MR review time",", the team uncovered several key insights:",[43,161,162,168,174,180],{},[46,163,164,167],{},[80,165,166],{},"Delays in reviewer assignment:"," Some MRs experienced delays because reviewers were assigned late, or reviewers had too many MRs in their queue.",[46,169,170,173],{},[80,171,172],{},"Slow review start times:"," Even after assignment, certain MRs sat idle before reviews began, often due to context switching or competing priorities.",[46,175,176,179],{},[80,177,178],{},"Multiple feedback loops:"," Larger MRs often required multiple rounds of feedback, which extended review time significantly.",[46,181,182,185],{},[80,183,184],{},"Idle time post-approval:"," Some MRs were approved but not merged promptly, often due to deployment coordination issues.",[12,187,188,189],{},"For the engineering manager on the team, VSA proved to be transformational/valuable in managing their team's workflow: ",[31,190,191],{},"\"I've used the VSA to justify where we were spending time in MR completion. We have VSA customized to our needs, and it's been very beneficial to our investigations for opportunities for improvements.”",[12,193,194,195,200],{},"Also, from this dogfooding experience, we’re now developing a key enhancement to improve visibility into the review process. We're adding a new event to VSA — ",[16,196,199],{"href":197,"rel":198},"https://gitlab.com/gitlab-org/gitlab/-/issues/503754",[],"Merge request last approved at"," — which creates a stage that breaks down MR review steps even further for granular visibility.",[23,202,204],{"id":203},"the-power-of-data-driven-decisions","The power of data-driven decisions",[12,206,207],{},"By leveraging GitLab’s VSA, we didn’t just identify bottlenecks – we gained actionable insights that led to measurable improvements in MR review time and overall developer productivity. We optimized merge request review cycles and increased developer throughput, validating our commitment to continuous improvement through measurement.",[209,210,211],"blockquote",{},[12,212,213,214,219,220,38],{},"Want to learn more about how VSA can help your team? ",[16,215,218],{"href":216,"rel":217},"https://about.gitlab.com/free-trial/",[],"Start a free  trial of GitLab Ultimate",", customize your value streams, and see how you can make improvements throughout the SDLC for your teams. Then, make sure to ",[16,221,224],{"href":222,"rel":223},"https://gitlab.com/gitlab-org/gitlab/-/issues/520962",[],"share your feedback and experiences in this issue",[23,226,228],{"id":227},"read-more","Read more",[43,230,231,238,245,252],{},[46,232,233],{},[16,234,237],{"href":235,"rel":236},"https://about.gitlab.com/the-source/platform/optimize-value-stream-efficiency-to-do-more-with-less-faster/",[],"Optimize value stream efficiency to do more with less, faster",[46,239,240],{},[16,241,244],{"href":242,"rel":243},"https://about.gitlab.com/blog/new-scheduled-reports-generation-tool-simplifies-value-stream-management/",[],"New Scheduled Reports Generation tool simplifies value stream management",[46,246,247],{},[16,248,251],{"href":249,"rel":250},"https://docs.gitlab.com/user/group/value_stream_analytics/",[],"Value stream analytics documentation",[46,253,254],{},[16,255,257],{"href":111,"rel":256},[],"Value stream management: Total Time Chart simplifies top-down optimization flow",{"title":259,"searchDepth":260,"depth":260,"links":261},"",2,[262,263,269,270,271],{"id":25,"depth":260,"text":26},{"id":57,"depth":260,"text":58,"children":264},[265,267,268],{"id":68,"depth":266,"text":69},3,{"id":104,"depth":266,"text":105},{"id":130,"depth":266,"text":131},{"id":149,"depth":260,"text":150},{"id":203,"depth":260,"text":204},{"id":227,"depth":260,"text":228},"engineering","2025-02-20","The GitLab engineering team leverages VSM to pinpoint bottlenecks in the merge request review process and streamline software delivery. See how we do it and what we've learned.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097876/Blog/Hero%20Images/Blog/Hero%20Images/REFERENCE%20-%20display%20preview%20for%20blog%20images%20%282%29_2pKf8RsKzAaThmQfqHIaa7_1750097875817.png",{},true,"/en-us/blog/how-we-reduced-mr-review-time-with-value-stream-management",{"title":5,"description":274,"ogTitle":5,"ogDescription":274,"noIndex":277,"ogImage":278,"ogUrl":283,"ogSiteName":284,"ogType":285,"canonicalUrls":283},"https://about.gitlab.com/blog/how-we-reduced-mr-review-time-with-value-stream-management","https://about.gitlab.com","article","how-we-reduced-mr-review-time-with-value-stream-management","en-us/blog/how-we-reduced-mr-review-time-with-value-stream-management",[289,290,291,292,293],"product","features","DevSecOps platform","workflow","solutions architecture","BlogPost","t8xE9aQc4Qp2Na1JyvC7P0yAJbAk59Ggrvow_tTy4po",{"logo":297,"freeTrial":302,"sales":307,"login":312,"items":317,"search":644,"minimal":675,"duo":694,"switchNav":703,"pricingDeployment":714},{"config":298},{"href":299,"dataGaName":300,"dataGaLocation":301},"/","gitlab logo","header",{"text":303,"config":304},"Get free trial",{"href":305,"dataGaName":306,"dataGaLocation":301},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":308,"config":309},"Request a demo",{"href":310,"dataGaName":311,"dataGaLocation":301},"/sales/?contact-topic=request-demo","sales",{"text":313,"config":314},"Sign in",{"href":315,"dataGaName":316,"dataGaLocation":301},"https://gitlab.com/users/sign_in/","sign in",[318,347,447,452,566,622],{"text":319,"config":320,"menu":322},"Platform",{"dataNavLevelOne":321},"platform",{"type":323,"columns":324},"cards",[325,331,339],{"title":319,"description":326,"link":327},"The intelligent orchestration platform for DevSecOps",{"text":328,"config":329},"Explore our Platform",{"href":330,"dataGaName":321,"dataGaLocation":301},"/platform/",{"title":332,"description":333,"link":334},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":335,"config":336},"Meet GitLab Duo",{"href":337,"dataGaName":338,"dataGaLocation":301},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":340,"description":341,"link":342},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":343,"config":344},"Learn more",{"href":345,"dataGaName":346,"dataGaLocation":301},"/why-gitlab/","why gitlab",{"text":348,"left":280,"config":349,"menu":351},"Product",{"dataNavLevelOne":350},"solutions",{"type":352,"link":353,"columns":357,"feature":426},"lists",{"text":354,"config":355},"View all Solutions",{"href":356,"dataGaName":350,"dataGaLocation":301},"/solutions/",[358,382,405],{"title":359,"description":360,"link":361,"items":366},"Automation","CI/CD and automation to accelerate deployment",{"config":362},{"icon":363,"href":364,"dataGaName":365,"dataGaLocation":301},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[367,371,374,378],{"text":368,"config":369},"CI/CD",{"href":370,"dataGaLocation":301,"dataGaName":368},"/solutions/continuous-integration/",{"text":332,"config":372},{"href":337,"dataGaLocation":301,"dataGaName":373},"gitlab duo agent platform - product menu",{"text":375,"config":376},"Source Code Management",{"href":377,"dataGaLocation":301,"dataGaName":375},"/solutions/source-code-management/",{"text":379,"config":380},"Automated Software Delivery",{"href":364,"dataGaLocation":301,"dataGaName":381},"Automated software delivery",{"title":383,"description":384,"link":385,"items":390},"Security","Deliver code faster without compromising security",{"config":386},{"href":387,"dataGaName":388,"dataGaLocation":301,"icon":389},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[391,395,400],{"text":392,"config":393},"Application Security Testing",{"href":387,"dataGaName":394,"dataGaLocation":301},"Application security testing",{"text":396,"config":397},"Software Supply Chain Security",{"href":398,"dataGaLocation":301,"dataGaName":399},"/solutions/supply-chain/","Software supply chain security",{"text":401,"config":402},"Software Compliance",{"href":403,"dataGaName":404,"dataGaLocation":301},"/solutions/software-compliance/","software compliance",{"title":406,"link":407,"items":412},"Measurement",{"config":408},{"icon":409,"href":410,"dataGaName":411,"dataGaLocation":301},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[413,417,421],{"text":414,"config":415},"Visibility & Measurement",{"href":410,"dataGaLocation":301,"dataGaName":416},"Visibility and Measurement",{"text":418,"config":419},"Value Stream Management",{"href":420,"dataGaLocation":301,"dataGaName":418},"/solutions/value-stream-management/",{"text":422,"config":423},"Analytics & Insights",{"href":424,"dataGaLocation":301,"dataGaName":425},"/solutions/analytics-and-insights/","Analytics and insights",{"title":427,"type":352,"items":428},"GitLab for",[429,435,441],{"text":430,"config":431},"Enterprise",{"icon":432,"href":433,"dataGaLocation":301,"dataGaName":434},"Building","/enterprise/","enterprise",{"text":436,"config":437},"Small Business",{"icon":438,"href":439,"dataGaLocation":301,"dataGaName":440},"Work","/small-business/","small business",{"text":442,"config":443},"Public Sector",{"icon":444,"href":445,"dataGaLocation":301,"dataGaName":446},"Organization","/solutions/public-sector/","public sector",{"text":448,"config":449},"Pricing",{"href":450,"dataGaName":451,"dataGaLocation":301,"dataNavLevelOne":451},"/pricing/","pricing",{"text":453,"config":454,"menu":456},"Resources",{"dataNavLevelOne":455},"resources",{"type":352,"link":457,"columns":461,"feature":555},{"text":458,"config":459},"View all resources",{"href":460,"dataGaName":455,"dataGaLocation":301},"/resources/",[462,495,522],{"title":463,"items":464},"Getting started",[465,470,475,480,485,490],{"text":466,"config":467},"Install",{"href":468,"dataGaName":469,"dataGaLocation":301},"/install/","install",{"text":471,"config":472},"Quick start guides",{"href":473,"dataGaName":474,"dataGaLocation":301},"/get-started/","quick setup checklists",{"text":476,"config":477},"Learn",{"href":478,"dataGaLocation":301,"dataGaName":479},"https://university.gitlab.com/","learn",{"text":481,"config":482},"Product documentation",{"href":483,"dataGaName":484,"dataGaLocation":301},"https://docs.gitlab.com/","product documentation",{"text":486,"config":487},"Best practice videos",{"href":488,"dataGaName":489,"dataGaLocation":301},"/getting-started-videos/","best practice videos",{"text":491,"config":492},"Integrations",{"href":493,"dataGaName":494,"dataGaLocation":301},"/integrations/","integrations",{"title":496,"items":497},"Discover",[498,503,508,513,517],{"text":499,"config":500},"Customer success stories",{"href":501,"dataGaName":502,"dataGaLocation":301},"/customers/","customer success stories",{"text":504,"config":505},"Blog",{"href":506,"dataGaName":507,"dataGaLocation":301},"/blog/","blog",{"text":509,"config":510},"Demo Hub",{"href":511,"dataGaName":512,"dataGaLocation":301},"/demo-hub/","demo hub",{"text":514,"config":515},"The Source",{"href":516,"dataGaName":507,"dataGaLocation":301},"/the-source/",{"text":518,"config":519},"Remote",{"href":520,"dataGaName":521,"dataGaLocation":301},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":523,"items":524},"Connect",[525,530,535,540,545,550],{"text":526,"config":527},"GitLab Services",{"href":528,"dataGaName":529,"dataGaLocation":301},"/services/","services",{"text":531,"config":532},"Contribute",{"href":533,"dataGaName":534,"dataGaLocation":301},"https://contributors.gitlab.com","contribute",{"text":536,"config":537},"Community",{"href":538,"dataGaName":539,"dataGaLocation":301},"/community/","community",{"text":541,"config":542},"Forum",{"href":543,"dataGaName":544,"dataGaLocation":301},"https://forum.gitlab.com/","forum",{"text":546,"config":547},"Events",{"href":548,"dataGaName":549,"dataGaLocation":301},"/events/","events",{"text":551,"config":552},"Partners",{"href":553,"dataGaName":554,"dataGaLocation":301},"/partners/","partners",{"config":556,"title":559,"text":560,"link":561},{"background":557,"textColor":558},"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":562,"config":563},"Read the latest",{"href":564,"dataGaName":565,"dataGaLocation":301},"/whats-new/","whats new",{"text":567,"config":568,"menu":570},"Company",{"dataNavLevelOne":569},"company",{"type":352,"columns":571},[572],{"items":573},[574,579,585,587,592,597,602,607,612,617],{"text":575,"config":576},"About",{"href":577,"dataGaName":578,"dataGaLocation":301},"/company/","about",{"text":580,"config":581,"footerGa":584},"Jobs",{"href":582,"dataGaName":583,"dataGaLocation":301},"/jobs/","jobs",{"dataGaName":583},{"text":546,"config":586},{"href":548,"dataGaName":549,"dataGaLocation":301},{"text":588,"config":589},"Leadership",{"href":590,"dataGaName":591,"dataGaLocation":301},"/company/team/e-group/","leadership",{"text":593,"config":594},"Handbook",{"href":595,"dataGaName":596,"dataGaLocation":301},"https://handbook.gitlab.com/","handbook",{"text":598,"config":599},"Investor relations",{"href":600,"dataGaName":601,"dataGaLocation":301},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":603,"config":604},"Trust Center",{"href":605,"dataGaName":606,"dataGaLocation":301},"/security/","trust center",{"text":608,"config":609},"AI Transparency Center",{"href":610,"dataGaName":611,"dataGaLocation":301},"/ai-transparency-center/","ai transparency center",{"text":613,"config":614},"Newsletter",{"href":615,"dataGaName":616,"dataGaLocation":301},"/company/contact/#contact-forms","newsletter",{"text":618,"config":619},"Press",{"href":620,"dataGaName":621,"dataGaLocation":301},"/press/","press",{"text":623,"config":624,"menu":625},"Contact us",{"dataNavLevelOne":569},{"type":352,"columns":626},[627],{"items":628},[629,634,639],{"text":630,"config":631},"Talk to sales",{"href":632,"dataGaName":633,"dataGaLocation":301},"/sales/","talk to sales",{"text":635,"config":636},"Support portal",{"href":637,"dataGaName":638,"dataGaLocation":301},"https://support.gitlab.com/hc/en-us","support portal",{"text":640,"config":641},"Customer portal",{"href":642,"dataGaName":643,"dataGaLocation":301},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":645,"login":646,"suggestions":653},"Close",{"text":647,"link":648},"To search repositories and projects, login to",{"text":649,"config":650},"gitlab.com",{"href":315,"dataGaName":651,"dataGaLocation":652},"search login","search",{"text":654,"default":655},"Suggestions",[656,658,662,664,668,672],{"text":332,"config":657},{"href":337,"dataGaName":332,"dataGaLocation":652},{"text":659,"config":660},"Code Suggestions (AI)",{"href":661,"dataGaName":659,"dataGaLocation":652},"/solutions/code-suggestions/",{"text":368,"config":663},{"href":370,"dataGaName":368,"dataGaLocation":652},{"text":665,"config":666},"GitLab on AWS",{"href":667,"dataGaName":665,"dataGaLocation":652},"/partners/technology-partners/aws/",{"text":669,"config":670},"GitLab on Google Cloud",{"href":671,"dataGaName":669,"dataGaLocation":652},"/partners/technology-partners/google-cloud-platform/",{"text":673,"config":674},"Why GitLab?",{"href":345,"dataGaName":673,"dataGaLocation":652},{"freeTrial":676,"mobileIcon":681,"desktopIcon":686,"secondaryButton":689},{"text":677,"config":678},"Start free trial",{"href":679,"dataGaName":306,"dataGaLocation":680},"https://gitlab.com/-/trials/new/","nav",{"altText":682,"config":683},"Gitlab Icon",{"src":684,"dataGaName":685,"dataGaLocation":680},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":682,"config":687},{"src":688,"dataGaName":685,"dataGaLocation":680},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":690,"config":691},"Get Started",{"href":692,"dataGaName":693,"dataGaLocation":680},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":695,"mobileIcon":699,"desktopIcon":701},{"text":696,"config":697},"Learn more about GitLab Duo",{"href":337,"dataGaName":698,"dataGaLocation":680},"gitlab duo",{"altText":682,"config":700},{"src":684,"dataGaName":685,"dataGaLocation":680},{"altText":682,"config":702},{"src":688,"dataGaName":685,"dataGaLocation":680},{"button":704,"mobileIcon":709,"desktopIcon":711},{"text":705,"config":706},"/switch",{"href":707,"dataGaName":708,"dataGaLocation":680},"#contact","switch",{"altText":682,"config":710},{"src":684,"dataGaName":685,"dataGaLocation":680},{"altText":682,"config":712},{"src":713,"dataGaName":685,"dataGaLocation":680},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":715,"mobileIcon":720,"desktopIcon":722},{"text":716,"config":717},"Back to pricing",{"href":450,"dataGaName":718,"dataGaLocation":680,"icon":719},"back to pricing","GoBack",{"altText":682,"config":721},{"src":684,"dataGaName":685,"dataGaLocation":680},{"altText":682,"config":723},{"src":688,"dataGaName":685,"dataGaLocation":680},{"title":725,"titleMobile":726,"button":727,"config":732},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":343,"config":728},{"href":729,"dataGaName":730,"dataGaLocation":731},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":733,"disabled":277},"release",{"data":735},{"text":736,"source":737,"edit":743,"contribute":748,"config":753,"items":758,"minimal":967},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":738,"config":739},"View page source",{"href":740,"dataGaName":741,"dataGaLocation":742},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":744,"config":745},"Edit this page",{"href":746,"dataGaName":747,"dataGaLocation":742},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":749,"config":750},"Please contribute",{"href":751,"dataGaName":752,"dataGaLocation":742},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":754,"facebook":755,"youtube":756,"linkedin":757},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[759,806,859,903,935],{"title":448,"links":760,"subMenu":775},[761,765,770],{"text":762,"config":763},"View plans",{"href":450,"dataGaName":764,"dataGaLocation":742},"view plans",{"text":766,"config":767},"Why Premium?",{"href":768,"dataGaName":769,"dataGaLocation":742},"/pricing/premium/","why premium",{"text":771,"config":772},"Why Ultimate?",{"href":773,"dataGaName":774,"dataGaLocation":742},"/pricing/ultimate/","why ultimate",[776],{"title":777,"links":778},"Contact Us",[779,782,784,786,791,796,801],{"text":780,"config":781},"Contact sales",{"href":632,"dataGaName":311,"dataGaLocation":742},{"text":635,"config":783},{"href":637,"dataGaName":638,"dataGaLocation":742},{"text":640,"config":785},{"href":642,"dataGaName":643,"dataGaLocation":742},{"text":787,"config":788},"Status",{"href":789,"dataGaName":790,"dataGaLocation":742},"https://status.gitlab.com/","status",{"text":792,"config":793},"Terms of use",{"href":794,"dataGaName":795,"dataGaLocation":742},"/terms/","terms of use",{"text":797,"config":798},"Privacy statement",{"href":799,"dataGaName":800,"dataGaLocation":742},"/privacy/","privacy statement",{"text":802,"config":803},"Cookie preferences",{"dataGaName":804,"dataGaLocation":742,"id":805,"isOneTrustButton":280},"cookie preferences","ot-sdk-btn",{"title":348,"links":807,"subMenu":815},[808,811],{"text":291,"config":809},{"href":330,"dataGaName":810,"dataGaLocation":742},"devsecops platform",{"text":812,"config":813},"AI-Assisted Development",{"href":337,"dataGaName":814,"dataGaLocation":742},"ai-assisted development",[816],{"title":817,"links":818},"Topics",[819,824,829,834,839,844,849,854],{"text":820,"config":821},"CICD",{"href":822,"dataGaName":823,"dataGaLocation":742},"/topics/ci-cd/","cicd",{"text":825,"config":826},"GitOps",{"href":827,"dataGaName":828,"dataGaLocation":742},"/topics/gitops/","gitops",{"text":830,"config":831},"DevOps",{"href":832,"dataGaName":833,"dataGaLocation":742},"/topics/devops/","devops",{"text":835,"config":836},"Version Control",{"href":837,"dataGaName":838,"dataGaLocation":742},"/topics/version-control/","version control",{"text":840,"config":841},"DevSecOps",{"href":842,"dataGaName":843,"dataGaLocation":742},"/topics/devsecops/","devsecops",{"text":845,"config":846},"Cloud Native",{"href":847,"dataGaName":848,"dataGaLocation":742},"/topics/cloud-native/","cloud native",{"text":850,"config":851},"AI for Coding",{"href":852,"dataGaName":853,"dataGaLocation":742},"/topics/devops/ai-for-coding/","ai for coding",{"text":855,"config":856},"Agentic AI",{"href":857,"dataGaName":858,"dataGaLocation":742},"/topics/agentic-ai/","agentic ai",{"title":860,"links":861},"Solutions",[862,864,866,871,875,878,882,885,887,890,893,898],{"text":392,"config":863},{"href":387,"dataGaName":392,"dataGaLocation":742},{"text":381,"config":865},{"href":364,"dataGaName":365,"dataGaLocation":742},{"text":867,"config":868},"Agile development",{"href":869,"dataGaName":870,"dataGaLocation":742},"/solutions/agile-delivery/","agile delivery",{"text":872,"config":873},"SCM",{"href":377,"dataGaName":874,"dataGaLocation":742},"source code management",{"text":820,"config":876},{"href":370,"dataGaName":877,"dataGaLocation":742},"continuous integration & delivery",{"text":879,"config":880},"Value stream management",{"href":420,"dataGaName":881,"dataGaLocation":742},"value stream management",{"text":825,"config":883},{"href":884,"dataGaName":828,"dataGaLocation":742},"/solutions/gitops/",{"text":430,"config":886},{"href":433,"dataGaName":434,"dataGaLocation":742},{"text":888,"config":889},"Small business",{"href":439,"dataGaName":440,"dataGaLocation":742},{"text":891,"config":892},"Public sector",{"href":445,"dataGaName":446,"dataGaLocation":742},{"text":894,"config":895},"Education",{"href":896,"dataGaName":897,"dataGaLocation":742},"/solutions/education/","education",{"text":899,"config":900},"Financial services",{"href":901,"dataGaName":902,"dataGaLocation":742},"/solutions/finance/","financial services",{"title":453,"links":904},[905,907,909,911,914,916,919,921,923,925,927,929,931,933],{"text":466,"config":906},{"href":468,"dataGaName":469,"dataGaLocation":742},{"text":471,"config":908},{"href":473,"dataGaName":474,"dataGaLocation":742},{"text":476,"config":910},{"href":478,"dataGaName":479,"dataGaLocation":742},{"text":481,"config":912},{"href":483,"dataGaName":913,"dataGaLocation":742},"docs",{"text":504,"config":915},{"href":506,"dataGaName":507,"dataGaLocation":742},{"text":917,"config":918},"What's new",{"href":564,"dataGaName":565,"dataGaLocation":742},{"text":499,"config":920},{"href":501,"dataGaName":502,"dataGaLocation":742},{"text":518,"config":922},{"href":520,"dataGaName":521,"dataGaLocation":742},{"text":526,"config":924},{"href":528,"dataGaName":529,"dataGaLocation":742},{"text":531,"config":926},{"href":533,"dataGaName":534,"dataGaLocation":742},{"text":536,"config":928},{"href":538,"dataGaName":539,"dataGaLocation":742},{"text":541,"config":930},{"href":543,"dataGaName":544,"dataGaLocation":742},{"text":546,"config":932},{"href":548,"dataGaName":549,"dataGaLocation":742},{"text":551,"config":934},{"href":553,"dataGaName":554,"dataGaLocation":742},{"title":567,"links":936},[937,939,941,943,945,947,951,956,958,960,962],{"text":575,"config":938},{"href":577,"dataGaName":569,"dataGaLocation":742},{"text":580,"config":940},{"href":582,"dataGaName":583,"dataGaLocation":742},{"text":588,"config":942},{"href":590,"dataGaName":591,"dataGaLocation":742},{"text":593,"config":944},{"href":595,"dataGaName":596,"dataGaLocation":742},{"text":598,"config":946},{"href":600,"dataGaName":601,"dataGaLocation":742},{"text":948,"config":949},"Sustainability",{"href":950,"dataGaName":948,"dataGaLocation":742},"/sustainability/",{"text":952,"config":953},"Diversity, inclusion and belonging (DIB)",{"href":954,"dataGaName":955,"dataGaLocation":742},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":603,"config":957},{"href":605,"dataGaName":606,"dataGaLocation":742},{"text":613,"config":959},{"href":615,"dataGaName":616,"dataGaLocation":742},{"text":618,"config":961},{"href":620,"dataGaName":621,"dataGaLocation":742},{"text":963,"config":964},"Modern Slavery Transparency Statement",{"href":965,"dataGaName":966,"dataGaLocation":742},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":968},[969,972,975],{"text":970,"config":971},"Terms",{"href":794,"dataGaName":795,"dataGaLocation":742},{"text":973,"config":974},"Cookies",{"dataGaName":804,"dataGaLocation":742,"id":805,"isOneTrustButton":280},{"text":976,"config":977},"Privacy",{"href":799,"dataGaName":800,"dataGaLocation":742},[979],{"id":980,"title":7,"body":276,"config":981,"content":983,"description":276,"extension":987,"meta":988,"navigation":280,"path":989,"seo":990,"stem":991,"__hash__":992},"blogAuthors/en-us/blog/authors/haim-snir.yml",{"template":982},"BlogAuthor",{"name":7,"config":984},{"headshot":985,"ctfId":986},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664386/Blog/Author%20Headshots/hsnir1-headshot.jpg","hsnir1","yml",{},"/en-us/blog/authors/haim-snir",{},"en-us/blog/authors/haim-snir","QlbkmMt2gTV4WkkYcMKWbJ9Ah9kHw1xvYKHvbbXhyd4",[994,1003,1011],{"title":995,"description":996,"heroImage":997,"category":272,"date":998,"authors":999,"slug":1002,"externalUrl":276},"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",[1000,1001],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1004,"description":1005,"heroImage":1006,"category":272,"date":1007,"authors":1008,"slug":1010,"externalUrl":276},"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",[1009],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1012,"description":1013,"heroImage":1014,"category":272,"date":1015,"authors":1016,"slug":1018,"externalUrl":276},"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",[1017],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1020},[1021,1035,1046,1058],{"id":1022,"categories":1023,"header":1025,"text":1026,"button":1027,"image":1032},"ai-modernization",[1024],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1028,"config":1029},"Get your AI maturity score",{"href":1030,"dataGaName":1031,"dataGaLocation":507},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1033},{"src":1034},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1036,"categories":1037,"header":1038,"text":1026,"button":1039,"image":1043},"devops-modernization",[289,843],"Are you just managing tools or shipping innovation?",{"text":1040,"config":1041},"Get your DevOps maturity score",{"href":1042,"dataGaName":1031,"dataGaLocation":507},"/assessments/devops-modernization-assessment/",{"config":1044},{"src":1045},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1047,"categories":1048,"header":1050,"text":1026,"button":1051,"image":1055},"security-modernization",[1049],"security","Are you trading speed for security?",{"text":1052,"config":1053},"Get your security maturity score",{"href":1054,"dataGaName":1031,"dataGaLocation":507},"/assessments/security-modernization-assessment/",{"config":1056},{"src":1057},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1059,"paths":1060,"header":1063,"text":1064,"button":1065,"image":1070},"github-azure-migration",[1061,1062],"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":1066,"config":1067},"See how GitLab compares to GitHub",{"href":1068,"dataGaName":1069,"dataGaLocation":507},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1071},{"src":1045},{"header":1073,"blurb":1074,"button":1075,"secondaryButton":1080},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1076,"config":1077},"Get your free trial",{"href":1078,"dataGaName":306,"dataGaLocation":1079},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":780,"config":1081},{"href":632,"dataGaName":311,"dataGaLocation":1079},1786803762670]