[{"data":1,"prerenderedAt":1066},["ShallowReactive",2],{"/blog/vscode-workflow-new-features":3,"navigation-en-us":280,"banner-en-us":707,"footer-en-us":717,"blog-post-authors-en-us-Tomas Vik":961,"blog-related-posts-en-us-vscode-workflow-new-features":976,"blog-promotions-en-us":1002,"next-steps-en-us":1056},{"id":4,"title":5,"authors":6,"body":8,"category":259,"date":260,"description":261,"extension":262,"externalUrl":263,"faq":263,"featured":264,"heroImage":265,"meta":266,"navigation":63,"path":267,"seo":268,"slug":272,"stem":273,"tags":274,"template":278,"updatedDate":263,"__hash__":279},"blogPosts/en-us/blog/vscode-workflow-new-features.md","Four new tools for your Visual Studio Code and GitLab tool belt",[7],"Tomas Vik",{"type":9,"value":10,"toc":249},"minimark",[11,21,26,29,32,51,54,64,68,71,74,77,86,94,98,101,106,109,123,127,130,133,136,143,147,160,169,181,184,187,190,194,214,235],[12,13,14,15,20],"p",{},"In our ",[16,17,19],"a",{"href":18},"/blog/mr-reviews-with-vs-code/","previous post",", we talked about merge request (MR) Reviews. We explained how the GitLab Workflow extension helps you review MRs without leaving VS Code. Since releasing and polishing the MR reviews, we've been working on improvements to the extension. In this post, we will show you how the latest features fit into your workflow.",[22,23,25],"h3",{"id":24},"do-you-have-a-lot-to-say-use-a-snippet-patch","Do you have a lot to say? Use a snippet patch!",[12,27,28],{},"On GitLab's web UI there's the \"suggestions\" feature. It's handy for suggesting small changes in the MR review. The VS Code platform doesn't let us recreate the same experience, but the extension offers an alternative: Snippet patches.",[12,30,31],{},"Snippet patches are code changes (git patches) of arbitrary size shared as GitLab snippets. Because they don't have a size limit, they are perfect for suggesting changes to multiple files during the MR review.",[12,33,34,35,39,40,43,44,39,47,50],{},"The extension has two commands, ",[36,37,38],"code",{},"Create snippet patch"," and ",[36,41,42],{},"Apply snippet patch",". These commands use ",[36,45,46],{},"git diff",[36,48,49],{},"git apply",", respectively, which means people can still apply the snippet patch even if they don't use the GitLab Workflow extension.",[12,52,53],{},"If a suggestion in the comment is a hammer, then a snippet patch is a pneumatic tamping machine. Next time you'll review an MR, and you see a lot of space for improvement, remember the adage: \"A patch is worth a thousand words\".",[55,56],"iframe",{"width":57,"height":58,"src":59,"title":60,"frameBorder":61,"allow":62,"allowFullScreen":63},560,315,"https://www.youtube-nocookie.com/embed/QQxpLoKJULQ","YouTube video player","0","accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",true,[22,65,67],{"id":66},"whats-going-on-with-my-pipeline-improved-ci-status-display","What's going on with my pipeline? - Improved CI status display",[12,69,70],{},"The extension always showed the latest CI pipeline status in both the status bar and the sidebar. However, if you tried to gauge your pipeline status, you probably run into one or more surprises. The status was hard to understand. Sometimes it related to a different branch, or it was out of date.",[12,72,73],{},"We've made the pipeline status much more reliable and readable. For starters, you can now see individual jobs and their status in the sidebar. Click on any job, and the extension opens a browser window with the GitLab job page.",[12,75,76],{},"We also improved the consistency of showing the pipeline status. The status bar and sidebar are now in sync and always showing pipeline for the current branch.",[12,78,79,80,85],{},"We are excited about the cleaner code. It makes it easier for anyone to contribute functionality. If you'd be interested in giving it a shot, we recommend starting with the ",[16,81,84],{"href":82,"rel":83},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/106",[],"Download artifacts from the latest pipeline"," feature request.",[12,87,88,93],{},[89,90],"img",{"alt":91,"src":92},"VS Code status bar","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397669/blog/Content%20Images/2021-11-05-vscode-workflow-new-features/ci-pipeline-panel.png","\nVS Code CI Pipeline status overview from GitLab extension.",[22,95,97],{"id":96},"make-the-mr-your-own-working-with-checked-out-code","Make the MR your own - Working with checked out code",[12,99,100],{},"Two recent improvements play well together to make your review more interactive. They help you spend less time on actions that don't directly relate to reviewing code. These improvements let you check out the MR branch and open a local file during a review.",[102,103,105],"h4",{"id":104},"check-out-the-mr-branch","Check out the MR branch",[12,107,108],{},"You can checkout any MR locally, as long as it is not coming from a forked project. Right-click the MR in the side tree and select \"Checkout MR Branch\". After the command finishes, you'll have the MR branch checked out in your project. Now you can review and run the code.",[110,111,114,115],"figure",{"className":112},[113],"video_container","\n  ",[116,117],"video",{"src":118,"controls":119,"dataSetup":120,"dataTitle":121,"preload":122,"width":57},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/uploads/db804234ed4d338dea31a27778dba72e/checkout-mr-branch.mp4","true","{}","checkout-mr-branch","metadata",[102,124,126],{"id":125},"open-a-local-file-during-a-review","Open a local file during a review",[12,128,129],{},"When you look at a changed file in an MR, you can click on a small \"file\" icon in the top-right corner. The extension will open the same file in your local repository.",[12,131,132],{},"If your local branch is different from the MR branch, the local file might not be the same as the MR file.",[12,134,135],{},"Opening the local file is useful when you want to explore the surroundings of the file quickly. The VS Code automatically focuses the file in the file tree, which lets you see all the neighbouring files.",[110,137,114,139],{"className":138},[113],[116,140],{"src":141,"controls":119,"dataSetup":120,"dataTitle":142,"preload":122,"width":57},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/uploads/de2839b1ceb1be6c33cd80d7fe72bc6d/open-mr-file.mp4","open-mr-file",[22,144,146],{"id":145},"commitment-problems-browse-repositories-without-checking-them-out","Commitment problems? Browse repositories without checking them out",[12,148,149,150,155,156,159],{},"At GitLab, we've got some large repositories. The largest, which all GitLabbers use daily, is ",[16,151,154],{"href":152,"rel":153},"https://gitlab.com/gitlab-com/www-gitlab-com",[],"www-gitlab-com",", the website you see when you visit ",[36,157,158],{},"about.gitlab.com",". This 6 GB colossus takes several minutes to check out.",[12,161,162,163,168],{},"Exploring this repository is a perfect use case for our latest feature: Remote Repositories, ",[16,164,167],{"href":165,"rel":166},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/321",[],"contributed by Ethan Reesor",", a community member.",[12,170,171,172,175,176,180],{},"Run the ",[36,173,174],{},"GitLab: Open Remote Repository"," command, pick which project and branch you want to use, and ",[177,178,179],"em",{},"voilà",".  The extension opens the repository in your local workspace, but it doesn't store data on your local machine.",[12,182,183],{},"Remote repositories are useful when you want to browse a repository for a reference but don't plan to change the code.",[12,185,186],{},"This is the first iteration, and it's got some limitations - you can't use full-text search, fuzzy file navigation, and the files are read-only. It's useful nonetheless.",[55,188],{"width":57,"height":58,"src":189,"title":60,"frameBorder":61,"allow":62,"allowFullScreen":63},"https://www.youtube-nocookie.com/embed/p4GTVx_Nd2s",[22,191,193],{"id":192},"thank-you-community","Thank you community!",[12,195,196,197,202,203,208,209,213],{},"Most of the features introduced in this post are either implemented or suggested by a community member. Ahmed Mohamadeen ",[16,198,201],{"href":199,"rel":200},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/390",[],"suggested"," opening local file during MR review, Musisimaru ",[16,204,207],{"href":205,"rel":206},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/merge_requests/203",[],"created initial implementation"," of checking out MR branch, and Ethan Reesor ",[16,210,212],{"href":165,"rel":211},[],"implemented"," remote repositories.",[12,215,216,217,222,223,228,229,234],{},"If you'd like to shape the future of the GitLab Workflow VS Code extension, you can create issues in ",[16,218,221],{"href":219,"rel":220},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues",[],"our issue tracker",", or look for ",[16,224,227],{"href":225,"rel":226},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues?label_name%5B%5D=Accepting+merge+requests",[],"issues where we accept MRs",". Our ",[16,230,233],{"href":231,"rel":232},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/blob/main/CONTRIBUTING.md",[],"CONTRIBUTING"," guide is an excellent place to start.",[12,236,237,238,243,244],{},"Cover image by ",[16,239,242],{"href":240,"rel":241},"https://ljubicapetkovic.com",[],"Ljubica Petkovic",", licensed under ",[16,245,248],{"href":246,"rel":247},"https://creativecommons.org/licenses/by-sa/4.0/",[],"CC BY-SA 4.0",{"title":250,"searchDepth":251,"depth":251,"links":252},"",2,[253,255,256,257,258],{"id":24,"depth":254,"text":25},3,{"id":66,"depth":254,"text":67},{"id":96,"depth":254,"text":97},{"id":145,"depth":254,"text":146},{"id":192,"depth":254,"text":193},"engineering","2021-11-17","Learn about new features that can help you review MRs and interact with GitLab","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666775/Blog/Hero%20Images/cover.jpg",{},"/en-us/blog/vscode-workflow-new-features",{"title":5,"description":261,"ogTitle":5,"ogDescription":261,"noIndex":264,"ogImage":265,"ogUrl":269,"ogSiteName":270,"ogType":271,"canonicalUrls":269},"https://about.gitlab.com/blog/vscode-workflow-new-features","https://about.gitlab.com","article","vscode-workflow-new-features","en-us/blog/vscode-workflow-new-features",[275,276,277],"integrations","tutorial","DevOps","BlogPost","QN1BapPxcgAFOfMxvdZ0oXg4w7irG4OjwqHd9b5tPJw",{"logo":281,"freeTrial":286,"sales":291,"login":296,"items":301,"search":627,"minimal":658,"duo":677,"switchNav":686,"pricingDeployment":697},{"config":282},{"href":283,"dataGaName":284,"dataGaLocation":285},"/","gitlab logo","header",{"text":287,"config":288},"Get free trial",{"href":289,"dataGaName":290,"dataGaLocation":285},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":292,"config":293},"Request a demo",{"href":294,"dataGaName":295,"dataGaLocation":285},"/sales/?contact-topic=request-demo","sales",{"text":297,"config":298},"Sign in",{"href":299,"dataGaName":300,"dataGaLocation":285},"https://gitlab.com/users/sign_in/","sign in",[302,331,431,436,549,605],{"text":303,"config":304,"menu":306},"Platform",{"dataNavLevelOne":305},"platform",{"type":307,"columns":308},"cards",[309,315,323],{"title":303,"description":310,"link":311},"The intelligent orchestration platform for DevSecOps",{"text":312,"config":313},"Explore our Platform",{"href":314,"dataGaName":305,"dataGaLocation":285},"/platform/",{"title":316,"description":317,"link":318},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":319,"config":320},"Meet GitLab Duo",{"href":321,"dataGaName":322,"dataGaLocation":285},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":324,"description":325,"link":326},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":327,"config":328},"Learn more",{"href":329,"dataGaName":330,"dataGaLocation":285},"/why-gitlab/","why gitlab",{"text":332,"left":63,"config":333,"menu":335},"Product",{"dataNavLevelOne":334},"solutions",{"type":336,"link":337,"columns":341,"feature":410},"lists",{"text":338,"config":339},"View all Solutions",{"href":340,"dataGaName":334,"dataGaLocation":285},"/solutions/",[342,366,389],{"title":343,"description":344,"link":345,"items":350},"Automation","CI/CD and automation to accelerate deployment",{"config":346},{"icon":347,"href":348,"dataGaName":349,"dataGaLocation":285},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[351,355,358,362],{"text":352,"config":353},"CI/CD",{"href":354,"dataGaLocation":285,"dataGaName":352},"/solutions/continuous-integration/",{"text":316,"config":356},{"href":321,"dataGaLocation":285,"dataGaName":357},"gitlab duo agent platform - product menu",{"text":359,"config":360},"Source Code Management",{"href":361,"dataGaLocation":285,"dataGaName":359},"/solutions/source-code-management/",{"text":363,"config":364},"Automated Software Delivery",{"href":348,"dataGaLocation":285,"dataGaName":365},"Automated software delivery",{"title":367,"description":368,"link":369,"items":374},"Security","Deliver code faster without compromising security",{"config":370},{"href":371,"dataGaName":372,"dataGaLocation":285,"icon":373},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[375,379,384],{"text":376,"config":377},"Application Security Testing",{"href":371,"dataGaName":378,"dataGaLocation":285},"Application security testing",{"text":380,"config":381},"Software Supply Chain Security",{"href":382,"dataGaLocation":285,"dataGaName":383},"/solutions/supply-chain/","Software supply chain security",{"text":385,"config":386},"Software Compliance",{"href":387,"dataGaName":388,"dataGaLocation":285},"/solutions/software-compliance/","software compliance",{"title":390,"link":391,"items":396},"Measurement",{"config":392},{"icon":393,"href":394,"dataGaName":395,"dataGaLocation":285},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[397,401,405],{"text":398,"config":399},"Visibility & Measurement",{"href":394,"dataGaLocation":285,"dataGaName":400},"Visibility and Measurement",{"text":402,"config":403},"Value Stream Management",{"href":404,"dataGaLocation":285,"dataGaName":402},"/solutions/value-stream-management/",{"text":406,"config":407},"Analytics & Insights",{"href":408,"dataGaLocation":285,"dataGaName":409},"/solutions/analytics-and-insights/","Analytics and insights",{"title":411,"type":336,"items":412},"GitLab for",[413,419,425],{"text":414,"config":415},"Enterprise",{"icon":416,"href":417,"dataGaLocation":285,"dataGaName":418},"Building","/enterprise/","enterprise",{"text":420,"config":421},"Small Business",{"icon":422,"href":423,"dataGaLocation":285,"dataGaName":424},"Work","/small-business/","small business",{"text":426,"config":427},"Public Sector",{"icon":428,"href":429,"dataGaLocation":285,"dataGaName":430},"Organization","/solutions/public-sector/","public sector",{"text":432,"config":433},"Pricing",{"href":434,"dataGaName":435,"dataGaLocation":285,"dataNavLevelOne":435},"/pricing/","pricing",{"text":437,"config":438,"menu":440},"Resources",{"dataNavLevelOne":439},"resources",{"type":336,"link":441,"columns":445,"feature":538},{"text":442,"config":443},"View all resources",{"href":444,"dataGaName":439,"dataGaLocation":285},"/resources/",[446,478,505],{"title":447,"items":448},"Getting started",[449,454,459,464,469,474],{"text":450,"config":451},"Install",{"href":452,"dataGaName":453,"dataGaLocation":285},"/install/","install",{"text":455,"config":456},"Quick start guides",{"href":457,"dataGaName":458,"dataGaLocation":285},"/get-started/","quick setup checklists",{"text":460,"config":461},"Learn",{"href":462,"dataGaLocation":285,"dataGaName":463},"https://university.gitlab.com/","learn",{"text":465,"config":466},"Product documentation",{"href":467,"dataGaName":468,"dataGaLocation":285},"https://docs.gitlab.com/","product documentation",{"text":470,"config":471},"Best practice videos",{"href":472,"dataGaName":473,"dataGaLocation":285},"/getting-started-videos/","best practice videos",{"text":475,"config":476},"Integrations",{"href":477,"dataGaName":275,"dataGaLocation":285},"/integrations/",{"title":479,"items":480},"Discover",[481,486,491,496,500],{"text":482,"config":483},"Customer success stories",{"href":484,"dataGaName":485,"dataGaLocation":285},"/customers/","customer success stories",{"text":487,"config":488},"Blog",{"href":489,"dataGaName":490,"dataGaLocation":285},"/blog/","blog",{"text":492,"config":493},"Demo Hub",{"href":494,"dataGaName":495,"dataGaLocation":285},"/demo-hub/","demo hub",{"text":497,"config":498},"The Source",{"href":499,"dataGaName":490,"dataGaLocation":285},"/the-source/",{"text":501,"config":502},"Remote",{"href":503,"dataGaName":504,"dataGaLocation":285},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":506,"items":507},"Connect",[508,513,518,523,528,533],{"text":509,"config":510},"GitLab Services",{"href":511,"dataGaName":512,"dataGaLocation":285},"/services/","services",{"text":514,"config":515},"Contribute",{"href":516,"dataGaName":517,"dataGaLocation":285},"https://contributors.gitlab.com","contribute",{"text":519,"config":520},"Community",{"href":521,"dataGaName":522,"dataGaLocation":285},"/community/","community",{"text":524,"config":525},"Forum",{"href":526,"dataGaName":527,"dataGaLocation":285},"https://forum.gitlab.com/","forum",{"text":529,"config":530},"Events",{"href":531,"dataGaName":532,"dataGaLocation":285},"/events/","events",{"text":534,"config":535},"Partners",{"href":536,"dataGaName":537,"dataGaLocation":285},"/partners/","partners",{"config":539,"title":542,"text":543,"link":544},{"background":540,"textColor":541},"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":545,"config":546},"Read the latest",{"href":547,"dataGaName":548,"dataGaLocation":285},"/whats-new/","whats new",{"text":550,"config":551,"menu":553},"Company",{"dataNavLevelOne":552},"company",{"type":336,"columns":554},[555],{"items":556},[557,562,568,570,575,580,585,590,595,600],{"text":558,"config":559},"About",{"href":560,"dataGaName":561,"dataGaLocation":285},"/company/","about",{"text":563,"config":564,"footerGa":567},"Jobs",{"href":565,"dataGaName":566,"dataGaLocation":285},"/jobs/","jobs",{"dataGaName":566},{"text":529,"config":569},{"href":531,"dataGaName":532,"dataGaLocation":285},{"text":571,"config":572},"Leadership",{"href":573,"dataGaName":574,"dataGaLocation":285},"/company/team/e-group/","leadership",{"text":576,"config":577},"Handbook",{"href":578,"dataGaName":579,"dataGaLocation":285},"https://handbook.gitlab.com/","handbook",{"text":581,"config":582},"Investor relations",{"href":583,"dataGaName":584,"dataGaLocation":285},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":586,"config":587},"Trust Center",{"href":588,"dataGaName":589,"dataGaLocation":285},"/security/","trust center",{"text":591,"config":592},"AI Transparency Center",{"href":593,"dataGaName":594,"dataGaLocation":285},"/ai-transparency-center/","ai transparency center",{"text":596,"config":597},"Newsletter",{"href":598,"dataGaName":599,"dataGaLocation":285},"/company/contact/#contact-forms","newsletter",{"text":601,"config":602},"Press",{"href":603,"dataGaName":604,"dataGaLocation":285},"/press/","press",{"text":606,"config":607,"menu":608},"Contact us",{"dataNavLevelOne":552},{"type":336,"columns":609},[610],{"items":611},[612,617,622],{"text":613,"config":614},"Talk to sales",{"href":615,"dataGaName":616,"dataGaLocation":285},"/sales/","talk to sales",{"text":618,"config":619},"Support portal",{"href":620,"dataGaName":621,"dataGaLocation":285},"https://support.gitlab.com/hc/en-us","support portal",{"text":623,"config":624},"Customer portal",{"href":625,"dataGaName":626,"dataGaLocation":285},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":628,"login":629,"suggestions":636},"Close",{"text":630,"link":631},"To search repositories and projects, login to",{"text":632,"config":633},"gitlab.com",{"href":299,"dataGaName":634,"dataGaLocation":635},"search login","search",{"text":637,"default":638},"Suggestions",[639,641,645,647,651,655],{"text":316,"config":640},{"href":321,"dataGaName":316,"dataGaLocation":635},{"text":642,"config":643},"Code Suggestions (AI)",{"href":644,"dataGaName":642,"dataGaLocation":635},"/solutions/code-suggestions/",{"text":352,"config":646},{"href":354,"dataGaName":352,"dataGaLocation":635},{"text":648,"config":649},"GitLab on AWS",{"href":650,"dataGaName":648,"dataGaLocation":635},"/partners/technology-partners/aws/",{"text":652,"config":653},"GitLab on Google Cloud",{"href":654,"dataGaName":652,"dataGaLocation":635},"/partners/technology-partners/google-cloud-platform/",{"text":656,"config":657},"Why GitLab?",{"href":329,"dataGaName":656,"dataGaLocation":635},{"freeTrial":659,"mobileIcon":664,"desktopIcon":669,"secondaryButton":672},{"text":660,"config":661},"Start free trial",{"href":662,"dataGaName":290,"dataGaLocation":663},"https://gitlab.com/-/trials/new/","nav",{"altText":665,"config":666},"Gitlab Icon",{"src":667,"dataGaName":668,"dataGaLocation":663},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":665,"config":670},{"src":671,"dataGaName":668,"dataGaLocation":663},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":673,"config":674},"Get Started",{"href":675,"dataGaName":676,"dataGaLocation":663},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":678,"mobileIcon":682,"desktopIcon":684},{"text":679,"config":680},"Learn more about GitLab Duo",{"href":321,"dataGaName":681,"dataGaLocation":663},"gitlab duo",{"altText":665,"config":683},{"src":667,"dataGaName":668,"dataGaLocation":663},{"altText":665,"config":685},{"src":671,"dataGaName":668,"dataGaLocation":663},{"button":687,"mobileIcon":692,"desktopIcon":694},{"text":688,"config":689},"/switch",{"href":690,"dataGaName":691,"dataGaLocation":663},"#contact","switch",{"altText":665,"config":693},{"src":667,"dataGaName":668,"dataGaLocation":663},{"altText":665,"config":695},{"src":696,"dataGaName":668,"dataGaLocation":663},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":698,"mobileIcon":703,"desktopIcon":705},{"text":699,"config":700},"Back to pricing",{"href":434,"dataGaName":701,"dataGaLocation":663,"icon":702},"back to pricing","GoBack",{"altText":665,"config":704},{"src":667,"dataGaName":668,"dataGaLocation":663},{"altText":665,"config":706},{"src":671,"dataGaName":668,"dataGaLocation":663},{"title":708,"titleMobile":709,"button":710,"config":715},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":327,"config":711},{"href":712,"dataGaName":713,"dataGaLocation":714},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":716,"disabled":264},"release",{"data":718},{"text":719,"source":720,"edit":726,"contribute":731,"config":736,"items":741,"minimal":950},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":721,"config":722},"View page source",{"href":723,"dataGaName":724,"dataGaLocation":725},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":727,"config":728},"Edit this page",{"href":729,"dataGaName":730,"dataGaLocation":725},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":732,"config":733},"Please contribute",{"href":734,"dataGaName":735,"dataGaLocation":725},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":737,"facebook":738,"youtube":739,"linkedin":740},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[742,789,842,886,918],{"title":432,"links":743,"subMenu":758},[744,748,753],{"text":745,"config":746},"View plans",{"href":434,"dataGaName":747,"dataGaLocation":725},"view plans",{"text":749,"config":750},"Why Premium?",{"href":751,"dataGaName":752,"dataGaLocation":725},"/pricing/premium/","why premium",{"text":754,"config":755},"Why Ultimate?",{"href":756,"dataGaName":757,"dataGaLocation":725},"/pricing/ultimate/","why ultimate",[759],{"title":760,"links":761},"Contact Us",[762,765,767,769,774,779,784],{"text":763,"config":764},"Contact sales",{"href":615,"dataGaName":295,"dataGaLocation":725},{"text":618,"config":766},{"href":620,"dataGaName":621,"dataGaLocation":725},{"text":623,"config":768},{"href":625,"dataGaName":626,"dataGaLocation":725},{"text":770,"config":771},"Status",{"href":772,"dataGaName":773,"dataGaLocation":725},"https://status.gitlab.com/","status",{"text":775,"config":776},"Terms of use",{"href":777,"dataGaName":778,"dataGaLocation":725},"/terms/","terms of use",{"text":780,"config":781},"Privacy statement",{"href":782,"dataGaName":783,"dataGaLocation":725},"/privacy/","privacy statement",{"text":785,"config":786},"Cookie preferences",{"dataGaName":787,"dataGaLocation":725,"id":788,"isOneTrustButton":63},"cookie preferences","ot-sdk-btn",{"title":332,"links":790,"subMenu":799},[791,795],{"text":792,"config":793},"DevSecOps platform",{"href":314,"dataGaName":794,"dataGaLocation":725},"devsecops platform",{"text":796,"config":797},"AI-Assisted Development",{"href":321,"dataGaName":798,"dataGaLocation":725},"ai-assisted development",[800],{"title":801,"links":802},"Topics",[803,808,813,817,822,827,832,837],{"text":804,"config":805},"CICD",{"href":806,"dataGaName":807,"dataGaLocation":725},"/topics/ci-cd/","cicd",{"text":809,"config":810},"GitOps",{"href":811,"dataGaName":812,"dataGaLocation":725},"/topics/gitops/","gitops",{"text":277,"config":814},{"href":815,"dataGaName":816,"dataGaLocation":725},"/topics/devops/","devops",{"text":818,"config":819},"Version Control",{"href":820,"dataGaName":821,"dataGaLocation":725},"/topics/version-control/","version control",{"text":823,"config":824},"DevSecOps",{"href":825,"dataGaName":826,"dataGaLocation":725},"/topics/devsecops/","devsecops",{"text":828,"config":829},"Cloud Native",{"href":830,"dataGaName":831,"dataGaLocation":725},"/topics/cloud-native/","cloud native",{"text":833,"config":834},"AI for Coding",{"href":835,"dataGaName":836,"dataGaLocation":725},"/topics/devops/ai-for-coding/","ai for coding",{"text":838,"config":839},"Agentic AI",{"href":840,"dataGaName":841,"dataGaLocation":725},"/topics/agentic-ai/","agentic ai",{"title":843,"links":844},"Solutions",[845,847,849,854,858,861,865,868,870,873,876,881],{"text":376,"config":846},{"href":371,"dataGaName":376,"dataGaLocation":725},{"text":365,"config":848},{"href":348,"dataGaName":349,"dataGaLocation":725},{"text":850,"config":851},"Agile development",{"href":852,"dataGaName":853,"dataGaLocation":725},"/solutions/agile-delivery/","agile delivery",{"text":855,"config":856},"SCM",{"href":361,"dataGaName":857,"dataGaLocation":725},"source code management",{"text":804,"config":859},{"href":354,"dataGaName":860,"dataGaLocation":725},"continuous integration & delivery",{"text":862,"config":863},"Value stream management",{"href":404,"dataGaName":864,"dataGaLocation":725},"value stream management",{"text":809,"config":866},{"href":867,"dataGaName":812,"dataGaLocation":725},"/solutions/gitops/",{"text":414,"config":869},{"href":417,"dataGaName":418,"dataGaLocation":725},{"text":871,"config":872},"Small business",{"href":423,"dataGaName":424,"dataGaLocation":725},{"text":874,"config":875},"Public sector",{"href":429,"dataGaName":430,"dataGaLocation":725},{"text":877,"config":878},"Education",{"href":879,"dataGaName":880,"dataGaLocation":725},"/solutions/education/","education",{"text":882,"config":883},"Financial services",{"href":884,"dataGaName":885,"dataGaLocation":725},"/solutions/finance/","financial services",{"title":437,"links":887},[888,890,892,894,897,899,902,904,906,908,910,912,914,916],{"text":450,"config":889},{"href":452,"dataGaName":453,"dataGaLocation":725},{"text":455,"config":891},{"href":457,"dataGaName":458,"dataGaLocation":725},{"text":460,"config":893},{"href":462,"dataGaName":463,"dataGaLocation":725},{"text":465,"config":895},{"href":467,"dataGaName":896,"dataGaLocation":725},"docs",{"text":487,"config":898},{"href":489,"dataGaName":490,"dataGaLocation":725},{"text":900,"config":901},"What's new",{"href":547,"dataGaName":548,"dataGaLocation":725},{"text":482,"config":903},{"href":484,"dataGaName":485,"dataGaLocation":725},{"text":501,"config":905},{"href":503,"dataGaName":504,"dataGaLocation":725},{"text":509,"config":907},{"href":511,"dataGaName":512,"dataGaLocation":725},{"text":514,"config":909},{"href":516,"dataGaName":517,"dataGaLocation":725},{"text":519,"config":911},{"href":521,"dataGaName":522,"dataGaLocation":725},{"text":524,"config":913},{"href":526,"dataGaName":527,"dataGaLocation":725},{"text":529,"config":915},{"href":531,"dataGaName":532,"dataGaLocation":725},{"text":534,"config":917},{"href":536,"dataGaName":537,"dataGaLocation":725},{"title":550,"links":919},[920,922,924,926,928,930,934,939,941,943,945],{"text":558,"config":921},{"href":560,"dataGaName":552,"dataGaLocation":725},{"text":563,"config":923},{"href":565,"dataGaName":566,"dataGaLocation":725},{"text":571,"config":925},{"href":573,"dataGaName":574,"dataGaLocation":725},{"text":576,"config":927},{"href":578,"dataGaName":579,"dataGaLocation":725},{"text":581,"config":929},{"href":583,"dataGaName":584,"dataGaLocation":725},{"text":931,"config":932},"Sustainability",{"href":933,"dataGaName":931,"dataGaLocation":725},"/sustainability/",{"text":935,"config":936},"Diversity, inclusion and belonging (DIB)",{"href":937,"dataGaName":938,"dataGaLocation":725},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":586,"config":940},{"href":588,"dataGaName":589,"dataGaLocation":725},{"text":596,"config":942},{"href":598,"dataGaName":599,"dataGaLocation":725},{"text":601,"config":944},{"href":603,"dataGaName":604,"dataGaLocation":725},{"text":946,"config":947},"Modern Slavery Transparency Statement",{"href":948,"dataGaName":949,"dataGaLocation":725},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":951},[952,955,958],{"text":953,"config":954},"Terms",{"href":777,"dataGaName":778,"dataGaLocation":725},{"text":956,"config":957},"Cookies",{"dataGaName":787,"dataGaLocation":725,"id":788,"isOneTrustButton":63},{"text":959,"config":960},"Privacy",{"href":782,"dataGaName":783,"dataGaLocation":725},[962],{"id":963,"title":7,"body":263,"config":964,"content":966,"description":263,"extension":970,"meta":971,"navigation":63,"path":972,"seo":973,"stem":974,"__hash__":975},"blogAuthors/en-us/blog/authors/tomas-vik.yml",{"template":965},"BlogAuthor",{"name":7,"config":967},{"headshot":968,"ctfId":969},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681785/Blog/Author%20Headshots/viktomas-headshot.jpg","viktomas","yml",{},"/en-us/blog/authors/tomas-vik",{},"en-us/blog/authors/tomas-vik","xMgrgX8trHq0ptpdbhdKrT_9Rld39Gvh3CZcZ3x0MqU",[977,986,994],{"title":978,"description":979,"heroImage":980,"category":259,"date":981,"authors":982,"slug":985,"externalUrl":263},"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",[983,984],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":987,"description":988,"heroImage":989,"category":259,"date":990,"authors":991,"slug":993,"externalUrl":263},"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",[992],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":995,"description":996,"heroImage":997,"category":259,"date":998,"authors":999,"slug":1001,"externalUrl":263},"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",[1000],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1003},[1004,1018,1030,1042],{"id":1005,"categories":1006,"header":1008,"text":1009,"button":1010,"image":1015},"ai-modernization",[1007],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1011,"config":1012},"Get your AI maturity score",{"href":1013,"dataGaName":1014,"dataGaLocation":490},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1016},{"src":1017},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1019,"categories":1020,"header":1022,"text":1009,"button":1023,"image":1027},"devops-modernization",[1021,826],"product","Are you just managing tools or shipping innovation?",{"text":1024,"config":1025},"Get your DevOps maturity score",{"href":1026,"dataGaName":1014,"dataGaLocation":490},"/assessments/devops-modernization-assessment/",{"config":1028},{"src":1029},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1031,"categories":1032,"header":1034,"text":1009,"button":1035,"image":1039},"security-modernization",[1033],"security","Are you trading speed for security?",{"text":1036,"config":1037},"Get your security maturity score",{"href":1038,"dataGaName":1014,"dataGaLocation":490},"/assessments/security-modernization-assessment/",{"config":1040},{"src":1041},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1043,"paths":1044,"header":1047,"text":1048,"button":1049,"image":1054},"github-azure-migration",[1045,1046],"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":1050,"config":1051},"See how GitLab compares to GitHub",{"href":1052,"dataGaName":1053,"dataGaLocation":490},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1055},{"src":1029},{"header":1057,"blurb":1058,"button":1059,"secondaryButton":1064},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1060,"config":1061},"Get your free trial",{"href":1062,"dataGaName":290,"dataGaLocation":1063},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":763,"config":1065},{"href":615,"dataGaName":295,"dataGaLocation":1063},1786803774844]