[{"data":1,"prerenderedAt":1303},["ShallowReactive",2],{"/blog/continuous-integration-delivery-and-deployment-with-gitlab":3,"navigation-en-us":516,"banner-en-us":944,"footer-en-us":954,"blog-post-authors-en-us-Marcia Ramos":1198,"blog-related-posts-en-us-continuous-integration-delivery-and-deployment-with-gitlab":1213,"blog-promotions-en-us":1239,"next-steps-en-us":1293},{"id":4,"title":5,"authors":6,"body":8,"category":485,"date":486,"description":5,"extension":487,"externalUrl":488,"faq":488,"featured":489,"heroImage":490,"meta":491,"navigation":506,"path":507,"seo":508,"slug":512,"stem":513,"tags":488,"template":514,"updatedDate":488,"__hash__":515},"blogPosts/en-us/blog/continuous-integration-delivery-and-deployment-with-gitlab.md","Continuous Integration, Delivery, and Deployment with GitLab",[7],"Marcia Ramos",{"type":9,"value":10,"toc":475},"minimark",[11,26,37,42,56,59,89,93,126,129,144,148,164,167,206,210,217,230,235,237,242,245,251,254,260,275,282,285,291,294,301,304,308,328,331,387,390,400,410,417,420,432,440,444,458,461,468],[12,13,14,15,20,21,25],"p",{},"Can you imagine having ",[16,17,19],"a",{"href":18},"/topics/ci-cd/","Continuous Integration, Continuous Delivery, and Continuous Deployment","\nwithin the same web interface? With ",[22,23,24],"strong",{},"GitLab",", you can!",[12,27,28,29,32,33,36],{},"After a brief introduction to these topics,\nand a short walk through of some use-cases for these development practices, we'll present you\nwith a ",[22,30,31],{},"video"," illustrating the capability of going ",[22,34,35],{},"from idea to production faster"," with\nGitLab. Check how you can easily deploy your app automatically from GitLab to Docker Cloud.",[38,39,41],"h2",{"id":40},"continuous-integration","Continuous Integration",[12,43,44,51,52,55],{},[22,45,46,47],{},"[Continuous Integration]",[48,49,50],"span",{},"ci"," is a software development practice in which you ",[22,53,54],{},"build and test"," software\nevery time a developer pushes code to the application, and it happens several times a day.",[12,57,58],{},"Continuous Integration: TEST - BUILD",[12,60,61,62,65,66,69,70,73,74,77,78,81,82,85,86,88],{},"For example, our developers push code to [GitLab CE]",[48,63,64],{},"ce-repo","\nand [GitLab EE]",[48,67,68],{},"ee-repo"," every day, multiple times per day.\nFor every commit, we use ",[48,71,72],{},"GitLab CI"," to ",[22,75,76],{},"test and build"," our software. We run unit tests to make sure\nsome change didn't break other parts of the software. [Every push triggers multiple tests]",[48,79,80],{},"ce-pipes",",\nmaking it easier to identify where the error is when a test happens to fail.\nBut we ",[22,83,84],{},"do not deploy to production often",", making both GitLab CE and EE cases\nof ",[22,87,41],{}," only.",[38,90,92],{"id":91},"continuous-delivery","Continuous Delivery",[12,94,95,101,102,105,106,109,110,113,114,117,118,121,122,125],{},[22,96,97,98],{},"[Continuous Delivery]",[48,99,100],{},"cd"," is a software engineering approach in which ",[22,103,104],{},"continuous integration",", ",[22,107,108],{},"automated\ntesting",", and ",[22,111,112],{},"automated deployment"," capabilities allow software to be developed and ",[48,115,116],{},"deployed rapidly",",\nreliably and repeatedly with minimal human intervention. Still, the ",[22,119,120],{},"deployment to production"," is defined strategically\nand ",[22,123,124],{},"triggered manually",".",[12,127,128],{},"Continuous Delivery: TEST - BUILD -  - DEPLOY",[12,130,131,132,135,136,139,140,143],{},"[Mozilla Firefox]",[48,133,134],{},"moz"," and ",[48,137,138],{},"Envato"," are good examples of Continuous Delivery. They both get their product\n",[22,141,142],{},"deployed to production"," as soon as it's ready with as little human intervention as possible.",[38,145,147],{"id":146},"continuous-deployment","Continuous Deployment",[12,149,150,156,157,160,161,125],{},[22,151,152,153],{},"[Continuous Deployment]",[48,154,155],{},"cdp"," is a software development practice in which every code change goes through\nthe entire pipeline and is put ",[22,158,159],{},"into production automatically",", resulting in many production\ndeployments every day. It does everything that Continuous Delivery does, but the process is fully automated,\nthere's ",[22,162,163],{},"no human intervention at all",[12,165,166],{},"Continuous Deployment: TEST - BUILD -  - DEPLOY",[12,168,169,170,173,174,177,178,181,182,184,185,189,190,193,194,197,198,201,202,205],{},"For example, our website ",[48,171,172],{},"about.GitLab.com",", is ",[22,175,176],{},"continuously deployed",". We commit multiple times a day to\nfeature-branches, and every push triggers a [parallel]",[48,179,180],{},"doc-stages"," ",[22,183,76],{},". Every time we merge to the\n",[186,187,188],"code",{},"master"," branch (and we do that a lot, every day), the code is tested, built, and ",[22,191,192],{},"deployed to\nthe production"," [environment]",[48,195,196],{},"env",", passing through the entire [pipeline]",[48,199,200],{},"com-pipe",".\nThere's ",[22,203,204],{},"no further manual action"," that triggers the deployment: it is an automated process, controlled by GitLab CI.",[38,207,209],{"id":208},"challenges","Challenges",[12,211,212,213,216],{},"[Perforce performed a study]",[48,214,215],{},"perforce"," that revealed that most of the companies surveyed are using Continuous\nDelivery methods to ship their products:",[218,219,220],"blockquote",{},[12,221,222],{},[223,224,225,226,229],"em",{},"The ",[48,227,228],{},"study"," indicates that Continuous Delivery has really taken off: 65% say their companies have migrated at\nleast one project/team to Continuous Delivery practices.",[12,231,232],{},[223,233,234],{},"80% of SaaS companies are doing Continuous Delivery, compared to 51% of non-SaaS companies (like boxed or on-premise software, embedded systems or hardware, industrial goods, etc.)",[218,236],{},[12,238,239],{},[223,240,241],{},"Nearly everyone agrees on the vital role of the collaboration platform (version management, build automation, code review, etc.) in achieving Continuous Delivery. 96% said it’s important and 40% said it’s critical. No argument here.",[12,243,244],{},"And they raised an interesting question:",[12,246,247,248,250],{},"What’s the hardest thing about ",[22,249,92],{},"?",[12,252,253],{},"The answer was:",[12,255,256,257,125],{},"For non-SaaS companies, it’s getting ",[22,258,259],{},"automation technologies to integrate",[12,261,262,263,266,267,270,271,274],{},"Well, with GitLab, you have all of this, ",[22,264,265],{},"fully-integrated into one single UI",". From ",[48,268,269],{},"GitLab 8.10"," on,\nyou can [perform Manual Actions]",[48,272,273],{},"manual"," and manually deploy your application with the click of a button,\nmaking Continuous Delivery easier than ever. Take a look.",[12,276,277,278,281],{},"You can manually ",[22,279,280],{},"deploy"," to staging:",[12,283,284],{},"![Continuous Delivery - deploy to staging]",[12,286,287,288,290],{},"You can also manually ",[22,289,280],{}," to production:",[12,292,293],{},"![Continuous Delivery - deploy to production]",[12,295,296,297,300],{},"And you are free to ",[22,298,299],{},"rollback"," to the previous state with the click of a button:",[12,302,303],{},"![Continuous Delivery - rollback]",[38,305,307],{"id":306},"from-idea-to-production-with-gitlab","From idea to production with GitLab",[12,309,310,311,314,315,105,317,109,319,324,325,125],{},"Our Head of Product, ",[48,312,313],{},"Mark Pundsack",", created a demonstration which illustrates our built-in capabilities\nwith ",[22,316,72],{},[22,318,147],{},[22,320,321],{},[48,322,323],{},"Container Registry"," together, to develop ",[22,326,327],{},"faster\nfrom idea to production",[12,329,330],{},"In his video, you can see how it's possible, within one single interface (GitLab), to do everything:",[332,333,334,338,341,344,362,365,384],"ul",{},[335,336,337],"li",{},"Have an idea",[335,339,340],{},"Create an issue to discuss it with your team",[335,342,343],{},"Ship the code within a merge request",[335,345,346,347],{},"Run automated scripts (sequential or parallel)\n",[332,348,349,359],{},[335,350,351,352,355,356],{},"Build, test ",[22,353,354],{},"and deploy"," to a ",[22,357,358],{},"staging environment",[335,360,361],{},"Preview the changes",[335,363,364],{},"Review the code and get it approved",[335,366,367,368,370],{},"Merge the feature-branch into ",[186,369,188],{},[332,371,372],{},[335,373,374,377,378,355,381],{},[22,375,376],{},"Deploy"," your changes ",[22,379,380],{},"automatically",[22,382,383],{},"production environment",[335,385,386],{},"Rollback if something goes wrong",[12,388,389],{},"The most amazing thing is, you can track the entire process. Everything is\nfully-integrated with GitLab already; you don't need any other tools to deliver your software, nor jump\nbetween different applications and interfaces to track the process.",[12,391,392,393,396,397,125],{},"The full spectrum is clearly visible: the issue, the commits to the merge request, the reviews, the builds, the tests,\nthe deploys, the deployment history, the ",[48,394,395],{},"container history",", the environments and the [pipelines]",[48,398,399],{},"mark-pipes",[12,401,402,403,406,407,409],{},"Furthermore, for this example demo configuration, every time you push code to the repository, even if it's\nto feature-branches, the pipeline runs ",[22,404,405],{},"from build to deployment",". But instead of deploying to production,\nthese branches deploy to a staging environment. Production is only affected by the ",[186,408,188],{}," branch.",[12,411,412,413,416],{},"For this particular case, Mark used ",[48,414,415],{},"Docker Cloud"," to deploy his app, but you are free to use your creativity to\noptimize your software development process with GitLab and its built-in development tools.",[12,418,419],{},"Check it out; it's awesome!",[421,422,425,426],"figure",{"className":423},[424],"video_container","\n  ",[427,428,181],"iframe",{"src":429,"frameBorder":430,"allowFullScreen":431},"https://www.youtube.com/embed/pY4IbEXxxGY","0","true",[12,433,434,437,438,125],{},[22,435,436],{},"Note:"," we assume you know what Docker is, how to use it and how to deploy an app to ",[48,439,415],{},[38,441,443],{"id":442},"conclusion","Conclusion",[12,445,446,447,450,451,454,455,457],{},"The terms Continuous ",[22,448,449],{},"Delivery"," and Continuous ",[22,452,453],{},"Deployment"," are confusing, but now hopefully you\nunderstand the difference between them. The goal is pushing code frequently, and having it tested,\nbuilt, and deployed. If you prefer having the human decision before deploying to production, GitLab\nallows you to do that with [Manual Actions]",[48,456,273],{},". If you want a fully-automated process, with GitLab you\ncan do that too. Whatever strategy your company chooses, GitLab does the job, and does it well!",[12,459,460],{},"Our development team works hard to offer the best solution for modern software development tools and techniques. We ship a new\nversion once a month, every 22nd, with more features and improvements, for making development faster and better.",[12,462,463,464,467],{},"GitLab is unique: we go [from idea to production]",[48,465,466],{},"direction"," using one single interface that integrates all the tools we need!",[12,469,470,471,474],{},"Follow ",[48,472,473],{},"@GitLab"," on Twitter and stay tuned for updates!",{"title":476,"searchDepth":477,"depth":477,"links":478},"",2,[479,480,481,482,483,484],{"id":40,"depth":477,"text":41},{"id":91,"depth":477,"text":92},{"id":146,"depth":477,"text":147},{"id":208,"depth":477,"text":209},{"id":306,"depth":477,"text":307},{"id":442,"depth":477,"text":443},"engineering","2016-08-05","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667509/Blog/Hero%20Images/continuous-integration-from-jenkins-to-gitlab-using-docker.jpg",{"excerpt":492},{"type":9,"value":493},[494,500],[12,495,14,496,20,498,25],{},[16,497,19],{"href":18},[22,499,24],{},[12,501,28,502,32,504,36],{},[22,503,31],{},[22,505,35],{},true,"/en-us/blog/continuous-integration-delivery-and-deployment-with-gitlab",{"title":5,"description":5,"ogTitle":5,"noIndex":489,"ogDescription":5,"ogImage":490,"ogUrl":509,"ogSiteName":510,"ogType":511,"canonicalUrls":509},"https://about.gitlab.com/blog/continuous-integration-delivery-and-deployment-with-gitlab","https://about.gitlab.com","article","continuous-integration-delivery-and-deployment-with-gitlab","en-us/blog/continuous-integration-delivery-and-deployment-with-gitlab","BlogPost","MHHK0ulZtuhk1VRLO-dhy6Jlr_89mGMSzoihqJB5xvw",{"logo":517,"freeTrial":522,"sales":527,"login":532,"items":537,"search":864,"minimal":895,"duo":914,"switchNav":923,"pricingDeployment":934},{"config":518},{"href":519,"dataGaName":520,"dataGaLocation":521},"/","gitlab logo","header",{"text":523,"config":524},"Get free trial",{"href":525,"dataGaName":526,"dataGaLocation":521},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":528,"config":529},"Request a demo",{"href":530,"dataGaName":531,"dataGaLocation":521},"/sales/?contact-topic=request-demo","sales",{"text":533,"config":534},"Sign in",{"href":535,"dataGaName":536,"dataGaLocation":521},"https://gitlab.com/users/sign_in/","sign in",[538,567,667,672,786,842],{"text":539,"config":540,"menu":542},"Platform",{"dataNavLevelOne":541},"platform",{"type":543,"columns":544},"cards",[545,551,559],{"title":539,"description":546,"link":547},"The intelligent orchestration platform for DevSecOps",{"text":548,"config":549},"Explore our Platform",{"href":550,"dataGaName":541,"dataGaLocation":521},"/platform/",{"title":552,"description":553,"link":554},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":555,"config":556},"Meet GitLab Duo",{"href":557,"dataGaName":558,"dataGaLocation":521},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":560,"description":561,"link":562},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":563,"config":564},"Learn more",{"href":565,"dataGaName":566,"dataGaLocation":521},"/why-gitlab/","why gitlab",{"text":568,"left":506,"config":569,"menu":571},"Product",{"dataNavLevelOne":570},"solutions",{"type":572,"link":573,"columns":577,"feature":646},"lists",{"text":574,"config":575},"View all Solutions",{"href":576,"dataGaName":570,"dataGaLocation":521},"/solutions/",[578,602,625],{"title":579,"description":580,"link":581,"items":586},"Automation","CI/CD and automation to accelerate deployment",{"config":582},{"icon":583,"href":584,"dataGaName":585,"dataGaLocation":521},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[587,591,594,598],{"text":588,"config":589},"CI/CD",{"href":590,"dataGaLocation":521,"dataGaName":588},"/solutions/continuous-integration/",{"text":552,"config":592},{"href":557,"dataGaLocation":521,"dataGaName":593},"gitlab duo agent platform - product menu",{"text":595,"config":596},"Source Code Management",{"href":597,"dataGaLocation":521,"dataGaName":595},"/solutions/source-code-management/",{"text":599,"config":600},"Automated Software Delivery",{"href":584,"dataGaLocation":521,"dataGaName":601},"Automated software delivery",{"title":603,"description":604,"link":605,"items":610},"Security","Deliver code faster without compromising security",{"config":606},{"href":607,"dataGaName":608,"dataGaLocation":521,"icon":609},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[611,615,620],{"text":612,"config":613},"Application Security Testing",{"href":607,"dataGaName":614,"dataGaLocation":521},"Application security testing",{"text":616,"config":617},"Software Supply Chain Security",{"href":618,"dataGaLocation":521,"dataGaName":619},"/solutions/supply-chain/","Software supply chain security",{"text":621,"config":622},"Software Compliance",{"href":623,"dataGaName":624,"dataGaLocation":521},"/solutions/software-compliance/","software compliance",{"title":626,"link":627,"items":632},"Measurement",{"config":628},{"icon":629,"href":630,"dataGaName":631,"dataGaLocation":521},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[633,637,641],{"text":634,"config":635},"Visibility & Measurement",{"href":630,"dataGaLocation":521,"dataGaName":636},"Visibility and Measurement",{"text":638,"config":639},"Value Stream Management",{"href":640,"dataGaLocation":521,"dataGaName":638},"/solutions/value-stream-management/",{"text":642,"config":643},"Analytics & Insights",{"href":644,"dataGaLocation":521,"dataGaName":645},"/solutions/analytics-and-insights/","Analytics and insights",{"title":647,"type":572,"items":648},"GitLab for",[649,655,661],{"text":650,"config":651},"Enterprise",{"icon":652,"href":653,"dataGaLocation":521,"dataGaName":654},"Building","/enterprise/","enterprise",{"text":656,"config":657},"Small Business",{"icon":658,"href":659,"dataGaLocation":521,"dataGaName":660},"Work","/small-business/","small business",{"text":662,"config":663},"Public Sector",{"icon":664,"href":665,"dataGaLocation":521,"dataGaName":666},"Organization","/solutions/public-sector/","public sector",{"text":668,"config":669},"Pricing",{"href":670,"dataGaName":671,"dataGaLocation":521,"dataNavLevelOne":671},"/pricing/","pricing",{"text":673,"config":674,"menu":676},"Resources",{"dataNavLevelOne":675},"resources",{"type":572,"link":677,"columns":681,"feature":775},{"text":678,"config":679},"View all resources",{"href":680,"dataGaName":675,"dataGaLocation":521},"/resources/",[682,715,742],{"title":683,"items":684},"Getting started",[685,690,695,700,705,710],{"text":686,"config":687},"Install",{"href":688,"dataGaName":689,"dataGaLocation":521},"/install/","install",{"text":691,"config":692},"Quick start guides",{"href":693,"dataGaName":694,"dataGaLocation":521},"/get-started/","quick setup checklists",{"text":696,"config":697},"Learn",{"href":698,"dataGaLocation":521,"dataGaName":699},"https://university.gitlab.com/","learn",{"text":701,"config":702},"Product documentation",{"href":703,"dataGaName":704,"dataGaLocation":521},"https://docs.gitlab.com/","product documentation",{"text":706,"config":707},"Best practice videos",{"href":708,"dataGaName":709,"dataGaLocation":521},"/getting-started-videos/","best practice videos",{"text":711,"config":712},"Integrations",{"href":713,"dataGaName":714,"dataGaLocation":521},"/integrations/","integrations",{"title":716,"items":717},"Discover",[718,723,728,733,737],{"text":719,"config":720},"Customer success stories",{"href":721,"dataGaName":722,"dataGaLocation":521},"/customers/","customer success stories",{"text":724,"config":725},"Blog",{"href":726,"dataGaName":727,"dataGaLocation":521},"/blog/","blog",{"text":729,"config":730},"Demo Hub",{"href":731,"dataGaName":732,"dataGaLocation":521},"/demo-hub/","demo hub",{"text":734,"config":735},"The Source",{"href":736,"dataGaName":727,"dataGaLocation":521},"/the-source/",{"text":738,"config":739},"Remote",{"href":740,"dataGaName":741,"dataGaLocation":521},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":743,"items":744},"Connect",[745,750,755,760,765,770],{"text":746,"config":747},"GitLab Services",{"href":748,"dataGaName":749,"dataGaLocation":521},"/services/","services",{"text":751,"config":752},"Contribute",{"href":753,"dataGaName":754,"dataGaLocation":521},"https://contributors.gitlab.com","contribute",{"text":756,"config":757},"Community",{"href":758,"dataGaName":759,"dataGaLocation":521},"/community/","community",{"text":761,"config":762},"Forum",{"href":763,"dataGaName":764,"dataGaLocation":521},"https://forum.gitlab.com/","forum",{"text":766,"config":767},"Events",{"href":768,"dataGaName":769,"dataGaLocation":521},"/events/","events",{"text":771,"config":772},"Partners",{"href":773,"dataGaName":774,"dataGaLocation":521},"/partners/","partners",{"config":776,"title":779,"text":780,"link":781},{"background":777,"textColor":778},"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":782,"config":783},"Read the latest",{"href":784,"dataGaName":785,"dataGaLocation":521},"/whats-new/","whats new",{"text":787,"config":788,"menu":790},"Company",{"dataNavLevelOne":789},"company",{"type":572,"columns":791},[792],{"items":793},[794,799,805,807,812,817,822,827,832,837],{"text":795,"config":796},"About",{"href":797,"dataGaName":798,"dataGaLocation":521},"/company/","about",{"text":800,"config":801,"footerGa":804},"Jobs",{"href":802,"dataGaName":803,"dataGaLocation":521},"/jobs/","jobs",{"dataGaName":803},{"text":766,"config":806},{"href":768,"dataGaName":769,"dataGaLocation":521},{"text":808,"config":809},"Leadership",{"href":810,"dataGaName":811,"dataGaLocation":521},"/company/team/e-group/","leadership",{"text":813,"config":814},"Handbook",{"href":815,"dataGaName":816,"dataGaLocation":521},"https://handbook.gitlab.com/","handbook",{"text":818,"config":819},"Investor relations",{"href":820,"dataGaName":821,"dataGaLocation":521},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":823,"config":824},"Trust Center",{"href":825,"dataGaName":826,"dataGaLocation":521},"/security/","trust center",{"text":828,"config":829},"AI Transparency Center",{"href":830,"dataGaName":831,"dataGaLocation":521},"/ai-transparency-center/","ai transparency center",{"text":833,"config":834},"Newsletter",{"href":835,"dataGaName":836,"dataGaLocation":521},"/company/contact/#contact-forms","newsletter",{"text":838,"config":839},"Press",{"href":840,"dataGaName":841,"dataGaLocation":521},"/press/","press",{"text":843,"config":844,"menu":845},"Contact us",{"dataNavLevelOne":789},{"type":572,"columns":846},[847],{"items":848},[849,854,859],{"text":850,"config":851},"Talk to sales",{"href":852,"dataGaName":853,"dataGaLocation":521},"/sales/","talk to sales",{"text":855,"config":856},"Support portal",{"href":857,"dataGaName":858,"dataGaLocation":521},"https://support.gitlab.com/hc/en-us","support portal",{"text":860,"config":861},"Customer portal",{"href":862,"dataGaName":863,"dataGaLocation":521},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":865,"login":866,"suggestions":873},"Close",{"text":867,"link":868},"To search repositories and projects, login to",{"text":869,"config":870},"gitlab.com",{"href":535,"dataGaName":871,"dataGaLocation":872},"search login","search",{"text":874,"default":875},"Suggestions",[876,878,882,884,888,892],{"text":552,"config":877},{"href":557,"dataGaName":552,"dataGaLocation":872},{"text":879,"config":880},"Code Suggestions (AI)",{"href":881,"dataGaName":879,"dataGaLocation":872},"/solutions/code-suggestions/",{"text":588,"config":883},{"href":590,"dataGaName":588,"dataGaLocation":872},{"text":885,"config":886},"GitLab on AWS",{"href":887,"dataGaName":885,"dataGaLocation":872},"/partners/technology-partners/aws/",{"text":889,"config":890},"GitLab on Google Cloud",{"href":891,"dataGaName":889,"dataGaLocation":872},"/partners/technology-partners/google-cloud-platform/",{"text":893,"config":894},"Why GitLab?",{"href":565,"dataGaName":893,"dataGaLocation":872},{"freeTrial":896,"mobileIcon":901,"desktopIcon":906,"secondaryButton":909},{"text":897,"config":898},"Start free trial",{"href":899,"dataGaName":526,"dataGaLocation":900},"https://gitlab.com/-/trials/new/","nav",{"altText":902,"config":903},"Gitlab Icon",{"src":904,"dataGaName":905,"dataGaLocation":900},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":902,"config":907},{"src":908,"dataGaName":905,"dataGaLocation":900},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":910,"config":911},"Get Started",{"href":912,"dataGaName":913,"dataGaLocation":900},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":915,"mobileIcon":919,"desktopIcon":921},{"text":916,"config":917},"Learn more about GitLab Duo",{"href":557,"dataGaName":918,"dataGaLocation":900},"gitlab duo",{"altText":902,"config":920},{"src":904,"dataGaName":905,"dataGaLocation":900},{"altText":902,"config":922},{"src":908,"dataGaName":905,"dataGaLocation":900},{"button":924,"mobileIcon":929,"desktopIcon":931},{"text":925,"config":926},"/switch",{"href":927,"dataGaName":928,"dataGaLocation":900},"#contact","switch",{"altText":902,"config":930},{"src":904,"dataGaName":905,"dataGaLocation":900},{"altText":902,"config":932},{"src":933,"dataGaName":905,"dataGaLocation":900},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":935,"mobileIcon":940,"desktopIcon":942},{"text":936,"config":937},"Back to pricing",{"href":670,"dataGaName":938,"dataGaLocation":900,"icon":939},"back to pricing","GoBack",{"altText":902,"config":941},{"src":904,"dataGaName":905,"dataGaLocation":900},{"altText":902,"config":943},{"src":908,"dataGaName":905,"dataGaLocation":900},{"title":945,"titleMobile":946,"button":947,"config":952},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":563,"config":948},{"href":949,"dataGaName":950,"dataGaLocation":951},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":953,"disabled":489},"release",{"data":955},{"text":956,"source":957,"edit":963,"contribute":968,"config":973,"items":978,"minimal":1187},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":958,"config":959},"View page source",{"href":960,"dataGaName":961,"dataGaLocation":962},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":964,"config":965},"Edit this page",{"href":966,"dataGaName":967,"dataGaLocation":962},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":969,"config":970},"Please contribute",{"href":971,"dataGaName":972,"dataGaLocation":962},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":974,"facebook":975,"youtube":976,"linkedin":977},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[979,1026,1079,1123,1155],{"title":668,"links":980,"subMenu":995},[981,985,990],{"text":982,"config":983},"View plans",{"href":670,"dataGaName":984,"dataGaLocation":962},"view plans",{"text":986,"config":987},"Why Premium?",{"href":988,"dataGaName":989,"dataGaLocation":962},"/pricing/premium/","why premium",{"text":991,"config":992},"Why Ultimate?",{"href":993,"dataGaName":994,"dataGaLocation":962},"/pricing/ultimate/","why ultimate",[996],{"title":997,"links":998},"Contact Us",[999,1002,1004,1006,1011,1016,1021],{"text":1000,"config":1001},"Contact sales",{"href":852,"dataGaName":531,"dataGaLocation":962},{"text":855,"config":1003},{"href":857,"dataGaName":858,"dataGaLocation":962},{"text":860,"config":1005},{"href":862,"dataGaName":863,"dataGaLocation":962},{"text":1007,"config":1008},"Status",{"href":1009,"dataGaName":1010,"dataGaLocation":962},"https://status.gitlab.com/","status",{"text":1012,"config":1013},"Terms of use",{"href":1014,"dataGaName":1015,"dataGaLocation":962},"/terms/","terms of use",{"text":1017,"config":1018},"Privacy statement",{"href":1019,"dataGaName":1020,"dataGaLocation":962},"/privacy/","privacy statement",{"text":1022,"config":1023},"Cookie preferences",{"dataGaName":1024,"dataGaLocation":962,"id":1025,"isOneTrustButton":506},"cookie preferences","ot-sdk-btn",{"title":568,"links":1027,"subMenu":1036},[1028,1032],{"text":1029,"config":1030},"DevSecOps platform",{"href":550,"dataGaName":1031,"dataGaLocation":962},"devsecops platform",{"text":1033,"config":1034},"AI-Assisted Development",{"href":557,"dataGaName":1035,"dataGaLocation":962},"ai-assisted development",[1037],{"title":1038,"links":1039},"Topics",[1040,1044,1049,1054,1059,1064,1069,1074],{"text":1041,"config":1042},"CICD",{"href":18,"dataGaName":1043,"dataGaLocation":962},"cicd",{"text":1045,"config":1046},"GitOps",{"href":1047,"dataGaName":1048,"dataGaLocation":962},"/topics/gitops/","gitops",{"text":1050,"config":1051},"DevOps",{"href":1052,"dataGaName":1053,"dataGaLocation":962},"/topics/devops/","devops",{"text":1055,"config":1056},"Version Control",{"href":1057,"dataGaName":1058,"dataGaLocation":962},"/topics/version-control/","version control",{"text":1060,"config":1061},"DevSecOps",{"href":1062,"dataGaName":1063,"dataGaLocation":962},"/topics/devsecops/","devsecops",{"text":1065,"config":1066},"Cloud Native",{"href":1067,"dataGaName":1068,"dataGaLocation":962},"/topics/cloud-native/","cloud native",{"text":1070,"config":1071},"AI for Coding",{"href":1072,"dataGaName":1073,"dataGaLocation":962},"/topics/devops/ai-for-coding/","ai for coding",{"text":1075,"config":1076},"Agentic AI",{"href":1077,"dataGaName":1078,"dataGaLocation":962},"/topics/agentic-ai/","agentic ai",{"title":1080,"links":1081},"Solutions",[1082,1084,1086,1091,1095,1098,1102,1105,1107,1110,1113,1118],{"text":612,"config":1083},{"href":607,"dataGaName":612,"dataGaLocation":962},{"text":601,"config":1085},{"href":584,"dataGaName":585,"dataGaLocation":962},{"text":1087,"config":1088},"Agile development",{"href":1089,"dataGaName":1090,"dataGaLocation":962},"/solutions/agile-delivery/","agile delivery",{"text":1092,"config":1093},"SCM",{"href":597,"dataGaName":1094,"dataGaLocation":962},"source code management",{"text":1041,"config":1096},{"href":590,"dataGaName":1097,"dataGaLocation":962},"continuous integration & delivery",{"text":1099,"config":1100},"Value stream management",{"href":640,"dataGaName":1101,"dataGaLocation":962},"value stream management",{"text":1045,"config":1103},{"href":1104,"dataGaName":1048,"dataGaLocation":962},"/solutions/gitops/",{"text":650,"config":1106},{"href":653,"dataGaName":654,"dataGaLocation":962},{"text":1108,"config":1109},"Small business",{"href":659,"dataGaName":660,"dataGaLocation":962},{"text":1111,"config":1112},"Public sector",{"href":665,"dataGaName":666,"dataGaLocation":962},{"text":1114,"config":1115},"Education",{"href":1116,"dataGaName":1117,"dataGaLocation":962},"/solutions/education/","education",{"text":1119,"config":1120},"Financial services",{"href":1121,"dataGaName":1122,"dataGaLocation":962},"/solutions/finance/","financial services",{"title":673,"links":1124},[1125,1127,1129,1131,1134,1136,1139,1141,1143,1145,1147,1149,1151,1153],{"text":686,"config":1126},{"href":688,"dataGaName":689,"dataGaLocation":962},{"text":691,"config":1128},{"href":693,"dataGaName":694,"dataGaLocation":962},{"text":696,"config":1130},{"href":698,"dataGaName":699,"dataGaLocation":962},{"text":701,"config":1132},{"href":703,"dataGaName":1133,"dataGaLocation":962},"docs",{"text":724,"config":1135},{"href":726,"dataGaName":727,"dataGaLocation":962},{"text":1137,"config":1138},"What's new",{"href":784,"dataGaName":785,"dataGaLocation":962},{"text":719,"config":1140},{"href":721,"dataGaName":722,"dataGaLocation":962},{"text":738,"config":1142},{"href":740,"dataGaName":741,"dataGaLocation":962},{"text":746,"config":1144},{"href":748,"dataGaName":749,"dataGaLocation":962},{"text":751,"config":1146},{"href":753,"dataGaName":754,"dataGaLocation":962},{"text":756,"config":1148},{"href":758,"dataGaName":759,"dataGaLocation":962},{"text":761,"config":1150},{"href":763,"dataGaName":764,"dataGaLocation":962},{"text":766,"config":1152},{"href":768,"dataGaName":769,"dataGaLocation":962},{"text":771,"config":1154},{"href":773,"dataGaName":774,"dataGaLocation":962},{"title":787,"links":1156},[1157,1159,1161,1163,1165,1167,1171,1176,1178,1180,1182],{"text":795,"config":1158},{"href":797,"dataGaName":789,"dataGaLocation":962},{"text":800,"config":1160},{"href":802,"dataGaName":803,"dataGaLocation":962},{"text":808,"config":1162},{"href":810,"dataGaName":811,"dataGaLocation":962},{"text":813,"config":1164},{"href":815,"dataGaName":816,"dataGaLocation":962},{"text":818,"config":1166},{"href":820,"dataGaName":821,"dataGaLocation":962},{"text":1168,"config":1169},"Sustainability",{"href":1170,"dataGaName":1168,"dataGaLocation":962},"/sustainability/",{"text":1172,"config":1173},"Diversity, inclusion and belonging (DIB)",{"href":1174,"dataGaName":1175,"dataGaLocation":962},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":823,"config":1177},{"href":825,"dataGaName":826,"dataGaLocation":962},{"text":833,"config":1179},{"href":835,"dataGaName":836,"dataGaLocation":962},{"text":838,"config":1181},{"href":840,"dataGaName":841,"dataGaLocation":962},{"text":1183,"config":1184},"Modern Slavery Transparency Statement",{"href":1185,"dataGaName":1186,"dataGaLocation":962},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1188},[1189,1192,1195],{"text":1190,"config":1191},"Terms",{"href":1014,"dataGaName":1015,"dataGaLocation":962},{"text":1193,"config":1194},"Cookies",{"dataGaName":1024,"dataGaLocation":962,"id":1025,"isOneTrustButton":506},{"text":1196,"config":1197},"Privacy",{"href":1019,"dataGaName":1020,"dataGaLocation":962},[1199],{"id":1200,"title":7,"body":488,"config":1201,"content":1203,"description":488,"extension":1207,"meta":1208,"navigation":506,"path":1209,"seo":1210,"stem":1211,"__hash__":1212},"blogAuthors/en-us/blog/authors/marcia-ramos.yml",{"template":1202},"BlogAuthor",{"name":7,"config":1204},{"headshot":1205,"ctfId":1206},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Marcia-Ramos","yml",{},"/en-us/blog/authors/marcia-ramos",{},"en-us/blog/authors/marcia-ramos","UrFu-iLS1mEkxVCheaz27cAjfZXeLI9U1n5dGSOHXY4",[1214,1223,1231],{"title":1215,"description":1216,"heroImage":1217,"category":485,"date":1218,"authors":1219,"slug":1222,"externalUrl":488},"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",[1220,1221],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":1224,"description":1225,"heroImage":1226,"category":485,"date":1227,"authors":1228,"slug":1230,"externalUrl":488},"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",[1229],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1232,"description":1233,"heroImage":1234,"category":485,"date":1235,"authors":1236,"slug":1238,"externalUrl":488},"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",[1237],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":1240},[1241,1255,1267,1279],{"id":1242,"categories":1243,"header":1245,"text":1246,"button":1247,"image":1252},"ai-modernization",[1244],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1248,"config":1249},"Get your AI maturity score",{"href":1250,"dataGaName":1251,"dataGaLocation":727},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1253},{"src":1254},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1256,"categories":1257,"header":1259,"text":1246,"button":1260,"image":1264},"devops-modernization",[1258,1063],"product","Are you just managing tools or shipping innovation?",{"text":1261,"config":1262},"Get your DevOps maturity score",{"href":1263,"dataGaName":1251,"dataGaLocation":727},"/assessments/devops-modernization-assessment/",{"config":1265},{"src":1266},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1268,"categories":1269,"header":1271,"text":1246,"button":1272,"image":1276},"security-modernization",[1270],"security","Are you trading speed for security?",{"text":1273,"config":1274},"Get your security maturity score",{"href":1275,"dataGaName":1251,"dataGaLocation":727},"/assessments/security-modernization-assessment/",{"config":1277},{"src":1278},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1280,"paths":1281,"header":1284,"text":1285,"button":1286,"image":1291},"github-azure-migration",[1282,1283],"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":1287,"config":1288},"See how GitLab compares to GitHub",{"href":1289,"dataGaName":1290,"dataGaLocation":727},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1292},{"src":1266},{"header":1294,"blurb":1295,"button":1296,"secondaryButton":1301},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1297,"config":1298},"Get your free trial",{"href":1299,"dataGaName":526,"dataGaLocation":1300},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":1000,"config":1302},{"href":852,"dataGaName":531,"dataGaLocation":1300},1786803765786]