[{"data":1,"prerenderedAt":958},["ShallowReactive",2],{"/blog/introducing-autoscaling-gitlab-runners-on-aws-fargate":3,"navigation-en-us":172,"banner-en-us":599,"footer-en-us":609,"blog-post-authors-en-us-Darren Eastman":853,"blog-related-posts-en-us-introducing-autoscaling-gitlab-runners-on-aws-fargate":868,"blog-promotions-en-us":894,"next-steps-en-us":948},{"id":4,"title":5,"authors":6,"body":8,"category":150,"date":151,"description":152,"extension":153,"externalUrl":154,"faq":154,"featured":155,"heroImage":156,"meta":157,"navigation":158,"path":159,"seo":160,"slug":164,"stem":165,"tags":166,"template":170,"updatedDate":154,"__hash__":171},"blogPosts/en-us/blog/introducing-autoscaling-gitlab-runners-on-aws-fargate.md","How autoscaling GitLab CI works on AWS Fargate",[7],"Darren Eastman",{"type":9,"value":10,"toc":143},"minimark",[11,21,30,39,46,51,71,78,94,98,101,107,111,114,118,126,129],[12,13,14,15,20],"p",{},"Autoscaling GitLab Runner is a unique value proposition for teams that run their self-managed build agents on cloud-hosted virtual machines. As the number of ",[16,17,19],"a",{"href":18},"/topics/ci-cd/","CI/CD jobs"," run over a specific period can fluctuate, teams must have build agent auto-scaling solutions in place that are easy to set up, configure, and cost-efficient.",[12,22,23,24,29],{},"GitLab Runner ",[16,25,28],{"href":26,"rel":27},"https://docs.gitlab.com/runner/configuration/autoscale/",[],"autoscaling"," responds to demand by provisioning new cloud-hosted virtual machines with Docker and GitLab Runner. When demand is lower, any additional virtual machines above the configured minimum size are de-provisioned. However, while this model of automatically provisioning and terminating virtual machine instances continues to be useful for a vast plethora of use cases, customers also want to take advantage of the capabilities of cloud container orchestration solutions for executing GitLab CI/CD jobs. For some, adopting GitLab's Kubernetes integration for AWS Elastic Kubernetes Service and Google Kubernetes Engine has allowed them to take advantage of the benefits of containerized pipelines. For others, AWS Fargate has proven to be a compelling container orchestration solution, as it simplifies the process of launching and managing containers on AWS services ECS and EKS.",[12,31,32,33,38],{},"We are pleased to announce that as of the ",[16,34,37],{"href":35,"rel":36},"https://docs.gitlab.com/releases/",[],"12.10"," release, you can now auto-scale GitLab CI jobs on AWS Fargate managed containers.",[12,40,41],{},[42,43],"img",{"alt":44,"src":45},"","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397977/blog/Content%20Images/autoscaling-runners-ci-ecs-fargate.png",[47,48,50],"h2",{"id":49},"so-how-does-it-work","So how does it work?",[12,52,53,54,59,60,65,66,70],{},"In GitLab 12.1, we released the GitLab Runner ",[16,55,58],{"href":56,"rel":57},"https://docs.gitlab.com/runner/executors/custom/",[],"Custom executor",". With the custom executor, you can create drivers for GitLab Runner to execute a job on technology or a platform that is not supported natively. To enable executing GitLab CI jobs on AWS Fargate, we developed a ",[16,61,64],{"href":62,"rel":63},"https://gitlab.com/gitlab-org/ci-cd/custom-executor-drivers/fargate",[],"GitLab AWS Fargate driver"," for the Custom executor.  This driver uses the AWS Fargate ",[67,68,69],"code",{},"run-task"," action to schedule a new task. A task in ECS is an instance of a task definition that runs the container or containers defined within the task definition. In this containerized solution for CI builds, the pipeline job executes on a container built from an image that must include the tools that you need to build your application.",[12,72,73,74,77],{},"The AWS Fargate Driver works in conjunction with GitLab Runner, a lightweight executable that executes pipeline jobs. Similar to the GitLab Runner executable, a ",[67,75,76],{},"config.toml"," file is the file used to pass configuration parameters to the driver. The AWS Fargate driver divides the CI job into the following stages.",[79,80,81,85,88,91],"ol",{},[82,83,84],"li",{},"Config",[82,86,87],{},"Prepare",[82,89,90],{},"Run",[82,92,93],{},"Cleanup",[47,95,97],{"id":96},"ssh-connectivity","SSH connectivity",[12,99,100],{},"For the Fargate Driver to execute build commands in the container that is running as a task on ECS, the driver needs to be able to SSH into the container. So we have built additional capabilities into the driver to allow for a SSH connection between the GitLab Runner + AWS Fargate driver and the CI build container.",[12,102,103],{},[42,104],{"alt":105,"src":106},"Fargate Driver SSH Connectivity","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398971/blog/Content%20Images/runner_fargate_driver_ssh.png",[47,108,110],{"id":109},"limitations","Limitations",[12,112,113],{},"AWS Fargate does not support running containers in privileged mode. For example, Docker-in-Docker (DinD), which enables the building and running of container images inside of containers, does not work on Fargate. In keeping with one of GitLab's core values, iteration, we will continue to iterate on solutions for this problem. So stay tuned for future enhancements.",[47,115,117],{"id":116},"getting-started","Getting Started",[12,119,120,121],{},"To get started, review our detailed ",[16,122,125],{"href":123,"rel":124},"https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate/",[],"configuration and setup guide.",[12,127,128],{},"With the release of the GitLab Runner AWS Fargate driver, we provide the most diverse set of options in the industry for executing CI pipeline jobs in an autoscaling configuration. These options now include cloud-delivered virtual machines, AWS EC2, Google GCP, Azure Compute, and container orchestration platforms: AWS EKS, AWS ECS + Fargate, and Google Kubernetes. Our long term goal is to provide the best and most comprehensive solution for executing CI jobs at scale on the major cloud platforms.",[12,130,131,132,137,138],{},"Cover image by ",[16,133,136],{"href":134,"rel":135},"https://unsplash.com/@lin_alessio",[],"Alessio Lin"," on ",[16,139,142],{"href":140,"rel":141},"https://www.unsplash.com",[],"Unsplash",{"title":44,"searchDepth":144,"depth":144,"links":145},2,[146,147,148,149],{"id":49,"depth":144,"text":50},{"id":96,"depth":144,"text":97},{"id":109,"depth":144,"text":110},{"id":116,"depth":144,"text":117},"engineering","2020-05-11","Run your CI jobs as AWS Fargate tasks with GitLab Runner and the Fargate Driver","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681285/Blog/Hero%20Images/runner-autoscale-fargate-blog-cover.jpg",{},true,"/en-us/blog/introducing-autoscaling-gitlab-runners-on-aws-fargate",{"title":5,"description":152,"ogTitle":5,"ogDescription":152,"noIndex":155,"ogImage":156,"ogUrl":161,"ogSiteName":162,"ogType":163,"canonicalUrls":161},"https://about.gitlab.com/blog/introducing-autoscaling-gitlab-runners-on-aws-fargate","https://about.gitlab.com","article","introducing-autoscaling-gitlab-runners-on-aws-fargate","en-us/blog/introducing-autoscaling-gitlab-runners-on-aws-fargate",[167,168,169],"CI/CD","features","performance","BlogPost","NQE4u72Tbb1j5XiAPYqlMlb7O53s1uFPC0CMRL0Lgs4",{"logo":173,"freeTrial":178,"sales":183,"login":188,"items":193,"search":519,"minimal":550,"duo":569,"switchNav":578,"pricingDeployment":589},{"config":174},{"href":175,"dataGaName":176,"dataGaLocation":177},"/","gitlab logo","header",{"text":179,"config":180},"Get free trial",{"href":181,"dataGaName":182,"dataGaLocation":177},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":184,"config":185},"Request a demo",{"href":186,"dataGaName":187,"dataGaLocation":177},"/sales/?contact-topic=request-demo","sales",{"text":189,"config":190},"Sign in",{"href":191,"dataGaName":192,"dataGaLocation":177},"https://gitlab.com/users/sign_in/","sign in",[194,223,322,327,441,497],{"text":195,"config":196,"menu":198},"Platform",{"dataNavLevelOne":197},"platform",{"type":199,"columns":200},"cards",[201,207,215],{"title":195,"description":202,"link":203},"The intelligent orchestration platform for DevSecOps",{"text":204,"config":205},"Explore our Platform",{"href":206,"dataGaName":197,"dataGaLocation":177},"/platform/",{"title":208,"description":209,"link":210},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":211,"config":212},"Meet GitLab Duo",{"href":213,"dataGaName":214,"dataGaLocation":177},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":216,"description":217,"link":218},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":219,"config":220},"Learn more",{"href":221,"dataGaName":222,"dataGaLocation":177},"/why-gitlab/","why gitlab",{"text":224,"left":158,"config":225,"menu":227},"Product",{"dataNavLevelOne":226},"solutions",{"type":228,"link":229,"columns":233,"feature":301},"lists",{"text":230,"config":231},"View all Solutions",{"href":232,"dataGaName":226,"dataGaLocation":177},"/solutions/",[234,257,280],{"title":235,"description":236,"link":237,"items":242},"Automation","CI/CD and automation to accelerate deployment",{"config":238},{"icon":239,"href":240,"dataGaName":241,"dataGaLocation":177},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[243,246,249,253],{"text":167,"config":244},{"href":245,"dataGaLocation":177,"dataGaName":167},"/solutions/continuous-integration/",{"text":208,"config":247},{"href":213,"dataGaLocation":177,"dataGaName":248},"gitlab duo agent platform - product menu",{"text":250,"config":251},"Source Code Management",{"href":252,"dataGaLocation":177,"dataGaName":250},"/solutions/source-code-management/",{"text":254,"config":255},"Automated Software Delivery",{"href":240,"dataGaLocation":177,"dataGaName":256},"Automated software delivery",{"title":258,"description":259,"link":260,"items":265},"Security","Deliver code faster without compromising security",{"config":261},{"href":262,"dataGaName":263,"dataGaLocation":177,"icon":264},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[266,270,275],{"text":267,"config":268},"Application Security Testing",{"href":262,"dataGaName":269,"dataGaLocation":177},"Application security testing",{"text":271,"config":272},"Software Supply Chain Security",{"href":273,"dataGaLocation":177,"dataGaName":274},"/solutions/supply-chain/","Software supply chain security",{"text":276,"config":277},"Software Compliance",{"href":278,"dataGaName":279,"dataGaLocation":177},"/solutions/software-compliance/","software compliance",{"title":281,"link":282,"items":287},"Measurement",{"config":283},{"icon":284,"href":285,"dataGaName":286,"dataGaLocation":177},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[288,292,296],{"text":289,"config":290},"Visibility & Measurement",{"href":285,"dataGaLocation":177,"dataGaName":291},"Visibility and Measurement",{"text":293,"config":294},"Value Stream Management",{"href":295,"dataGaLocation":177,"dataGaName":293},"/solutions/value-stream-management/",{"text":297,"config":298},"Analytics & Insights",{"href":299,"dataGaLocation":177,"dataGaName":300},"/solutions/analytics-and-insights/","Analytics and insights",{"title":302,"type":228,"items":303},"GitLab for",[304,310,316],{"text":305,"config":306},"Enterprise",{"icon":307,"href":308,"dataGaLocation":177,"dataGaName":309},"Building","/enterprise/","enterprise",{"text":311,"config":312},"Small Business",{"icon":313,"href":314,"dataGaLocation":177,"dataGaName":315},"Work","/small-business/","small business",{"text":317,"config":318},"Public Sector",{"icon":319,"href":320,"dataGaLocation":177,"dataGaName":321},"Organization","/solutions/public-sector/","public sector",{"text":323,"config":324},"Pricing",{"href":325,"dataGaName":326,"dataGaLocation":177,"dataNavLevelOne":326},"/pricing/","pricing",{"text":328,"config":329,"menu":331},"Resources",{"dataNavLevelOne":330},"resources",{"type":228,"link":332,"columns":336,"feature":430},{"text":333,"config":334},"View all resources",{"href":335,"dataGaName":330,"dataGaLocation":177},"/resources/",[337,370,397],{"title":338,"items":339},"Getting started",[340,345,350,355,360,365],{"text":341,"config":342},"Install",{"href":343,"dataGaName":344,"dataGaLocation":177},"/install/","install",{"text":346,"config":347},"Quick start guides",{"href":348,"dataGaName":349,"dataGaLocation":177},"/get-started/","quick setup checklists",{"text":351,"config":352},"Learn",{"href":353,"dataGaLocation":177,"dataGaName":354},"https://university.gitlab.com/","learn",{"text":356,"config":357},"Product documentation",{"href":358,"dataGaName":359,"dataGaLocation":177},"https://docs.gitlab.com/","product documentation",{"text":361,"config":362},"Best practice videos",{"href":363,"dataGaName":364,"dataGaLocation":177},"/getting-started-videos/","best practice videos",{"text":366,"config":367},"Integrations",{"href":368,"dataGaName":369,"dataGaLocation":177},"/integrations/","integrations",{"title":371,"items":372},"Discover",[373,378,383,388,392],{"text":374,"config":375},"Customer success stories",{"href":376,"dataGaName":377,"dataGaLocation":177},"/customers/","customer success stories",{"text":379,"config":380},"Blog",{"href":381,"dataGaName":382,"dataGaLocation":177},"/blog/","blog",{"text":384,"config":385},"Demo Hub",{"href":386,"dataGaName":387,"dataGaLocation":177},"/demo-hub/","demo hub",{"text":389,"config":390},"The Source",{"href":391,"dataGaName":382,"dataGaLocation":177},"/the-source/",{"text":393,"config":394},"Remote",{"href":395,"dataGaName":396,"dataGaLocation":177},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":398,"items":399},"Connect",[400,405,410,415,420,425],{"text":401,"config":402},"GitLab Services",{"href":403,"dataGaName":404,"dataGaLocation":177},"/services/","services",{"text":406,"config":407},"Contribute",{"href":408,"dataGaName":409,"dataGaLocation":177},"https://contributors.gitlab.com","contribute",{"text":411,"config":412},"Community",{"href":413,"dataGaName":414,"dataGaLocation":177},"/community/","community",{"text":416,"config":417},"Forum",{"href":418,"dataGaName":419,"dataGaLocation":177},"https://forum.gitlab.com/","forum",{"text":421,"config":422},"Events",{"href":423,"dataGaName":424,"dataGaLocation":177},"/events/","events",{"text":426,"config":427},"Partners",{"href":428,"dataGaName":429,"dataGaLocation":177},"/partners/","partners",{"config":431,"title":434,"text":435,"link":436},{"background":432,"textColor":433},"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":437,"config":438},"Read the latest",{"href":439,"dataGaName":440,"dataGaLocation":177},"/whats-new/","whats new",{"text":442,"config":443,"menu":445},"Company",{"dataNavLevelOne":444},"company",{"type":228,"columns":446},[447],{"items":448},[449,454,460,462,467,472,477,482,487,492],{"text":450,"config":451},"About",{"href":452,"dataGaName":453,"dataGaLocation":177},"/company/","about",{"text":455,"config":456,"footerGa":459},"Jobs",{"href":457,"dataGaName":458,"dataGaLocation":177},"/jobs/","jobs",{"dataGaName":458},{"text":421,"config":461},{"href":423,"dataGaName":424,"dataGaLocation":177},{"text":463,"config":464},"Leadership",{"href":465,"dataGaName":466,"dataGaLocation":177},"/company/team/e-group/","leadership",{"text":468,"config":469},"Handbook",{"href":470,"dataGaName":471,"dataGaLocation":177},"https://handbook.gitlab.com/","handbook",{"text":473,"config":474},"Investor relations",{"href":475,"dataGaName":476,"dataGaLocation":177},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":478,"config":479},"Trust Center",{"href":480,"dataGaName":481,"dataGaLocation":177},"/security/","trust center",{"text":483,"config":484},"AI Transparency Center",{"href":485,"dataGaName":486,"dataGaLocation":177},"/ai-transparency-center/","ai transparency center",{"text":488,"config":489},"Newsletter",{"href":490,"dataGaName":491,"dataGaLocation":177},"/company/contact/#contact-forms","newsletter",{"text":493,"config":494},"Press",{"href":495,"dataGaName":496,"dataGaLocation":177},"/press/","press",{"text":498,"config":499,"menu":500},"Contact us",{"dataNavLevelOne":444},{"type":228,"columns":501},[502],{"items":503},[504,509,514],{"text":505,"config":506},"Talk to sales",{"href":507,"dataGaName":508,"dataGaLocation":177},"/sales/","talk to sales",{"text":510,"config":511},"Support portal",{"href":512,"dataGaName":513,"dataGaLocation":177},"https://support.gitlab.com/hc/en-us","support portal",{"text":515,"config":516},"Customer portal",{"href":517,"dataGaName":518,"dataGaLocation":177},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":520,"login":521,"suggestions":528},"Close",{"text":522,"link":523},"To search repositories and projects, login to",{"text":524,"config":525},"gitlab.com",{"href":191,"dataGaName":526,"dataGaLocation":527},"search login","search",{"text":529,"default":530},"Suggestions",[531,533,537,539,543,547],{"text":208,"config":532},{"href":213,"dataGaName":208,"dataGaLocation":527},{"text":534,"config":535},"Code Suggestions (AI)",{"href":536,"dataGaName":534,"dataGaLocation":527},"/solutions/code-suggestions/",{"text":167,"config":538},{"href":245,"dataGaName":167,"dataGaLocation":527},{"text":540,"config":541},"GitLab on AWS",{"href":542,"dataGaName":540,"dataGaLocation":527},"/partners/technology-partners/aws/",{"text":544,"config":545},"GitLab on Google Cloud",{"href":546,"dataGaName":544,"dataGaLocation":527},"/partners/technology-partners/google-cloud-platform/",{"text":548,"config":549},"Why GitLab?",{"href":221,"dataGaName":548,"dataGaLocation":527},{"freeTrial":551,"mobileIcon":556,"desktopIcon":561,"secondaryButton":564},{"text":552,"config":553},"Start free trial",{"href":554,"dataGaName":182,"dataGaLocation":555},"https://gitlab.com/-/trials/new/","nav",{"altText":557,"config":558},"Gitlab Icon",{"src":559,"dataGaName":560,"dataGaLocation":555},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":557,"config":562},{"src":563,"dataGaName":560,"dataGaLocation":555},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":565,"config":566},"Get Started",{"href":567,"dataGaName":568,"dataGaLocation":555},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":570,"mobileIcon":574,"desktopIcon":576},{"text":571,"config":572},"Learn more about GitLab Duo",{"href":213,"dataGaName":573,"dataGaLocation":555},"gitlab duo",{"altText":557,"config":575},{"src":559,"dataGaName":560,"dataGaLocation":555},{"altText":557,"config":577},{"src":563,"dataGaName":560,"dataGaLocation":555},{"button":579,"mobileIcon":584,"desktopIcon":586},{"text":580,"config":581},"/switch",{"href":582,"dataGaName":583,"dataGaLocation":555},"#contact","switch",{"altText":557,"config":585},{"src":559,"dataGaName":560,"dataGaLocation":555},{"altText":557,"config":587},{"src":588,"dataGaName":560,"dataGaLocation":555},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":590,"mobileIcon":595,"desktopIcon":597},{"text":591,"config":592},"Back to pricing",{"href":325,"dataGaName":593,"dataGaLocation":555,"icon":594},"back to pricing","GoBack",{"altText":557,"config":596},{"src":559,"dataGaName":560,"dataGaLocation":555},{"altText":557,"config":598},{"src":563,"dataGaName":560,"dataGaLocation":555},{"title":600,"titleMobile":601,"button":602,"config":607},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":219,"config":603},{"href":604,"dataGaName":605,"dataGaLocation":606},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":608,"disabled":155},"release",{"data":610},{"text":611,"source":612,"edit":618,"contribute":623,"config":628,"items":633,"minimal":842},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":613,"config":614},"View page source",{"href":615,"dataGaName":616,"dataGaLocation":617},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":619,"config":620},"Edit this page",{"href":621,"dataGaName":622,"dataGaLocation":617},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":624,"config":625},"Please contribute",{"href":626,"dataGaName":627,"dataGaLocation":617},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":629,"facebook":630,"youtube":631,"linkedin":632},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[634,681,734,778,810],{"title":323,"links":635,"subMenu":650},[636,640,645],{"text":637,"config":638},"View plans",{"href":325,"dataGaName":639,"dataGaLocation":617},"view plans",{"text":641,"config":642},"Why Premium?",{"href":643,"dataGaName":644,"dataGaLocation":617},"/pricing/premium/","why premium",{"text":646,"config":647},"Why Ultimate?",{"href":648,"dataGaName":649,"dataGaLocation":617},"/pricing/ultimate/","why ultimate",[651],{"title":652,"links":653},"Contact Us",[654,657,659,661,666,671,676],{"text":655,"config":656},"Contact sales",{"href":507,"dataGaName":187,"dataGaLocation":617},{"text":510,"config":658},{"href":512,"dataGaName":513,"dataGaLocation":617},{"text":515,"config":660},{"href":517,"dataGaName":518,"dataGaLocation":617},{"text":662,"config":663},"Status",{"href":664,"dataGaName":665,"dataGaLocation":617},"https://status.gitlab.com/","status",{"text":667,"config":668},"Terms of use",{"href":669,"dataGaName":670,"dataGaLocation":617},"/terms/","terms of use",{"text":672,"config":673},"Privacy statement",{"href":674,"dataGaName":675,"dataGaLocation":617},"/privacy/","privacy statement",{"text":677,"config":678},"Cookie preferences",{"dataGaName":679,"dataGaLocation":617,"id":680,"isOneTrustButton":158},"cookie preferences","ot-sdk-btn",{"title":224,"links":682,"subMenu":691},[683,687],{"text":684,"config":685},"DevSecOps platform",{"href":206,"dataGaName":686,"dataGaLocation":617},"devsecops platform",{"text":688,"config":689},"AI-Assisted Development",{"href":213,"dataGaName":690,"dataGaLocation":617},"ai-assisted development",[692],{"title":693,"links":694},"Topics",[695,699,704,709,714,719,724,729],{"text":696,"config":697},"CICD",{"href":18,"dataGaName":698,"dataGaLocation":617},"cicd",{"text":700,"config":701},"GitOps",{"href":702,"dataGaName":703,"dataGaLocation":617},"/topics/gitops/","gitops",{"text":705,"config":706},"DevOps",{"href":707,"dataGaName":708,"dataGaLocation":617},"/topics/devops/","devops",{"text":710,"config":711},"Version Control",{"href":712,"dataGaName":713,"dataGaLocation":617},"/topics/version-control/","version control",{"text":715,"config":716},"DevSecOps",{"href":717,"dataGaName":718,"dataGaLocation":617},"/topics/devsecops/","devsecops",{"text":720,"config":721},"Cloud Native",{"href":722,"dataGaName":723,"dataGaLocation":617},"/topics/cloud-native/","cloud native",{"text":725,"config":726},"AI for Coding",{"href":727,"dataGaName":728,"dataGaLocation":617},"/topics/devops/ai-for-coding/","ai for coding",{"text":730,"config":731},"Agentic AI",{"href":732,"dataGaName":733,"dataGaLocation":617},"/topics/agentic-ai/","agentic ai",{"title":735,"links":736},"Solutions",[737,739,741,746,750,753,757,760,762,765,768,773],{"text":267,"config":738},{"href":262,"dataGaName":267,"dataGaLocation":617},{"text":256,"config":740},{"href":240,"dataGaName":241,"dataGaLocation":617},{"text":742,"config":743},"Agile development",{"href":744,"dataGaName":745,"dataGaLocation":617},"/solutions/agile-delivery/","agile delivery",{"text":747,"config":748},"SCM",{"href":252,"dataGaName":749,"dataGaLocation":617},"source code management",{"text":696,"config":751},{"href":245,"dataGaName":752,"dataGaLocation":617},"continuous integration & delivery",{"text":754,"config":755},"Value stream management",{"href":295,"dataGaName":756,"dataGaLocation":617},"value stream management",{"text":700,"config":758},{"href":759,"dataGaName":703,"dataGaLocation":617},"/solutions/gitops/",{"text":305,"config":761},{"href":308,"dataGaName":309,"dataGaLocation":617},{"text":763,"config":764},"Small business",{"href":314,"dataGaName":315,"dataGaLocation":617},{"text":766,"config":767},"Public sector",{"href":320,"dataGaName":321,"dataGaLocation":617},{"text":769,"config":770},"Education",{"href":771,"dataGaName":772,"dataGaLocation":617},"/solutions/education/","education",{"text":774,"config":775},"Financial services",{"href":776,"dataGaName":777,"dataGaLocation":617},"/solutions/finance/","financial services",{"title":328,"links":779},[780,782,784,786,789,791,794,796,798,800,802,804,806,808],{"text":341,"config":781},{"href":343,"dataGaName":344,"dataGaLocation":617},{"text":346,"config":783},{"href":348,"dataGaName":349,"dataGaLocation":617},{"text":351,"config":785},{"href":353,"dataGaName":354,"dataGaLocation":617},{"text":356,"config":787},{"href":358,"dataGaName":788,"dataGaLocation":617},"docs",{"text":379,"config":790},{"href":381,"dataGaName":382,"dataGaLocation":617},{"text":792,"config":793},"What's new",{"href":439,"dataGaName":440,"dataGaLocation":617},{"text":374,"config":795},{"href":376,"dataGaName":377,"dataGaLocation":617},{"text":393,"config":797},{"href":395,"dataGaName":396,"dataGaLocation":617},{"text":401,"config":799},{"href":403,"dataGaName":404,"dataGaLocation":617},{"text":406,"config":801},{"href":408,"dataGaName":409,"dataGaLocation":617},{"text":411,"config":803},{"href":413,"dataGaName":414,"dataGaLocation":617},{"text":416,"config":805},{"href":418,"dataGaName":419,"dataGaLocation":617},{"text":421,"config":807},{"href":423,"dataGaName":424,"dataGaLocation":617},{"text":426,"config":809},{"href":428,"dataGaName":429,"dataGaLocation":617},{"title":442,"links":811},[812,814,816,818,820,822,826,831,833,835,837],{"text":450,"config":813},{"href":452,"dataGaName":444,"dataGaLocation":617},{"text":455,"config":815},{"href":457,"dataGaName":458,"dataGaLocation":617},{"text":463,"config":817},{"href":465,"dataGaName":466,"dataGaLocation":617},{"text":468,"config":819},{"href":470,"dataGaName":471,"dataGaLocation":617},{"text":473,"config":821},{"href":475,"dataGaName":476,"dataGaLocation":617},{"text":823,"config":824},"Sustainability",{"href":825,"dataGaName":823,"dataGaLocation":617},"/sustainability/",{"text":827,"config":828},"Diversity, inclusion and belonging (DIB)",{"href":829,"dataGaName":830,"dataGaLocation":617},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":478,"config":832},{"href":480,"dataGaName":481,"dataGaLocation":617},{"text":488,"config":834},{"href":490,"dataGaName":491,"dataGaLocation":617},{"text":493,"config":836},{"href":495,"dataGaName":496,"dataGaLocation":617},{"text":838,"config":839},"Modern Slavery Transparency Statement",{"href":840,"dataGaName":841,"dataGaLocation":617},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":843},[844,847,850],{"text":845,"config":846},"Terms",{"href":669,"dataGaName":670,"dataGaLocation":617},{"text":848,"config":849},"Cookies",{"dataGaName":679,"dataGaLocation":617,"id":680,"isOneTrustButton":158},{"text":851,"config":852},"Privacy",{"href":674,"dataGaName":675,"dataGaLocation":617},[854],{"id":855,"title":7,"body":154,"config":856,"content":858,"description":154,"extension":862,"meta":863,"navigation":158,"path":864,"seo":865,"stem":866,"__hash__":867},"blogAuthors/en-us/blog/authors/darren-eastman.yml",{"template":857},"BlogAuthor",{"name":7,"config":859},{"headshot":860,"ctfId":861},"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",[869,878,886],{"title":870,"description":871,"heroImage":872,"category":150,"date":873,"authors":874,"slug":877,"externalUrl":154},"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",[875,876],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":879,"description":880,"heroImage":881,"category":150,"date":882,"authors":883,"slug":885,"externalUrl":154},"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",[884],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":887,"description":888,"heroImage":889,"category":150,"date":890,"authors":891,"slug":893,"externalUrl":154},"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",[892],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":895},[896,910,922,934],{"id":897,"categories":898,"header":900,"text":901,"button":902,"image":907},"ai-modernization",[899],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":903,"config":904},"Get your AI maturity score",{"href":905,"dataGaName":906,"dataGaLocation":382},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":908},{"src":909},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":911,"categories":912,"header":914,"text":901,"button":915,"image":919},"devops-modernization",[913,718],"product","Are you just managing tools or shipping innovation?",{"text":916,"config":917},"Get your DevOps maturity score",{"href":918,"dataGaName":906,"dataGaLocation":382},"/assessments/devops-modernization-assessment/",{"config":920},{"src":921},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":923,"categories":924,"header":926,"text":901,"button":927,"image":931},"security-modernization",[925],"security","Are you trading speed for security?",{"text":928,"config":929},"Get your security maturity score",{"href":930,"dataGaName":906,"dataGaLocation":382},"/assessments/security-modernization-assessment/",{"config":932},{"src":933},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":935,"paths":936,"header":939,"text":940,"button":941,"image":946},"github-azure-migration",[937,938],"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":942,"config":943},"See how GitLab compares to GitHub",{"href":944,"dataGaName":945,"dataGaLocation":382},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":947},{"src":921},{"header":949,"blurb":950,"button":951,"secondaryButton":956},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":952,"config":953},"Get your free trial",{"href":954,"dataGaName":182,"dataGaLocation":955},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":655,"config":957},{"href":507,"dataGaName":187,"dataGaLocation":955},1786803763040]