[{"data":1,"prerenderedAt":1127},["ShallowReactive",2],{"/blog/using-gitlab-web-ide-gitlab-ci-cd":3,"navigation-en-us":344,"banner-en-us":770,"footer-en-us":780,"blog-post-authors-en-us-Chrissie Buchanan":1023,"blog-related-posts-en-us-using-gitlab-web-ide-gitlab-ci-cd":1038,"blog-promotions-en-us":1063,"next-steps-en-us":1117},{"id":4,"title":5,"authors":6,"body":8,"category":322,"date":323,"description":324,"extension":325,"externalUrl":326,"faq":326,"featured":327,"heroImage":328,"meta":329,"navigation":330,"path":331,"seo":332,"slug":336,"stem":337,"tags":338,"template":342,"updatedDate":326,"__hash__":343},"blogPosts/en-us/blog/using-gitlab-web-ide-gitlab-ci-cd.md","How to make small changes using GitLab’s Web IDE",[7],"Chrissie Buchanan",{"type":9,"value":10,"toc":317},"minimark",[11,26,35,40,54,61,64,67,73,76,84,89,92,95,101,104,112,118,121,130,136,139,142,148,151,154,160,163,171,177,180,192,198,204,207,213,216,223,229,232,235,241,244,247,253,256,259,265,268,271,277,280,287,292,298,301,304],[12,13,14,15,20,21,25],"p",{},"It’s not enough to say something is quick and easy. To have a better understanding of some of the benefits of using ",[16,17,19],"a",{"href":18},"/topics/ci-cd/","GitLab CI/CD",", it’s much better to ",[22,23,24],"em",{},"show"," you.",[12,27,28,29,34],{},"In a ",[16,30,33],{"href":31,"rel":32},"https://www.youtube.com/watch?v=6207TKNGgJs&feature=emb_logo",[],"short video",", Itzik Gan-Baruch technical marketing manager, demonstrates how to submit a code change using GitLab Web IDE. In three minutes, teams can submit a code change and commit it, trigger a CI pipeline to scan for any errors, and ship the updated application to users.",[36,37,39],"h2",{"id":38},"getting-started-with-gitlab-web-ide","Getting started with GitLab Web IDE",[12,41,42,43,47,48,53],{},"All code that gets automatically tested and deployed to production has a human at its source. In GitLab 10.7, we released the ",[16,44,46],{"href":45},"/blog/introducing-gitlab-s-integrated-development-environment/","first iteration of our Web Integrated Development Environment (IDE)"," after observing how non-developers struggled with editing multiple files and committing those changes. Since we believe that ",[16,49,52],{"href":50,"rel":51},"https://handbook.gitlab.com/handbook/company/mission/#mission",[],"everyone can contribute",", building an editor that was integrated with GitLab that made it easier for anyone to contribute seemed like a natural fit. To access the Web IDE, just click the button from any GitLab project.",[12,55,56],{},[57,58],"img",{"alt":59,"src":60},"Web IDE","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397881/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_1.png",[12,62,63],{},"The Web IDE button",[12,65,66],{},"In this simple project with a job application, you can use the Web IDE to make a code change and push it to a feature branch. Select the file you would like to change from the menu on the left.",[12,68,69],{},[57,70],{"alt":71,"src":72},"Selecting a file","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397885/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_2.png",[12,74,75],{},"Selecting a file from the Wed IDE",[12,77,78,79,83],{},"Once you’ve modified the text in that file, add a commit message and create a new branch. Click ",[80,81,82],"code",{},"Commit"," to create a merge request.",[12,85,86],{},[57,87],{"alt":82,"src":88},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397885/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_3.png",[12,90,91],{},"Commit to create a merge request",[12,93,94],{},"Your commit generates a merge request, and from here you can add an assignee, tie this code change to a specific milestone, add labels, or add any additional information regarding the change.",[12,96,97],{},[57,98],{"alt":99,"src":100},"Modify merge request","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397885/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_4.png",[12,102,103],{},"Submit merge request",[12,105,106,107,111],{},"A new ",[16,108,110],{"href":109},"/solutions/continuous-integration/","continuous integration pipeline"," is triggered automatically. Click on the pipeline to see the stages.",[12,113,114],{},[57,115],{"alt":116,"src":117},"Pipeline","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397885/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_5.png",[12,119,120],{},"Click on the pipeline from the merge request",[12,122,123,124,129],{},"In this project, the pipeline needed zero-configuration because it was generated through GitLab's ",[16,125,128],{"href":126,"rel":127},"https://docs.gitlab.com/topics/autodevops/",[],"Auto DevOps"," capability. The pipeline has stages and a few jobs within each stage.",[12,131,132],{},[57,133],{"alt":134,"src":135},"Auto DevOps pipeline","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397886/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_6.png",[12,137,138],{},"A CI pipeline automatically configured with GitLab Auto DevOps",[12,140,141],{},"First, it builds a Docker image for the code and pushes it to the container registry. From there, it begins tests and scans jobs that run in parallel to help speed up the pipeline.",[12,143,144],{},[57,145],{"alt":146,"src":147},"Pipeline jobs","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397886/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_7.png",[12,149,150],{},"Click on a job within the pipeline stage to get more information",[12,152,153],{},"By clicking on a job within the stage, you can see what happens.",[12,155,156],{},[57,157],{"alt":158,"src":159},"dependency scan","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397887/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_8.png",[12,161,162],{},"Dependency scanning details",[12,164,165,166,170],{},"Once all tests are completed, all test results will be added to the merge request that was created. The merge request is really the key to using GitLab as a code collaboration and ",[16,167,169],{"href":168},"/topics/version-control/","version control platform",". It’s simply a request to merge one branch into another.",[12,172,173],{},[57,174],{"alt":175,"src":176},"merge requests","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397887/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_9.png",[12,178,179],{},"Merge requests for this project",[12,181,182,187,188,191],{},[16,183,186],{"href":184,"rel":185},"https://docs.gitlab.com/ci/review_apps/",[],"Review Apps"," are a way to visualize the changes that were made. Click ",[80,189,190],{},"View app"," once the pipeline has completed to access the staging environment.",[12,193,194],{},[57,195],{"alt":196,"src":197},"Review apps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397881/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_10.png",[12,199,200,201,203],{},"Select ",[80,202,190],{}," to access a staging environment once a pipeline completes.",[12,205,206],{},"In this environment, only changes that were made in the merge request will be displayed. This link can be sent to others so they can view the changes from a web browser.",[12,208,209],{},[57,210],{"alt":211,"src":212},"staging environment","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397881/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_12.png",[12,214,215],{},"The Review App for this project",[12,217,218,219,222],{},"From the merge request, you can see the test results, including changes to code quality and the security scans. This scan detected 20 new vulnerabilities. If you’d like more information, just click ",[80,220,221],{},"Expand"," on the right.",[12,224,225],{},[57,226],{"alt":227,"src":228},"pipeline test results","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397881/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_13.png",[12,230,231],{},"Pipeline test results",[12,233,234],{},"Once the results have been expanded, you can click on each one to get more details.",[12,236,237],{},[57,238],{"alt":239,"src":240},"SAST scan","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397882/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_14.png",[12,242,243],{},"SAST vulnerabilities detected",[12,245,246],{},"By clicking on one of these results, you can see the file that caused the vulnerability as well as the problematic lines of code.",[12,248,249],{},[57,250],{"alt":251,"src":252},"security report","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397883/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_15.png",[12,254,255],{},"Security report",[12,257,258],{},"From this menu, you can choose to dismiss the vulnerability or create an issue so that someone can fix it. Details from the test will be added to the issue automatically.",[12,260,261],{},[57,262],{"alt":263,"src":264},"new issue","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397883/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_16.png",[12,266,267],{},"A new issue created to investigate a vulnerability",[12,269,270],{},"From your original merge request, you can collaborate with others and have them take a look at the proposed changes.",[12,272,273],{},[57,274],{"alt":275,"src":276},"collaborate on merge request","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397883/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_17.png",[12,278,279],{},"Tag someone in a merge request to have them see your changes",[12,281,282,283,286],{},"Once you’ve gathered feedback and all pipelines have passed, click the ",[80,284,285],{},"merge"," button to trigger a new pipeline to deploy your application to production",[12,288,289],{},[57,290],{"alt":59,"src":291},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397885/blog/Content%20Images/CI_demo_blog_May_28/CI_demo_18.png",[12,293,294,295,297],{},"Click ",[80,296,285],{}," to trigger a deployment pipeline",[12,299,300],{},"This workflow shows how anyone can contribute code without using a command line. The Web IDE makes it easy for anyone to make changes without introducing additional risks or quality issues, all from the GitLab interface.",[12,302,303],{},"To see this three-minute demo in real-time, just watch the video below.",[305,306,309,310],"figure",{"className":307},[308],"video_container","\n  ",[311,312,316],"iframe",{"src":313,"frameBorder":314,"allowFullScreen":315},"https://www.youtube-nocookie.com/embed/6207TKNGgJs","0","true"," ",{"title":318,"searchDepth":319,"depth":319,"links":320},"",2,[321],{"id":38,"depth":319,"text":39},"insights","2020-05-28","A quick three minute demo shows how teams can deliver better apps faster using GitLab CI/CD.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678812/Blog/Hero%20Images/web-ide-cover.jpg",{},true,"/en-us/blog/using-gitlab-web-ide-gitlab-ci-cd",{"title":5,"description":324,"ogTitle":5,"ogDescription":324,"noIndex":327,"ogImage":328,"ogUrl":333,"ogSiteName":334,"ogType":335,"canonicalUrls":333},"https://about.gitlab.com/blog/using-gitlab-web-ide-gitlab-ci-cd","https://about.gitlab.com","article","using-gitlab-web-ide-gitlab-ci-cd","en-us/blog/using-gitlab-web-ide-gitlab-ci-cd",[339,340,341],"CI/CD","workflow","tutorial","BlogPost","9cAGLGtAd3UNSOS9R5R86WpinG-CkJsLBKuhO8rUGvM",{"logo":345,"freeTrial":350,"sales":355,"login":360,"items":365,"search":690,"minimal":721,"duo":740,"switchNav":749,"pricingDeployment":760},{"config":346},{"href":347,"dataGaName":348,"dataGaLocation":349},"/","gitlab logo","header",{"text":351,"config":352},"Get free trial",{"href":353,"dataGaName":354,"dataGaLocation":349},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":356,"config":357},"Request a demo",{"href":358,"dataGaName":359,"dataGaLocation":349},"/sales/?contact-topic=request-demo","sales",{"text":361,"config":362},"Sign in",{"href":363,"dataGaName":364,"dataGaLocation":349},"https://gitlab.com/users/sign_in/","sign in",[366,395,493,498,612,668],{"text":367,"config":368,"menu":370},"Platform",{"dataNavLevelOne":369},"platform",{"type":371,"columns":372},"cards",[373,379,387],{"title":367,"description":374,"link":375},"The intelligent orchestration platform for DevSecOps",{"text":376,"config":377},"Explore our Platform",{"href":378,"dataGaName":369,"dataGaLocation":349},"/platform/",{"title":380,"description":381,"link":382},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":383,"config":384},"Meet GitLab Duo",{"href":385,"dataGaName":386,"dataGaLocation":349},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":388,"description":389,"link":390},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":391,"config":392},"Learn more",{"href":393,"dataGaName":394,"dataGaLocation":349},"/why-gitlab/","why gitlab",{"text":396,"left":330,"config":397,"menu":399},"Product",{"dataNavLevelOne":398},"solutions",{"type":400,"link":401,"columns":405,"feature":472},"lists",{"text":402,"config":403},"View all Solutions",{"href":404,"dataGaName":398,"dataGaLocation":349},"/solutions/",[406,428,451],{"title":407,"description":408,"link":409,"items":414},"Automation","CI/CD and automation to accelerate deployment",{"config":410},{"icon":411,"href":412,"dataGaName":413,"dataGaLocation":349},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[415,417,420,424],{"text":339,"config":416},{"href":109,"dataGaLocation":349,"dataGaName":339},{"text":380,"config":418},{"href":385,"dataGaLocation":349,"dataGaName":419},"gitlab duo agent platform - product menu",{"text":421,"config":422},"Source Code Management",{"href":423,"dataGaLocation":349,"dataGaName":421},"/solutions/source-code-management/",{"text":425,"config":426},"Automated Software Delivery",{"href":412,"dataGaLocation":349,"dataGaName":427},"Automated software delivery",{"title":429,"description":430,"link":431,"items":436},"Security","Deliver code faster without compromising security",{"config":432},{"href":433,"dataGaName":434,"dataGaLocation":349,"icon":435},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[437,441,446],{"text":438,"config":439},"Application Security Testing",{"href":433,"dataGaName":440,"dataGaLocation":349},"Application security testing",{"text":442,"config":443},"Software Supply Chain Security",{"href":444,"dataGaLocation":349,"dataGaName":445},"/solutions/supply-chain/","Software supply chain security",{"text":447,"config":448},"Software Compliance",{"href":449,"dataGaName":450,"dataGaLocation":349},"/solutions/software-compliance/","software compliance",{"title":452,"link":453,"items":458},"Measurement",{"config":454},{"icon":455,"href":456,"dataGaName":457,"dataGaLocation":349},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[459,463,467],{"text":460,"config":461},"Visibility & Measurement",{"href":456,"dataGaLocation":349,"dataGaName":462},"Visibility and Measurement",{"text":464,"config":465},"Value Stream Management",{"href":466,"dataGaLocation":349,"dataGaName":464},"/solutions/value-stream-management/",{"text":468,"config":469},"Analytics & Insights",{"href":470,"dataGaLocation":349,"dataGaName":471},"/solutions/analytics-and-insights/","Analytics and insights",{"title":473,"type":400,"items":474},"GitLab for",[475,481,487],{"text":476,"config":477},"Enterprise",{"icon":478,"href":479,"dataGaLocation":349,"dataGaName":480},"Building","/enterprise/","enterprise",{"text":482,"config":483},"Small Business",{"icon":484,"href":485,"dataGaLocation":349,"dataGaName":486},"Work","/small-business/","small business",{"text":488,"config":489},"Public Sector",{"icon":490,"href":491,"dataGaLocation":349,"dataGaName":492},"Organization","/solutions/public-sector/","public sector",{"text":494,"config":495},"Pricing",{"href":496,"dataGaName":497,"dataGaLocation":349,"dataNavLevelOne":497},"/pricing/","pricing",{"text":499,"config":500,"menu":502},"Resources",{"dataNavLevelOne":501},"resources",{"type":400,"link":503,"columns":507,"feature":601},{"text":504,"config":505},"View all resources",{"href":506,"dataGaName":501,"dataGaLocation":349},"/resources/",[508,541,568],{"title":509,"items":510},"Getting started",[511,516,521,526,531,536],{"text":512,"config":513},"Install",{"href":514,"dataGaName":515,"dataGaLocation":349},"/install/","install",{"text":517,"config":518},"Quick start guides",{"href":519,"dataGaName":520,"dataGaLocation":349},"/get-started/","quick setup checklists",{"text":522,"config":523},"Learn",{"href":524,"dataGaLocation":349,"dataGaName":525},"https://university.gitlab.com/","learn",{"text":527,"config":528},"Product documentation",{"href":529,"dataGaName":530,"dataGaLocation":349},"https://docs.gitlab.com/","product documentation",{"text":532,"config":533},"Best practice videos",{"href":534,"dataGaName":535,"dataGaLocation":349},"/getting-started-videos/","best practice videos",{"text":537,"config":538},"Integrations",{"href":539,"dataGaName":540,"dataGaLocation":349},"/integrations/","integrations",{"title":542,"items":543},"Discover",[544,549,554,559,563],{"text":545,"config":546},"Customer success stories",{"href":547,"dataGaName":548,"dataGaLocation":349},"/customers/","customer success stories",{"text":550,"config":551},"Blog",{"href":552,"dataGaName":553,"dataGaLocation":349},"/blog/","blog",{"text":555,"config":556},"Demo Hub",{"href":557,"dataGaName":558,"dataGaLocation":349},"/demo-hub/","demo hub",{"text":560,"config":561},"The Source",{"href":562,"dataGaName":553,"dataGaLocation":349},"/the-source/",{"text":564,"config":565},"Remote",{"href":566,"dataGaName":567,"dataGaLocation":349},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":569,"items":570},"Connect",[571,576,581,586,591,596],{"text":572,"config":573},"GitLab Services",{"href":574,"dataGaName":575,"dataGaLocation":349},"/services/","services",{"text":577,"config":578},"Contribute",{"href":579,"dataGaName":580,"dataGaLocation":349},"https://contributors.gitlab.com","contribute",{"text":582,"config":583},"Community",{"href":584,"dataGaName":585,"dataGaLocation":349},"/community/","community",{"text":587,"config":588},"Forum",{"href":589,"dataGaName":590,"dataGaLocation":349},"https://forum.gitlab.com/","forum",{"text":592,"config":593},"Events",{"href":594,"dataGaName":595,"dataGaLocation":349},"/events/","events",{"text":597,"config":598},"Partners",{"href":599,"dataGaName":600,"dataGaLocation":349},"/partners/","partners",{"config":602,"title":605,"text":606,"link":607},{"background":603,"textColor":604},"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":608,"config":609},"Read the latest",{"href":610,"dataGaName":611,"dataGaLocation":349},"/whats-new/","whats new",{"text":613,"config":614,"menu":616},"Company",{"dataNavLevelOne":615},"company",{"type":400,"columns":617},[618],{"items":619},[620,625,631,633,638,643,648,653,658,663],{"text":621,"config":622},"About",{"href":623,"dataGaName":624,"dataGaLocation":349},"/company/","about",{"text":626,"config":627,"footerGa":630},"Jobs",{"href":628,"dataGaName":629,"dataGaLocation":349},"/jobs/","jobs",{"dataGaName":629},{"text":592,"config":632},{"href":594,"dataGaName":595,"dataGaLocation":349},{"text":634,"config":635},"Leadership",{"href":636,"dataGaName":637,"dataGaLocation":349},"/company/team/e-group/","leadership",{"text":639,"config":640},"Handbook",{"href":641,"dataGaName":642,"dataGaLocation":349},"https://handbook.gitlab.com/","handbook",{"text":644,"config":645},"Investor relations",{"href":646,"dataGaName":647,"dataGaLocation":349},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":649,"config":650},"Trust Center",{"href":651,"dataGaName":652,"dataGaLocation":349},"/security/","trust center",{"text":654,"config":655},"AI Transparency Center",{"href":656,"dataGaName":657,"dataGaLocation":349},"/ai-transparency-center/","ai transparency center",{"text":659,"config":660},"Newsletter",{"href":661,"dataGaName":662,"dataGaLocation":349},"/company/contact/#contact-forms","newsletter",{"text":664,"config":665},"Press",{"href":666,"dataGaName":667,"dataGaLocation":349},"/press/","press",{"text":669,"config":670,"menu":671},"Contact us",{"dataNavLevelOne":615},{"type":400,"columns":672},[673],{"items":674},[675,680,685],{"text":676,"config":677},"Talk to sales",{"href":678,"dataGaName":679,"dataGaLocation":349},"/sales/","talk to sales",{"text":681,"config":682},"Support portal",{"href":683,"dataGaName":684,"dataGaLocation":349},"https://support.gitlab.com/hc/en-us","support portal",{"text":686,"config":687},"Customer portal",{"href":688,"dataGaName":689,"dataGaLocation":349},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":691,"login":692,"suggestions":699},"Close",{"text":693,"link":694},"To search repositories and projects, login to",{"text":695,"config":696},"gitlab.com",{"href":363,"dataGaName":697,"dataGaLocation":698},"search login","search",{"text":700,"default":701},"Suggestions",[702,704,708,710,714,718],{"text":380,"config":703},{"href":385,"dataGaName":380,"dataGaLocation":698},{"text":705,"config":706},"Code Suggestions (AI)",{"href":707,"dataGaName":705,"dataGaLocation":698},"/solutions/code-suggestions/",{"text":339,"config":709},{"href":109,"dataGaName":339,"dataGaLocation":698},{"text":711,"config":712},"GitLab on AWS",{"href":713,"dataGaName":711,"dataGaLocation":698},"/partners/technology-partners/aws/",{"text":715,"config":716},"GitLab on Google Cloud",{"href":717,"dataGaName":715,"dataGaLocation":698},"/partners/technology-partners/google-cloud-platform/",{"text":719,"config":720},"Why GitLab?",{"href":393,"dataGaName":719,"dataGaLocation":698},{"freeTrial":722,"mobileIcon":727,"desktopIcon":732,"secondaryButton":735},{"text":723,"config":724},"Start free trial",{"href":725,"dataGaName":354,"dataGaLocation":726},"https://gitlab.com/-/trials/new/","nav",{"altText":728,"config":729},"Gitlab Icon",{"src":730,"dataGaName":731,"dataGaLocation":726},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":728,"config":733},{"src":734,"dataGaName":731,"dataGaLocation":726},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":736,"config":737},"Get Started",{"href":738,"dataGaName":739,"dataGaLocation":726},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":741,"mobileIcon":745,"desktopIcon":747},{"text":742,"config":743},"Learn more about GitLab Duo",{"href":385,"dataGaName":744,"dataGaLocation":726},"gitlab duo",{"altText":728,"config":746},{"src":730,"dataGaName":731,"dataGaLocation":726},{"altText":728,"config":748},{"src":734,"dataGaName":731,"dataGaLocation":726},{"button":750,"mobileIcon":755,"desktopIcon":757},{"text":751,"config":752},"/switch",{"href":753,"dataGaName":754,"dataGaLocation":726},"#contact","switch",{"altText":728,"config":756},{"src":730,"dataGaName":731,"dataGaLocation":726},{"altText":728,"config":758},{"src":759,"dataGaName":731,"dataGaLocation":726},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":761,"mobileIcon":766,"desktopIcon":768},{"text":762,"config":763},"Back to pricing",{"href":496,"dataGaName":764,"dataGaLocation":726,"icon":765},"back to pricing","GoBack",{"altText":728,"config":767},{"src":730,"dataGaName":731,"dataGaLocation":726},{"altText":728,"config":769},{"src":734,"dataGaName":731,"dataGaLocation":726},{"title":771,"titleMobile":772,"button":773,"config":778},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":391,"config":774},{"href":775,"dataGaName":776,"dataGaLocation":777},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":779,"disabled":327},"release",{"data":781},{"text":782,"source":783,"edit":789,"contribute":794,"config":799,"items":804,"minimal":1012},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":784,"config":785},"View page source",{"href":786,"dataGaName":787,"dataGaLocation":788},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":790,"config":791},"Edit this page",{"href":792,"dataGaName":793,"dataGaLocation":788},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":795,"config":796},"Please contribute",{"href":797,"dataGaName":798,"dataGaLocation":788},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":800,"facebook":801,"youtube":802,"linkedin":803},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[805,852,904,948,980],{"title":494,"links":806,"subMenu":821},[807,811,816],{"text":808,"config":809},"View plans",{"href":496,"dataGaName":810,"dataGaLocation":788},"view plans",{"text":812,"config":813},"Why Premium?",{"href":814,"dataGaName":815,"dataGaLocation":788},"/pricing/premium/","why premium",{"text":817,"config":818},"Why Ultimate?",{"href":819,"dataGaName":820,"dataGaLocation":788},"/pricing/ultimate/","why ultimate",[822],{"title":823,"links":824},"Contact Us",[825,828,830,832,837,842,847],{"text":826,"config":827},"Contact sales",{"href":678,"dataGaName":359,"dataGaLocation":788},{"text":681,"config":829},{"href":683,"dataGaName":684,"dataGaLocation":788},{"text":686,"config":831},{"href":688,"dataGaName":689,"dataGaLocation":788},{"text":833,"config":834},"Status",{"href":835,"dataGaName":836,"dataGaLocation":788},"https://status.gitlab.com/","status",{"text":838,"config":839},"Terms of use",{"href":840,"dataGaName":841,"dataGaLocation":788},"/terms/","terms of use",{"text":843,"config":844},"Privacy statement",{"href":845,"dataGaName":846,"dataGaLocation":788},"/privacy/","privacy statement",{"text":848,"config":849},"Cookie preferences",{"dataGaName":850,"dataGaLocation":788,"id":851,"isOneTrustButton":330},"cookie preferences","ot-sdk-btn",{"title":396,"links":853,"subMenu":862},[854,858],{"text":855,"config":856},"DevSecOps platform",{"href":378,"dataGaName":857,"dataGaLocation":788},"devsecops platform",{"text":859,"config":860},"AI-Assisted Development",{"href":385,"dataGaName":861,"dataGaLocation":788},"ai-assisted development",[863],{"title":864,"links":865},"Topics",[866,870,875,880,884,889,894,899],{"text":867,"config":868},"CICD",{"href":18,"dataGaName":869,"dataGaLocation":788},"cicd",{"text":871,"config":872},"GitOps",{"href":873,"dataGaName":874,"dataGaLocation":788},"/topics/gitops/","gitops",{"text":876,"config":877},"DevOps",{"href":878,"dataGaName":879,"dataGaLocation":788},"/topics/devops/","devops",{"text":881,"config":882},"Version Control",{"href":168,"dataGaName":883,"dataGaLocation":788},"version control",{"text":885,"config":886},"DevSecOps",{"href":887,"dataGaName":888,"dataGaLocation":788},"/topics/devsecops/","devsecops",{"text":890,"config":891},"Cloud Native",{"href":892,"dataGaName":893,"dataGaLocation":788},"/topics/cloud-native/","cloud native",{"text":895,"config":896},"AI for Coding",{"href":897,"dataGaName":898,"dataGaLocation":788},"/topics/devops/ai-for-coding/","ai for coding",{"text":900,"config":901},"Agentic AI",{"href":902,"dataGaName":903,"dataGaLocation":788},"/topics/agentic-ai/","agentic ai",{"title":905,"links":906},"Solutions",[907,909,911,916,920,923,927,930,932,935,938,943],{"text":438,"config":908},{"href":433,"dataGaName":438,"dataGaLocation":788},{"text":427,"config":910},{"href":412,"dataGaName":413,"dataGaLocation":788},{"text":912,"config":913},"Agile development",{"href":914,"dataGaName":915,"dataGaLocation":788},"/solutions/agile-delivery/","agile delivery",{"text":917,"config":918},"SCM",{"href":423,"dataGaName":919,"dataGaLocation":788},"source code management",{"text":867,"config":921},{"href":109,"dataGaName":922,"dataGaLocation":788},"continuous integration & delivery",{"text":924,"config":925},"Value stream management",{"href":466,"dataGaName":926,"dataGaLocation":788},"value stream management",{"text":871,"config":928},{"href":929,"dataGaName":874,"dataGaLocation":788},"/solutions/gitops/",{"text":476,"config":931},{"href":479,"dataGaName":480,"dataGaLocation":788},{"text":933,"config":934},"Small business",{"href":485,"dataGaName":486,"dataGaLocation":788},{"text":936,"config":937},"Public sector",{"href":491,"dataGaName":492,"dataGaLocation":788},{"text":939,"config":940},"Education",{"href":941,"dataGaName":942,"dataGaLocation":788},"/solutions/education/","education",{"text":944,"config":945},"Financial services",{"href":946,"dataGaName":947,"dataGaLocation":788},"/solutions/finance/","financial services",{"title":499,"links":949},[950,952,954,956,959,961,964,966,968,970,972,974,976,978],{"text":512,"config":951},{"href":514,"dataGaName":515,"dataGaLocation":788},{"text":517,"config":953},{"href":519,"dataGaName":520,"dataGaLocation":788},{"text":522,"config":955},{"href":524,"dataGaName":525,"dataGaLocation":788},{"text":527,"config":957},{"href":529,"dataGaName":958,"dataGaLocation":788},"docs",{"text":550,"config":960},{"href":552,"dataGaName":553,"dataGaLocation":788},{"text":962,"config":963},"What's new",{"href":610,"dataGaName":611,"dataGaLocation":788},{"text":545,"config":965},{"href":547,"dataGaName":548,"dataGaLocation":788},{"text":564,"config":967},{"href":566,"dataGaName":567,"dataGaLocation":788},{"text":572,"config":969},{"href":574,"dataGaName":575,"dataGaLocation":788},{"text":577,"config":971},{"href":579,"dataGaName":580,"dataGaLocation":788},{"text":582,"config":973},{"href":584,"dataGaName":585,"dataGaLocation":788},{"text":587,"config":975},{"href":589,"dataGaName":590,"dataGaLocation":788},{"text":592,"config":977},{"href":594,"dataGaName":595,"dataGaLocation":788},{"text":597,"config":979},{"href":599,"dataGaName":600,"dataGaLocation":788},{"title":613,"links":981},[982,984,986,988,990,992,996,1001,1003,1005,1007],{"text":621,"config":983},{"href":623,"dataGaName":615,"dataGaLocation":788},{"text":626,"config":985},{"href":628,"dataGaName":629,"dataGaLocation":788},{"text":634,"config":987},{"href":636,"dataGaName":637,"dataGaLocation":788},{"text":639,"config":989},{"href":641,"dataGaName":642,"dataGaLocation":788},{"text":644,"config":991},{"href":646,"dataGaName":647,"dataGaLocation":788},{"text":993,"config":994},"Sustainability",{"href":995,"dataGaName":993,"dataGaLocation":788},"/sustainability/",{"text":997,"config":998},"Diversity, inclusion and belonging (DIB)",{"href":999,"dataGaName":1000,"dataGaLocation":788},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":649,"config":1002},{"href":651,"dataGaName":652,"dataGaLocation":788},{"text":659,"config":1004},{"href":661,"dataGaName":662,"dataGaLocation":788},{"text":664,"config":1006},{"href":666,"dataGaName":667,"dataGaLocation":788},{"text":1008,"config":1009},"Modern Slavery Transparency Statement",{"href":1010,"dataGaName":1011,"dataGaLocation":788},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1013},[1014,1017,1020],{"text":1015,"config":1016},"Terms",{"href":840,"dataGaName":841,"dataGaLocation":788},{"text":1018,"config":1019},"Cookies",{"dataGaName":850,"dataGaLocation":788,"id":851,"isOneTrustButton":330},{"text":1021,"config":1022},"Privacy",{"href":845,"dataGaName":846,"dataGaLocation":788},[1024],{"id":1025,"title":7,"body":326,"config":1026,"content":1028,"description":326,"extension":1032,"meta":1033,"navigation":330,"path":1034,"seo":1035,"stem":1036,"__hash__":1037},"blogAuthors/en-us/blog/authors/chrissie-buchanan.yml",{"template":1027},"BlogAuthor",{"name":7,"config":1029},{"headshot":1030,"ctfId":1031},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","cbuchanan","yml",{},"/en-us/blog/authors/chrissie-buchanan",{},"en-us/blog/authors/chrissie-buchanan","VUaqNs-WRatnVN614U2QKvMKVSh6PynpH3T0SHM4ayU",[1039,1047,1055],{"title":1040,"description":1041,"heroImage":1042,"category":322,"date":1043,"authors":1044,"slug":1046,"externalUrl":326},"How we overhauled GitLab navigation","Users weren't getting what they needed from our navigation. Here are the steps we took to turn that experience around.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682884/Blog/Hero%20Images/navigation.jpg","2023-08-15",[1045],"Ashley Knobloch","navigation-research-blog-post",{"title":1048,"description":1049,"heroImage":1050,"category":322,"date":1051,"authors":1052,"slug":1054,"externalUrl":326},"Beautifying our UI: Giving GitLab build features a fresh look","Get an inside look at how we are improving the usability of GitLab build features with multiple visual design improvements.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682807/Blog/Hero%20Images/beautify.jpg","2023-07-05",[1053],"Veethika Mishra","beautifying-of-our-ui",{"title":1056,"description":1057,"heroImage":1058,"category":322,"date":1059,"authors":1060,"slug":1062,"externalUrl":326},"4 best practices leading orgs to release software faster","GitLab's 2023 Global DevSecOps Survey illuminates the strategies that organizations deploying more frequently have in common.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663908/Blog/Hero%20Images/2023-devsecops-report-blog-banner2.png","2023-06-08",[1061],"Kristina Weis","best-practices-leading-orgs-to-release-software-faster",{"promotions":1064},[1065,1079,1091,1103],{"id":1066,"categories":1067,"header":1069,"text":1070,"button":1071,"image":1076},"ai-modernization",[1068],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1072,"config":1073},"Get your AI maturity score",{"href":1074,"dataGaName":1075,"dataGaLocation":553},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1077},{"src":1078},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1080,"categories":1081,"header":1083,"text":1070,"button":1084,"image":1088},"devops-modernization",[1082,888],"product","Are you just managing tools or shipping innovation?",{"text":1085,"config":1086},"Get your DevOps maturity score",{"href":1087,"dataGaName":1075,"dataGaLocation":553},"/assessments/devops-modernization-assessment/",{"config":1089},{"src":1090},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1092,"categories":1093,"header":1095,"text":1070,"button":1096,"image":1100},"security-modernization",[1094],"security","Are you trading speed for security?",{"text":1097,"config":1098},"Get your security maturity score",{"href":1099,"dataGaName":1075,"dataGaLocation":553},"/assessments/security-modernization-assessment/",{"config":1101},{"src":1102},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1104,"paths":1105,"header":1108,"text":1109,"button":1110,"image":1115},"github-azure-migration",[1106,1107],"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":1111,"config":1112},"See how GitLab compares to GitHub",{"href":1113,"dataGaName":1114,"dataGaLocation":553},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1116},{"src":1090},{"header":1118,"blurb":1119,"button":1120,"secondaryButton":1125},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1121,"config":1122},"Get your free trial",{"href":1123,"dataGaName":354,"dataGaLocation":1124},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":826,"config":1126},{"href":678,"dataGaName":359,"dataGaLocation":1124},1786803774726]