[{"data":1,"prerenderedAt":1079},["ShallowReactive",2],{"/blog/windows-shared-runner-beta":3,"navigation-en-us":297,"banner-en-us":720,"footer-en-us":730,"blog-post-authors-en-us-Darren Eastman":974,"blog-related-posts-en-us-windows-shared-runner-beta":989,"blog-promotions-en-us":1015,"next-steps-en-us":1069},{"id":4,"title":5,"authors":6,"body":8,"category":277,"date":278,"description":279,"extension":280,"externalUrl":281,"faq":281,"featured":282,"heroImage":283,"meta":284,"navigation":285,"path":286,"seo":287,"slug":291,"stem":292,"tags":293,"template":295,"updatedDate":281,"__hash__":296},"blogPosts/en-us/blog/windows-shared-runner-beta.md","Windows Shared Runners beta now available on GitLab.com",[7],"Darren Eastman",{"type":9,"value":10,"toc":268},"minimark",[11,22,25,30,39,47,51,54,70,74,88,96,100,120,130,153,157,160,207,211,226,229,260],[12,13,14,15,21],"p",{},"GitLab has had support for Windows CI/CD Runners for quite a long time, but if you were doing Windows development, you needed to ",[16,17,20],"a",{"href":18,"rel":19},"https://docs.gitlab.com/runner/install/windows/",[],"install and manage these Runners"," yourself. This works great for customers who prefer to manage their own Runners, but for customers who prefer to use GitLab.com shared Runners managed by the GitLab team, the choice has been limited to Linux.",[12,23,24],{},"Today, we are happy to announce that Windows Shared Runners hosted by GitLab is available in beta. As we are starting to roll out this important service to our community, we invite you to help shape the direction of CI/CD tooling for the Windows ecosystem on GitLab.com.",[26,27,29],"h2",{"id":28},"whats-new","What's new?",[12,31,32,33,38],{},"Now, you can take advantage of a fully-managed, auto-scaling, and secure environment for running your build jobs on Windows virtual machines (VMs). These GitLab-hosted Windows Shared Runners are pre-configured with various software packages such as the Chocolately package manager for Windows, Visual Studio 2019 Build Tools, Microsoft .Net Framework, to name a few. So you have a base set of tooling to start building your Windows applications without needing to set up and install your own self-hosted Windows Runners. You can find a full list of available Windows packages in the package ",[16,34,37],{"href":35,"rel":36},"https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/main/cookbooks/preinstalled-software/README.md",[],"documentation",".",[12,40,41,42,46],{},"With the Windows Shared Runners on GitLab.com, each job runs in a new virtual machine instance that gets deleted after the job is complete, ensuring that your code is 100% isolated and secure. We also take care of maintenance and upgrades to the pre-configured software packages, so you don't have to. Just like with GitLab.com Linux Runners, there’s no requirement to use Shared Runners. If your build tooling configuration or security requirements demand it, you can, as always, ",[16,43,45],{"href":18,"rel":44},[],"install and self-host Windows Runners"," on your infrastructure.",[26,48,50],{"id":49},"technology-overview","Technology Overview",[12,52,53],{},"The following details a few key specifications for the Windows Shared Runners:",[55,56,57,67],"ul",{},[58,59,60,61,66],"li",{},"The Windows Shared Runners use the GitLab ",[16,62,65],{"href":63,"rel":64},"https://docs.gitlab.com/runner/executors/custom/",[],"custom executor"," that we introduced in 12.1.",[58,68,69],{},"A new Windows Shared Runners virtual machine is created for each pipeline job and deleted after the job is completed.",[26,71,73],{"id":72},"pricing","Pricing",[12,75,76,77,81,82,87],{},"To begin with, Windows Shared Runner pricing will be the same as Linux Runners. Usage for Windows Runners will be deducted from your Runner minute pool ",[16,78,80],{"href":79},"/pricing/#gitlab-com","depending on your plan",". You can optionally ",[16,83,86],{"href":84,"rel":85},"https://docs.gitlab.com/subscriptions/manage_users_and_seats/#purchase-additional-ci-minutes",[],"purchase additional runner minutes"," that will be used for both Linux and Windows shared runners.",[12,89,90,91,95],{},"In the future, Windows Shared Runners will likely use separate pricing that is higher than Linux Minutes. Any future ",[16,92,72],{"href":93,"rel":94},"https://gitlab.com/gitlab-org/gitlab/issues/30834",[]," changes will be announced on the GitLab blog.",[26,97,99],{"id":98},"getting-started","Getting started",[12,101,102,103,107,108,111,112,115,116,119],{},"To get started, create a ",[104,105,106],"code",{},".gitlab-ci.yml"," file in your GitLab hosted project's root directory and add the following tags: ",[104,109,110],{},"shared-windows",", ",[104,113,114],{},"windows",", and ",[104,117,118],{},"windows-1809","  as shown in the example configuration file.",[121,122,128],"pre",{"className":123,"code":125,"language":126,"meta":127},[124],"language-text",".shared_windows_runners:\n  tags:\n  - shared-windows\n  - windows\n  - windows-1809\n\nstages:\n  - build\n  - test\n\nbefore_script:\n - Set-Variable -Name \"time\" -Value (date -Format \"%H:%m\")\n - echo ${time}\n - echo \"started by ${GITLAB_USER_NAME}\"\n\nbuild:\n  extends:\n  - .shared_windows_runners\n  stage: build\n  script:\n  - echo \"running scripts in the build job\"\n\ntest:\n  extends:\n  - .shared_windows_runners\n  stage: test\n  script:\n  - echo \"running scripts in the test job\"\n\n","text","",[104,129,125],{"__ignoreMap":127},[12,131,132,133,135,136,140,141,146,147,152],{},"Including the ",[104,134,106],{}," file in the project repository means that any new commits will trigger the execution of your ",[16,137,139],{"href":138},"/topics/ci-cd/","GitLab CI/CD pipeline",".  In this file, you have the option of specifying tags so that a job will only run on GitLab Runners that match the tag specified. For more information on the use of tags, refer to the ",[16,142,145],{"href":143,"rel":144},"https://docs.gitlab.com/ci/yaml/#tags.",[],"tags"," section of the GitLab CI/CD Pipeline Configuration Reference documentation. The ",[16,148,151],{"href":149,"rel":150},"https://docs.gitlab.com/user/gitlab_com/#shared-runners",[],"Shared Runners"," section of the GitLab.com settings documentation page covers more configuration information for the Windows Shared Runners.",[26,154,156],{"id":155},"notable-limitations-and-known-issues","Notable limitations and known issues",[12,158,159],{},"The hosting of Windows Shared Runners is a new service on GitLab.com. This section covers any limitations or known issues that users of the beta should take into consideration when using this service.",[55,161,162,170,173,176,187,204],{},[58,163,164,165,38],{},"The average provisioning time for a new Windows VM is at five minutes. This means that for the beta, you will notice slower build start times on the Windows Shared Runners fleet compared to Linux. In a future release, we will add capabilities to the autoscaler to enable the pre-warming of the virtual machine instances. This will significantly reduce the time it takes to provision a VM on the Windows fleet. Additional details and plans are covered in this ",[16,166,169],{"href":167,"rel":168},"https://gitlab.com/gitlab-org/ci-cd/custom-executor-drivers/autoscaler/issues/32",[],"issue",[58,171,172],{},"Pending queue times will be longer than the queue times on the Linux Shared Runner fleet.",[58,174,175],{},"Since Windows Shared Runners are currently in beta, the performance, uptime, and capabilities will be limited, and so, they are not recommended for production use.",[58,177,178,179,182,183,186],{},"The Windows Shared Runners virtual machine instances do not use the GitLab Docker executor. This means that unlike the Linux Shared Runners, you will not be able to specify ",[104,180,181],{},"image"," and ",[104,184,185],{},"services"," in your pipeline configuration.",[58,188,189,190,195,196,199,200,203],{},"For the beta release, we have included a set of software packages in the base VM image. If your CI job requires additional software that's not included in this ",[16,191,194],{"href":192,"rel":193},"https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/tree/master/cookbooks/preinstalled-software",[],"list",", then you will need to add installation commands to ",[104,197,198],{},"before_script"," or ",[104,201,202],{},"script"," to install the required software. Note: Each job runs on a new VM instance, so the installation of additional software packages needs to be repeated for each job in your pipeline.",[58,205,206],{},"There is the possibility that we introduce breaking changes that will require updates to pipelines that are using the Windows Shared Runner fleet.",[26,208,210],{"id":209},"next-steps","Next steps",[12,212,213,214,219,220,225],{},"We ",[16,215,218],{"href":216,"rel":217},"https://gitlab.com/groups/gitlab-org/-/epics/2162",[],"plan"," to continue to iterate quickly and improve the build environment, Runner, and tooling during the beta period. We invite you to complete this short ",[16,221,224],{"href":222,"rel":223},"https://forms.gle/9qaB2kQcBX93PVax5",[],"form"," because your feedback is critical to helping us prioritize work on the most valuable improvements to the Windows Shared Runners solution.",[12,227,228],{},"To report a bug or request a feature or enhancement, follow these steps:",[55,230,231,239,242,251],{},[58,232,233,234,38],{},"Open an issue in the ",[16,235,238],{"href":236,"rel":237},"https://gitlab.com/gitlab-org/gitlab-runner/issues",[],"GitLab Runner project",[58,240,241],{},"Describe the feature enhancement and, if possible, include any links to examples from your repository.",[58,243,244,245,111,248],{},"Add these labels to the issue: ",[104,246,247],{},"Shared Runners::Windows",[104,249,250],{},"group::runner",[58,252,253,254,259],{},"Tag ",[16,255,258],{"href":256,"rel":257},"https://gitlab.com/DarrenEastman",[],"@DarrenEastman"," on the issue.",[12,261,262,263],{},"Cover photo by William Daigneault on ",[16,264,267],{"href":265,"rel":266},"https://unsplash.com/",[],"Unsplash",{"title":127,"searchDepth":269,"depth":269,"links":270},2,[271,272,273,274,275,276],{"id":28,"depth":269,"text":29},{"id":49,"depth":269,"text":50},{"id":72,"depth":269,"text":73},{"id":98,"depth":269,"text":99},{"id":155,"depth":269,"text":156},{"id":209,"depth":269,"text":210},"engineering","2020-01-21","Scalable Windows VM's for running Windows build jobs on GitLab.com.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681027/Blog/Hero%20Images/windows-shared-beta.jpg",{},true,"/en-us/blog/windows-shared-runner-beta",{"title":5,"description":279,"ogTitle":5,"ogDescription":279,"noIndex":282,"ogImage":283,"ogUrl":288,"ogSiteName":289,"ogType":290,"canonicalUrls":288},"https://about.gitlab.com/blog/windows-shared-runner-beta","https://about.gitlab.com","article","windows-shared-runner-beta","en-us/blog/windows-shared-runner-beta",[294],"CI/CD","BlogPost","Cj3u0gED76UWuBiBbsulbmbdEr-TNl55kgXb_nrGaKU",{"logo":298,"freeTrial":303,"sales":308,"login":313,"items":318,"search":640,"minimal":671,"duo":690,"switchNav":699,"pricingDeployment":710},{"config":299},{"href":300,"dataGaName":301,"dataGaLocation":302},"/","gitlab logo","header",{"text":304,"config":305},"Get free trial",{"href":306,"dataGaName":307,"dataGaLocation":302},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":309,"config":310},"Request a demo",{"href":311,"dataGaName":312,"dataGaLocation":302},"/sales/?contact-topic=request-demo","sales",{"text":314,"config":315},"Sign in",{"href":316,"dataGaName":317,"dataGaLocation":302},"https://gitlab.com/users/sign_in/","sign in",[319,348,447,450,562,618],{"text":320,"config":321,"menu":323},"Platform",{"dataNavLevelOne":322},"platform",{"type":324,"columns":325},"cards",[326,332,340],{"title":320,"description":327,"link":328},"The intelligent orchestration platform for DevSecOps",{"text":329,"config":330},"Explore our Platform",{"href":331,"dataGaName":322,"dataGaLocation":302},"/platform/",{"title":333,"description":334,"link":335},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":336,"config":337},"Meet GitLab Duo",{"href":338,"dataGaName":339,"dataGaLocation":302},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":341,"description":342,"link":343},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":344,"config":345},"Learn more",{"href":346,"dataGaName":347,"dataGaLocation":302},"/why-gitlab/","why gitlab",{"text":349,"left":285,"config":350,"menu":352},"Product",{"dataNavLevelOne":351},"solutions",{"type":353,"link":354,"columns":358,"feature":426},"lists",{"text":355,"config":356},"View all Solutions",{"href":357,"dataGaName":351,"dataGaLocation":302},"/solutions/",[359,382,405],{"title":360,"description":361,"link":362,"items":367},"Automation","CI/CD and automation to accelerate deployment",{"config":363},{"icon":364,"href":365,"dataGaName":366,"dataGaLocation":302},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[368,371,374,378],{"text":294,"config":369},{"href":370,"dataGaLocation":302,"dataGaName":294},"/solutions/continuous-integration/",{"text":333,"config":372},{"href":338,"dataGaLocation":302,"dataGaName":373},"gitlab duo agent platform - product menu",{"text":375,"config":376},"Source Code Management",{"href":377,"dataGaLocation":302,"dataGaName":375},"/solutions/source-code-management/",{"text":379,"config":380},"Automated Software Delivery",{"href":365,"dataGaLocation":302,"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":302,"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":302},"Application security testing",{"text":396,"config":397},"Software Supply Chain Security",{"href":398,"dataGaLocation":302,"dataGaName":399},"/solutions/supply-chain/","Software supply chain security",{"text":401,"config":402},"Software Compliance",{"href":403,"dataGaName":404,"dataGaLocation":302},"/solutions/software-compliance/","software compliance",{"title":406,"link":407,"items":412},"Measurement",{"config":408},{"icon":409,"href":410,"dataGaName":411,"dataGaLocation":302},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[413,417,421],{"text":414,"config":415},"Visibility & Measurement",{"href":410,"dataGaLocation":302,"dataGaName":416},"Visibility and Measurement",{"text":418,"config":419},"Value Stream Management",{"href":420,"dataGaLocation":302,"dataGaName":418},"/solutions/value-stream-management/",{"text":422,"config":423},"Analytics & Insights",{"href":424,"dataGaLocation":302,"dataGaName":425},"/solutions/analytics-and-insights/","Analytics and insights",{"title":427,"type":353,"items":428},"GitLab for",[429,435,441],{"text":430,"config":431},"Enterprise",{"icon":432,"href":433,"dataGaLocation":302,"dataGaName":434},"Building","/enterprise/","enterprise",{"text":436,"config":437},"Small Business",{"icon":438,"href":439,"dataGaLocation":302,"dataGaName":440},"Work","/small-business/","small business",{"text":442,"config":443},"Public Sector",{"icon":444,"href":445,"dataGaLocation":302,"dataGaName":446},"Organization","/solutions/public-sector/","public sector",{"text":73,"config":448},{"href":449,"dataGaName":72,"dataGaLocation":302,"dataNavLevelOne":72},"/pricing/",{"text":451,"config":452,"menu":454},"Resources",{"dataNavLevelOne":453},"resources",{"type":353,"link":455,"columns":459,"feature":551},{"text":456,"config":457},"View all resources",{"href":458,"dataGaName":453,"dataGaLocation":302},"/resources/",[460,492,519],{"title":99,"items":461},[462,467,472,477,482,487],{"text":463,"config":464},"Install",{"href":465,"dataGaName":466,"dataGaLocation":302},"/install/","install",{"text":468,"config":469},"Quick start guides",{"href":470,"dataGaName":471,"dataGaLocation":302},"/get-started/","quick setup checklists",{"text":473,"config":474},"Learn",{"href":475,"dataGaLocation":302,"dataGaName":476},"https://university.gitlab.com/","learn",{"text":478,"config":479},"Product documentation",{"href":480,"dataGaName":481,"dataGaLocation":302},"https://docs.gitlab.com/","product documentation",{"text":483,"config":484},"Best practice videos",{"href":485,"dataGaName":486,"dataGaLocation":302},"/getting-started-videos/","best practice videos",{"text":488,"config":489},"Integrations",{"href":490,"dataGaName":491,"dataGaLocation":302},"/integrations/","integrations",{"title":493,"items":494},"Discover",[495,500,505,510,514],{"text":496,"config":497},"Customer success stories",{"href":498,"dataGaName":499,"dataGaLocation":302},"/customers/","customer success stories",{"text":501,"config":502},"Blog",{"href":503,"dataGaName":504,"dataGaLocation":302},"/blog/","blog",{"text":506,"config":507},"Demo Hub",{"href":508,"dataGaName":509,"dataGaLocation":302},"/demo-hub/","demo hub",{"text":511,"config":512},"The Source",{"href":513,"dataGaName":504,"dataGaLocation":302},"/the-source/",{"text":515,"config":516},"Remote",{"href":517,"dataGaName":518,"dataGaLocation":302},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":520,"items":521},"Connect",[522,526,531,536,541,546],{"text":523,"config":524},"GitLab Services",{"href":525,"dataGaName":185,"dataGaLocation":302},"/services/",{"text":527,"config":528},"Contribute",{"href":529,"dataGaName":530,"dataGaLocation":302},"https://contributors.gitlab.com","contribute",{"text":532,"config":533},"Community",{"href":534,"dataGaName":535,"dataGaLocation":302},"/community/","community",{"text":537,"config":538},"Forum",{"href":539,"dataGaName":540,"dataGaLocation":302},"https://forum.gitlab.com/","forum",{"text":542,"config":543},"Events",{"href":544,"dataGaName":545,"dataGaLocation":302},"/events/","events",{"text":547,"config":548},"Partners",{"href":549,"dataGaName":550,"dataGaLocation":302},"/partners/","partners",{"config":552,"title":555,"text":556,"link":557},{"background":553,"textColor":554},"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":558,"config":559},"Read the latest",{"href":560,"dataGaName":561,"dataGaLocation":302},"/whats-new/","whats new",{"text":563,"config":564,"menu":566},"Company",{"dataNavLevelOne":565},"company",{"type":353,"columns":567},[568],{"items":569},[570,575,581,583,588,593,598,603,608,613],{"text":571,"config":572},"About",{"href":573,"dataGaName":574,"dataGaLocation":302},"/company/","about",{"text":576,"config":577,"footerGa":580},"Jobs",{"href":578,"dataGaName":579,"dataGaLocation":302},"/jobs/","jobs",{"dataGaName":579},{"text":542,"config":582},{"href":544,"dataGaName":545,"dataGaLocation":302},{"text":584,"config":585},"Leadership",{"href":586,"dataGaName":587,"dataGaLocation":302},"/company/team/e-group/","leadership",{"text":589,"config":590},"Handbook",{"href":591,"dataGaName":592,"dataGaLocation":302},"https://handbook.gitlab.com/","handbook",{"text":594,"config":595},"Investor relations",{"href":596,"dataGaName":597,"dataGaLocation":302},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":599,"config":600},"Trust Center",{"href":601,"dataGaName":602,"dataGaLocation":302},"/security/","trust center",{"text":604,"config":605},"AI Transparency Center",{"href":606,"dataGaName":607,"dataGaLocation":302},"/ai-transparency-center/","ai transparency center",{"text":609,"config":610},"Newsletter",{"href":611,"dataGaName":612,"dataGaLocation":302},"/company/contact/#contact-forms","newsletter",{"text":614,"config":615},"Press",{"href":616,"dataGaName":617,"dataGaLocation":302},"/press/","press",{"text":619,"config":620,"menu":621},"Contact us",{"dataNavLevelOne":565},{"type":353,"columns":622},[623],{"items":624},[625,630,635],{"text":626,"config":627},"Talk to sales",{"href":628,"dataGaName":629,"dataGaLocation":302},"/sales/","talk to sales",{"text":631,"config":632},"Support portal",{"href":633,"dataGaName":634,"dataGaLocation":302},"https://support.gitlab.com/hc/en-us","support portal",{"text":636,"config":637},"Customer portal",{"href":638,"dataGaName":639,"dataGaLocation":302},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":641,"login":642,"suggestions":649},"Close",{"text":643,"link":644},"To search repositories and projects, login to",{"text":645,"config":646},"gitlab.com",{"href":316,"dataGaName":647,"dataGaLocation":648},"search login","search",{"text":650,"default":651},"Suggestions",[652,654,658,660,664,668],{"text":333,"config":653},{"href":338,"dataGaName":333,"dataGaLocation":648},{"text":655,"config":656},"Code Suggestions (AI)",{"href":657,"dataGaName":655,"dataGaLocation":648},"/solutions/code-suggestions/",{"text":294,"config":659},{"href":370,"dataGaName":294,"dataGaLocation":648},{"text":661,"config":662},"GitLab on AWS",{"href":663,"dataGaName":661,"dataGaLocation":648},"/partners/technology-partners/aws/",{"text":665,"config":666},"GitLab on Google Cloud",{"href":667,"dataGaName":665,"dataGaLocation":648},"/partners/technology-partners/google-cloud-platform/",{"text":669,"config":670},"Why GitLab?",{"href":346,"dataGaName":669,"dataGaLocation":648},{"freeTrial":672,"mobileIcon":677,"desktopIcon":682,"secondaryButton":685},{"text":673,"config":674},"Start free trial",{"href":675,"dataGaName":307,"dataGaLocation":676},"https://gitlab.com/-/trials/new/","nav",{"altText":678,"config":679},"Gitlab Icon",{"src":680,"dataGaName":681,"dataGaLocation":676},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":678,"config":683},{"src":684,"dataGaName":681,"dataGaLocation":676},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":686,"config":687},"Get Started",{"href":688,"dataGaName":689,"dataGaLocation":676},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":691,"mobileIcon":695,"desktopIcon":697},{"text":692,"config":693},"Learn more about GitLab Duo",{"href":338,"dataGaName":694,"dataGaLocation":676},"gitlab duo",{"altText":678,"config":696},{"src":680,"dataGaName":681,"dataGaLocation":676},{"altText":678,"config":698},{"src":684,"dataGaName":681,"dataGaLocation":676},{"button":700,"mobileIcon":705,"desktopIcon":707},{"text":701,"config":702},"/switch",{"href":703,"dataGaName":704,"dataGaLocation":676},"#contact","switch",{"altText":678,"config":706},{"src":680,"dataGaName":681,"dataGaLocation":676},{"altText":678,"config":708},{"src":709,"dataGaName":681,"dataGaLocation":676},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":711,"mobileIcon":716,"desktopIcon":718},{"text":712,"config":713},"Back to pricing",{"href":449,"dataGaName":714,"dataGaLocation":676,"icon":715},"back to pricing","GoBack",{"altText":678,"config":717},{"src":680,"dataGaName":681,"dataGaLocation":676},{"altText":678,"config":719},{"src":684,"dataGaName":681,"dataGaLocation":676},{"title":721,"titleMobile":722,"button":723,"config":728},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":344,"config":724},{"href":725,"dataGaName":726,"dataGaLocation":727},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":729,"disabled":282},"release",{"data":731},{"text":732,"source":733,"edit":739,"contribute":744,"config":749,"items":754,"minimal":963},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":734,"config":735},"View page source",{"href":736,"dataGaName":737,"dataGaLocation":738},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":740,"config":741},"Edit this page",{"href":742,"dataGaName":743,"dataGaLocation":738},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":745,"config":746},"Please contribute",{"href":747,"dataGaName":748,"dataGaLocation":738},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":750,"facebook":751,"youtube":752,"linkedin":753},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[755,802,855,899,931],{"title":73,"links":756,"subMenu":771},[757,761,766],{"text":758,"config":759},"View plans",{"href":449,"dataGaName":760,"dataGaLocation":738},"view plans",{"text":762,"config":763},"Why Premium?",{"href":764,"dataGaName":765,"dataGaLocation":738},"/pricing/premium/","why premium",{"text":767,"config":768},"Why Ultimate?",{"href":769,"dataGaName":770,"dataGaLocation":738},"/pricing/ultimate/","why ultimate",[772],{"title":773,"links":774},"Contact Us",[775,778,780,782,787,792,797],{"text":776,"config":777},"Contact sales",{"href":628,"dataGaName":312,"dataGaLocation":738},{"text":631,"config":779},{"href":633,"dataGaName":634,"dataGaLocation":738},{"text":636,"config":781},{"href":638,"dataGaName":639,"dataGaLocation":738},{"text":783,"config":784},"Status",{"href":785,"dataGaName":786,"dataGaLocation":738},"https://status.gitlab.com/","status",{"text":788,"config":789},"Terms of use",{"href":790,"dataGaName":791,"dataGaLocation":738},"/terms/","terms of use",{"text":793,"config":794},"Privacy statement",{"href":795,"dataGaName":796,"dataGaLocation":738},"/privacy/","privacy statement",{"text":798,"config":799},"Cookie preferences",{"dataGaName":800,"dataGaLocation":738,"id":801,"isOneTrustButton":285},"cookie preferences","ot-sdk-btn",{"title":349,"links":803,"subMenu":812},[804,808],{"text":805,"config":806},"DevSecOps platform",{"href":331,"dataGaName":807,"dataGaLocation":738},"devsecops platform",{"text":809,"config":810},"AI-Assisted Development",{"href":338,"dataGaName":811,"dataGaLocation":738},"ai-assisted development",[813],{"title":814,"links":815},"Topics",[816,820,825,830,835,840,845,850],{"text":817,"config":818},"CICD",{"href":138,"dataGaName":819,"dataGaLocation":738},"cicd",{"text":821,"config":822},"GitOps",{"href":823,"dataGaName":824,"dataGaLocation":738},"/topics/gitops/","gitops",{"text":826,"config":827},"DevOps",{"href":828,"dataGaName":829,"dataGaLocation":738},"/topics/devops/","devops",{"text":831,"config":832},"Version Control",{"href":833,"dataGaName":834,"dataGaLocation":738},"/topics/version-control/","version control",{"text":836,"config":837},"DevSecOps",{"href":838,"dataGaName":839,"dataGaLocation":738},"/topics/devsecops/","devsecops",{"text":841,"config":842},"Cloud Native",{"href":843,"dataGaName":844,"dataGaLocation":738},"/topics/cloud-native/","cloud native",{"text":846,"config":847},"AI for Coding",{"href":848,"dataGaName":849,"dataGaLocation":738},"/topics/devops/ai-for-coding/","ai for coding",{"text":851,"config":852},"Agentic AI",{"href":853,"dataGaName":854,"dataGaLocation":738},"/topics/agentic-ai/","agentic ai",{"title":856,"links":857},"Solutions",[858,860,862,867,871,874,878,881,883,886,889,894],{"text":392,"config":859},{"href":387,"dataGaName":392,"dataGaLocation":738},{"text":381,"config":861},{"href":365,"dataGaName":366,"dataGaLocation":738},{"text":863,"config":864},"Agile development",{"href":865,"dataGaName":866,"dataGaLocation":738},"/solutions/agile-delivery/","agile delivery",{"text":868,"config":869},"SCM",{"href":377,"dataGaName":870,"dataGaLocation":738},"source code management",{"text":817,"config":872},{"href":370,"dataGaName":873,"dataGaLocation":738},"continuous integration & delivery",{"text":875,"config":876},"Value stream management",{"href":420,"dataGaName":877,"dataGaLocation":738},"value stream management",{"text":821,"config":879},{"href":880,"dataGaName":824,"dataGaLocation":738},"/solutions/gitops/",{"text":430,"config":882},{"href":433,"dataGaName":434,"dataGaLocation":738},{"text":884,"config":885},"Small business",{"href":439,"dataGaName":440,"dataGaLocation":738},{"text":887,"config":888},"Public sector",{"href":445,"dataGaName":446,"dataGaLocation":738},{"text":890,"config":891},"Education",{"href":892,"dataGaName":893,"dataGaLocation":738},"/solutions/education/","education",{"text":895,"config":896},"Financial services",{"href":897,"dataGaName":898,"dataGaLocation":738},"/solutions/finance/","financial services",{"title":451,"links":900},[901,903,905,907,910,912,915,917,919,921,923,925,927,929],{"text":463,"config":902},{"href":465,"dataGaName":466,"dataGaLocation":738},{"text":468,"config":904},{"href":470,"dataGaName":471,"dataGaLocation":738},{"text":473,"config":906},{"href":475,"dataGaName":476,"dataGaLocation":738},{"text":478,"config":908},{"href":480,"dataGaName":909,"dataGaLocation":738},"docs",{"text":501,"config":911},{"href":503,"dataGaName":504,"dataGaLocation":738},{"text":913,"config":914},"What's new",{"href":560,"dataGaName":561,"dataGaLocation":738},{"text":496,"config":916},{"href":498,"dataGaName":499,"dataGaLocation":738},{"text":515,"config":918},{"href":517,"dataGaName":518,"dataGaLocation":738},{"text":523,"config":920},{"href":525,"dataGaName":185,"dataGaLocation":738},{"text":527,"config":922},{"href":529,"dataGaName":530,"dataGaLocation":738},{"text":532,"config":924},{"href":534,"dataGaName":535,"dataGaLocation":738},{"text":537,"config":926},{"href":539,"dataGaName":540,"dataGaLocation":738},{"text":542,"config":928},{"href":544,"dataGaName":545,"dataGaLocation":738},{"text":547,"config":930},{"href":549,"dataGaName":550,"dataGaLocation":738},{"title":563,"links":932},[933,935,937,939,941,943,947,952,954,956,958],{"text":571,"config":934},{"href":573,"dataGaName":565,"dataGaLocation":738},{"text":576,"config":936},{"href":578,"dataGaName":579,"dataGaLocation":738},{"text":584,"config":938},{"href":586,"dataGaName":587,"dataGaLocation":738},{"text":589,"config":940},{"href":591,"dataGaName":592,"dataGaLocation":738},{"text":594,"config":942},{"href":596,"dataGaName":597,"dataGaLocation":738},{"text":944,"config":945},"Sustainability",{"href":946,"dataGaName":944,"dataGaLocation":738},"/sustainability/",{"text":948,"config":949},"Diversity, inclusion and belonging (DIB)",{"href":950,"dataGaName":951,"dataGaLocation":738},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":599,"config":953},{"href":601,"dataGaName":602,"dataGaLocation":738},{"text":609,"config":955},{"href":611,"dataGaName":612,"dataGaLocation":738},{"text":614,"config":957},{"href":616,"dataGaName":617,"dataGaLocation":738},{"text":959,"config":960},"Modern Slavery Transparency Statement",{"href":961,"dataGaName":962,"dataGaLocation":738},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":964},[965,968,971],{"text":966,"config":967},"Terms",{"href":790,"dataGaName":791,"dataGaLocation":738},{"text":969,"config":970},"Cookies",{"dataGaName":800,"dataGaLocation":738,"id":801,"isOneTrustButton":285},{"text":972,"config":973},"Privacy",{"href":795,"dataGaName":796,"dataGaLocation":738},[975],{"id":976,"title":7,"body":281,"config":977,"content":979,"description":281,"extension":983,"meta":984,"navigation":285,"path":985,"seo":986,"stem":987,"__hash__":988},"blogAuthors/en-us/blog/authors/darren-eastman.yml",{"template":978},"BlogAuthor",{"name":7,"config":980},{"headshot":981,"ctfId":982},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665148/Blog/Author%20Headshots/darren_eastman.png","DarrenEastman","yml",{},"/en-us/blog/authors/darren-eastman",{},"en-us/blog/authors/darren-eastman","iXnMUFNVF56JYxVUygLV2-q6FjfdZM8UekM1NED6tu0",[990,999,1007],{"title":991,"description":992,"heroImage":993,"category":277,"date":994,"authors":995,"slug":998,"externalUrl":281},"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",[996,997],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1000,"description":1001,"heroImage":1002,"category":277,"date":1003,"authors":1004,"slug":1006,"externalUrl":281},"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",[1005],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1008,"description":1009,"heroImage":1010,"category":277,"date":1011,"authors":1012,"slug":1014,"externalUrl":281},"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",[1013],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1016},[1017,1031,1043,1055],{"id":1018,"categories":1019,"header":1021,"text":1022,"button":1023,"image":1028},"ai-modernization",[1020],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1024,"config":1025},"Get your AI maturity score",{"href":1026,"dataGaName":1027,"dataGaLocation":504},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1029},{"src":1030},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1032,"categories":1033,"header":1035,"text":1022,"button":1036,"image":1040},"devops-modernization",[1034,839],"product","Are you just managing tools or shipping innovation?",{"text":1037,"config":1038},"Get your DevOps maturity score",{"href":1039,"dataGaName":1027,"dataGaLocation":504},"/assessments/devops-modernization-assessment/",{"config":1041},{"src":1042},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1044,"categories":1045,"header":1047,"text":1022,"button":1048,"image":1052},"security-modernization",[1046],"security","Are you trading speed for security?",{"text":1049,"config":1050},"Get your security maturity score",{"href":1051,"dataGaName":1027,"dataGaLocation":504},"/assessments/security-modernization-assessment/",{"config":1053},{"src":1054},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1056,"paths":1057,"header":1060,"text":1061,"button":1062,"image":1067},"github-azure-migration",[1058,1059],"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":1063,"config":1064},"See how GitLab compares to GitHub",{"href":1065,"dataGaName":1066,"dataGaLocation":504},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1068},{"src":1042},{"header":1070,"blurb":1071,"button":1072,"secondaryButton":1077},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1073,"config":1074},"Get your free trial",{"href":1075,"dataGaName":307,"dataGaLocation":1076},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":776,"config":1078},{"href":628,"dataGaName":312,"dataGaLocation":1076},1786803777097]