[{"data":1,"prerenderedAt":1101},["ShallowReactive",2],{"/blog/gitlab-in-case-you-missed-it":3,"navigation-en-us":315,"banner-en-us":742,"footer-en-us":752,"blog-post-authors-en-us-Ivan Nemytchenko":997,"blog-related-posts-en-us-gitlab-in-case-you-missed-it":1012,"blog-promotions-en-us":1037,"next-steps-en-us":1091},{"id":4,"title":5,"authors":6,"body":8,"category":292,"date":293,"description":294,"extension":295,"externalUrl":296,"faq":296,"featured":297,"heroImage":298,"meta":299,"navigation":148,"path":306,"seo":307,"slug":311,"stem":312,"tags":296,"template":313,"updatedDate":296,"__hash__":314},"blogPosts/en-us/blog/gitlab-in-case-you-missed-it.md","GitLab: In case you missed it",[7],"Ivan Nemytchenko",{"type":9,"value":10,"toc":276},"minimark",[11,15,18,23,33,36,39,43,52,55,67,75,78,82,85,94,102,105,109,112,115,123,126,130,139,142,149,157,160,164,169,172,178,182,185,194,197,200,204,207,210,213,221,224,244,248,251,266],[12,13,14],"p",{},"I've recently joined GitLab as a Developer Advocate.\nPart of my role will be traveling to community events where I hope we'll meet in person.\nI'm also an experienced Ruby developer.\nAs a rubyist, naturally, I've heard about GitLab and even used it couple of times.",[12,16,17],{},"The first two weeks working with GitLab have been full of pleasant surprises and dispelled delusions.\nIf you haven't been following GitLab for the last two years, this post is for you.",[19,20,22],"h2",{"id":21},"gitlabcom","GitLab.com",[12,24,25,26,32],{},"You don't have to download and install GitLab nowadays.\nYou can simply ",[27,28,31],"a",{"href":29,"rel":30},"https://gitlab.com/users/sign_in",[],"sign up for GitLab.com"," and host your own repositories.\nEven the private ones.\nYes, for free and without any restrictions.\nNo, there is no catch.",[12,34,35],{},"It should be noted that repositories are actually called \"projects\".",[12,37,38],{},"And that is not the only thing that catches your eye at first.\nAs it turns out, the terminology is justified.",[19,40,42],{"id":41},"the-terminology","The terminology",[12,44,45,46,51],{},"These aren't just fancy terms to stand out from the crowd.\nI strongly recommend reading the article about ",[27,47,50],{"href":48,"rel":49},"https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/customer/gitlab-github-bitbucket-terminology-guide.md",[],"GitLab, GitHub and Bitbucket and terms comparison",", if you wish to sort out the details.\nI'd like to bring up the \"Merge requests\" topic, as it's the most controversial.",[12,53,54],{},"My initial reaction, naturally, was rejection. Most of us are accustomed to\n\"Pull requests\", so what's the big idea?\nBut then I remembered that the title \"Pull request\" never did make perfect\nsense to me because closing a pull request actually does branch merging.",[12,56,57,58,66],{},"As it turns out, there is a command ",[27,59,62],{"href":60,"rel":61},"https://git-scm.com/docs/git-request-pull",[],[63,64,65],"code",{},"git request-pull",",\nhence the feature title.",[12,68,69,70,74],{},"Pull requests have nothing in common with this git command. So, technically the correct name is \"merge request\".\n",[27,71,73],{"href":48,"rel":72},[],"Learn more"," on terminology differences, if you're interested.",[12,76,77],{},"The terminology was just a part of the deal.\nWhen reading the documentation, I discovered something called \"omnibus\" and\nfound some mysterious \"runners\" and \"shared runners\" in the settings.\nBut first things first.\nRunners are connected to CI.\nOmnibus is related to GitLab installation on your own server.",[19,79,81],{"id":80},"continuous-integration-ci","Continuous Integration (CI)",[12,83,84],{},"Continuous Integration is a best practice in software development.\nFor example, a CI server runs your tests every time you push changes to the repository.",[12,86,87,88,93],{},"A lot of companies have a separate CI service but in GitLab, ",[27,89,92],{"href":90,"rel":91},"https://docs.gitlab.com/ci/",[],"CI is embedded",".",[12,95,96,97,93],{},"If you had to manually connect two services before, it just works on its own in GitLab.\nThough you can still use other continuous integration services such as ",[27,98,101],{"href":99,"rel":100},"https://docs.gitlab.com/integration/jenkins/",[],"Jenkins",[12,103,104],{},"And it works through runners.",[19,106,108],{"id":107},"runners","Runners",[12,110,111],{},"A runner is a virtual machine that runs your tests, builds your builds or generates static files for your websites.\nGitLab.com users are able to make use of a special Shared Runners pool to simply make everything work.",[12,113,114],{},"Since the pool is shared across all projects on GitLab.com, sometimes it can\ntake a while to wait for your project's build to be processed.",[12,116,117,118,122],{},"If you are not satisfied with the Shared runners performance, you can\n",[27,119,121],{"href":120},"/blog/gitlab-runner-with-docker/","set up a runner","\non your own server and connect it to one or more projects.",[12,124,125],{},"Don't forget that you can install GitLab on your own server as well.",[19,127,129],{"id":128},"gitlab-installation-with-omnibus","GitLab installation with Omnibus",[12,131,132,133,138],{},"In the past, GitLab was installed manually.\nNow you can install and update the service from packages thanks to Omnibus.\n",[27,134,137],{"href":135,"rel":136},"https://docs.gitlab.com/omnibus/",[],"Omnibus"," is a tool developed by Chef\nthat helps to create installation packages for complex software with a lot of\ncomponents for various platforms.",[12,140,141],{},"Any installation using Omnibus lasts for 2-6 minutes tops, depending on your server performance.\nThis is what GitLab installation looks like on Ubuntu 14.04 using a relatively slow VPS with 2Gb running memory:",[143,144],"script",{"type":145,"src":146,"id":147,"async":148},"text/javascript","https://asciinema.org/a/39151.js","asciicast-39151",true,[12,150,151,152],{},"Hint: in case you'd prefer not to mess with console installation and updates at\nall, you can simply rent a GitLab server on ",[27,153,156],{"href":154,"rel":155},"https://githost.io/",[],"Githost.io",[12,158,159],{},"Both Omnibus and built-in CI are just a portion of what is being done to make developers' jobs easier.\nLet us review a few features.",[19,161,163],{"id":162},"small-features-that-make-a-difference","Small features that make a difference",[165,166,168],"h3",{"id":167},"merge-when-build-succeeds","Merge when build succeeds",[12,170,171],{},"With GitLab, you don't have to wait for your build to turn green to finally merge the branch.\nYou can simply ask GitLab to do that for you.",[12,173,174],{},[175,176],"img",{"alt":168,"src":177},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404829/site/Content%20Images/automerge.jpg",[165,179,181],{"id":180},"publishing-with-gitlab-pages","Publishing with GitLab Pages",[12,183,184],{},"GitLab Pages runs on top of the built-in CI.\nThanks to the feature, you can host websites created by any static site generators on GitLab.",[12,186,187,188,193],{},"Fork a repo from ",[27,189,192],{"href":190,"rel":191},"https://gitlab.com/groups/gitlab-examples?utf8=%E2%9C%93&filter_projects=pages-",[],"GitLab examples","\nor figure out GitLab CI settings to forget all about the manual static generation.\nYou simply push your changes to the repository and GitLab generates and deploys everything on its own.",[12,195,196],{},"Custom CNAME and TLS are supported.",[12,198,199],{},"These kinds of features have become possible due to the synergy between system components.\nThere's much more coming.",[19,201,203],{"id":202},"gitlab-direction","GitLab Direction",[12,205,206],{},"Please don't be surprised once a crashed build creates a TODO automatically or GitLab introduces built-in chat.",[12,208,209],{},"If you want to know where GitLab is heading, keep an eye on the [Direction page.\nThis includes not only the short term objectives for the next release, but also the long-range vision.",[211,212],"hr",{},[12,214,215,216,93],{},"Hopefully, this article has helped you to fill in the gaps in understanding what GitLab is now.\nI'm planning to write two more articles: about migrating personal projects to GitLab and about contributing to GitLab.\nStay tuned and ",[27,217,220],{"href":218,"rel":219},"https://twitter.com/inemation",[],"follow me on Twitter",[12,222,223],{},"I'm always happy to answer your questions in comments or personally.\nOver the next several weeks I will be speaking at the following Ukrainian Ruby-meetups, where we can catch up:",[225,226,227,236],"ul",{},[228,229,230,235],"li",{},[27,231,234],{"href":232,"rel":233},"https://www.facebook.com/events/406794219490854/",[],"Ruby Meditation, Kiev"," (March 18)",[228,237,238,243],{},[27,239,242],{"href":240,"rel":241},"https://www.facebook.com/pivorak/",[],"Pivorak, Lviv"," (March 26)",[19,245,247],{"id":246},"join-our-webcast-about-gitlab-ci","Join our webcast about GitLab CI.",[12,249,250],{},"I mentioned Gitlab CI a few times in this blog post. If you're interested,\nwe'll have a live webcast all about GitLab CI.",[225,252,253,256,259],{},[228,254,255],{},"Date: Thursday, April 14, 2016",[228,257,258],{},"Time: 5pm (17:00) UTC; 12pm EST; 9am PST",[228,260,261,262],{},"[Register here]",[263,264,265],"span",{},"webcast",[12,267,268,269,271,272],{},"Can't make these times? Register anyway, and we'll send you a link to watch later.\n",[263,270,265],{},": ",[27,273,274],{"href":274,"rel":275},"http://page.gitlab.com/apr-2016-gitlab-intro-ci-webcast.html",[],{"title":277,"searchDepth":278,"depth":278,"links":279},"",2,[280,281,282,283,284,285,290,291],{"id":21,"depth":278,"text":22},{"id":41,"depth":278,"text":42},{"id":80,"depth":278,"text":81},{"id":107,"depth":278,"text":108},{"id":128,"depth":278,"text":129},{"id":162,"depth":278,"text":163,"children":286},[287,289],{"id":167,"depth":288,"text":168},3,{"id":180,"depth":288,"text":181},{"id":202,"depth":278,"text":203},{"id":246,"depth":278,"text":247},"insights","2016-03-14","The first two weeks working with GitLab have been full of pleasant surprises and dispelled delusions. If you haven't been following GitLab for the last two years, this post is for you.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684623/Blog/Hero%20Images/key-concepts.jpg",{"excerpt":300},{"type":9,"value":301},[302,304],[12,303,14],{},[12,305,17],{},"/en-us/blog/gitlab-in-case-you-missed-it",{"title":5,"description":294,"ogTitle":5,"ogDescription":294,"noIndex":297,"ogImage":298,"ogUrl":308,"ogSiteName":309,"ogType":310,"canonicalUrls":308},"https://about.gitlab.com/blog/gitlab-in-case-you-missed-it","https://about.gitlab.com","article","gitlab-in-case-you-missed-it","en-us/blog/gitlab-in-case-you-missed-it","BlogPost","G6DMEb36Ejj1bQz0kVUgun6TLU9plRNBwb6Bg3ImJGA",{"logo":316,"freeTrial":321,"sales":326,"login":331,"items":336,"search":662,"minimal":693,"duo":712,"switchNav":721,"pricingDeployment":732},{"config":317},{"href":318,"dataGaName":319,"dataGaLocation":320},"/","gitlab logo","header",{"text":322,"config":323},"Get free trial",{"href":324,"dataGaName":325,"dataGaLocation":320},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":327,"config":328},"Request a demo",{"href":329,"dataGaName":330,"dataGaLocation":320},"/sales/?contact-topic=request-demo","sales",{"text":332,"config":333},"Sign in",{"href":334,"dataGaName":335,"dataGaLocation":320},"https://gitlab.com/users/sign_in/","sign in",[337,365,465,470,584,640],{"text":338,"config":339,"menu":341},"Platform",{"dataNavLevelOne":340},"platform",{"type":342,"columns":343},"cards",[344,350,358],{"title":338,"description":345,"link":346},"The intelligent orchestration platform for DevSecOps",{"text":347,"config":348},"Explore our Platform",{"href":349,"dataGaName":340,"dataGaLocation":320},"/platform/",{"title":351,"description":352,"link":353},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":354,"config":355},"Meet GitLab Duo",{"href":356,"dataGaName":357,"dataGaLocation":320},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":359,"description":360,"link":361},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":73,"config":362},{"href":363,"dataGaName":364,"dataGaLocation":320},"/why-gitlab/","why gitlab",{"text":366,"left":148,"config":367,"menu":369},"Product",{"dataNavLevelOne":368},"solutions",{"type":370,"link":371,"columns":375,"feature":444},"lists",{"text":372,"config":373},"View all Solutions",{"href":374,"dataGaName":368,"dataGaLocation":320},"/solutions/",[376,400,423],{"title":377,"description":378,"link":379,"items":384},"Automation","CI/CD and automation to accelerate deployment",{"config":380},{"icon":381,"href":382,"dataGaName":383,"dataGaLocation":320},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[385,389,392,396],{"text":386,"config":387},"CI/CD",{"href":388,"dataGaLocation":320,"dataGaName":386},"/solutions/continuous-integration/",{"text":351,"config":390},{"href":356,"dataGaLocation":320,"dataGaName":391},"gitlab duo agent platform - product menu",{"text":393,"config":394},"Source Code Management",{"href":395,"dataGaLocation":320,"dataGaName":393},"/solutions/source-code-management/",{"text":397,"config":398},"Automated Software Delivery",{"href":382,"dataGaLocation":320,"dataGaName":399},"Automated software delivery",{"title":401,"description":402,"link":403,"items":408},"Security","Deliver code faster without compromising security",{"config":404},{"href":405,"dataGaName":406,"dataGaLocation":320,"icon":407},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[409,413,418],{"text":410,"config":411},"Application Security Testing",{"href":405,"dataGaName":412,"dataGaLocation":320},"Application security testing",{"text":414,"config":415},"Software Supply Chain Security",{"href":416,"dataGaLocation":320,"dataGaName":417},"/solutions/supply-chain/","Software supply chain security",{"text":419,"config":420},"Software Compliance",{"href":421,"dataGaName":422,"dataGaLocation":320},"/solutions/software-compliance/","software compliance",{"title":424,"link":425,"items":430},"Measurement",{"config":426},{"icon":427,"href":428,"dataGaName":429,"dataGaLocation":320},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[431,435,439],{"text":432,"config":433},"Visibility & Measurement",{"href":428,"dataGaLocation":320,"dataGaName":434},"Visibility and Measurement",{"text":436,"config":437},"Value Stream Management",{"href":438,"dataGaLocation":320,"dataGaName":436},"/solutions/value-stream-management/",{"text":440,"config":441},"Analytics & Insights",{"href":442,"dataGaLocation":320,"dataGaName":443},"/solutions/analytics-and-insights/","Analytics and insights",{"title":445,"type":370,"items":446},"GitLab for",[447,453,459],{"text":448,"config":449},"Enterprise",{"icon":450,"href":451,"dataGaLocation":320,"dataGaName":452},"Building","/enterprise/","enterprise",{"text":454,"config":455},"Small Business",{"icon":456,"href":457,"dataGaLocation":320,"dataGaName":458},"Work","/small-business/","small business",{"text":460,"config":461},"Public Sector",{"icon":462,"href":463,"dataGaLocation":320,"dataGaName":464},"Organization","/solutions/public-sector/","public sector",{"text":466,"config":467},"Pricing",{"href":468,"dataGaName":469,"dataGaLocation":320,"dataNavLevelOne":469},"/pricing/","pricing",{"text":471,"config":472,"menu":474},"Resources",{"dataNavLevelOne":473},"resources",{"type":370,"link":475,"columns":479,"feature":573},{"text":476,"config":477},"View all resources",{"href":478,"dataGaName":473,"dataGaLocation":320},"/resources/",[480,513,540],{"title":481,"items":482},"Getting started",[483,488,493,498,503,508],{"text":484,"config":485},"Install",{"href":486,"dataGaName":487,"dataGaLocation":320},"/install/","install",{"text":489,"config":490},"Quick start guides",{"href":491,"dataGaName":492,"dataGaLocation":320},"/get-started/","quick setup checklists",{"text":494,"config":495},"Learn",{"href":496,"dataGaLocation":320,"dataGaName":497},"https://university.gitlab.com/","learn",{"text":499,"config":500},"Product documentation",{"href":501,"dataGaName":502,"dataGaLocation":320},"https://docs.gitlab.com/","product documentation",{"text":504,"config":505},"Best practice videos",{"href":506,"dataGaName":507,"dataGaLocation":320},"/getting-started-videos/","best practice videos",{"text":509,"config":510},"Integrations",{"href":511,"dataGaName":512,"dataGaLocation":320},"/integrations/","integrations",{"title":514,"items":515},"Discover",[516,521,526,531,535],{"text":517,"config":518},"Customer success stories",{"href":519,"dataGaName":520,"dataGaLocation":320},"/customers/","customer success stories",{"text":522,"config":523},"Blog",{"href":524,"dataGaName":525,"dataGaLocation":320},"/blog/","blog",{"text":527,"config":528},"Demo Hub",{"href":529,"dataGaName":530,"dataGaLocation":320},"/demo-hub/","demo hub",{"text":532,"config":533},"The Source",{"href":534,"dataGaName":525,"dataGaLocation":320},"/the-source/",{"text":536,"config":537},"Remote",{"href":538,"dataGaName":539,"dataGaLocation":320},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":541,"items":542},"Connect",[543,548,553,558,563,568],{"text":544,"config":545},"GitLab Services",{"href":546,"dataGaName":547,"dataGaLocation":320},"/services/","services",{"text":549,"config":550},"Contribute",{"href":551,"dataGaName":552,"dataGaLocation":320},"https://contributors.gitlab.com","contribute",{"text":554,"config":555},"Community",{"href":556,"dataGaName":557,"dataGaLocation":320},"/community/","community",{"text":559,"config":560},"Forum",{"href":561,"dataGaName":562,"dataGaLocation":320},"https://forum.gitlab.com/","forum",{"text":564,"config":565},"Events",{"href":566,"dataGaName":567,"dataGaLocation":320},"/events/","events",{"text":569,"config":570},"Partners",{"href":571,"dataGaName":572,"dataGaLocation":320},"/partners/","partners",{"config":574,"title":577,"text":578,"link":579},{"background":575,"textColor":576},"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":580,"config":581},"Read the latest",{"href":582,"dataGaName":583,"dataGaLocation":320},"/whats-new/","whats new",{"text":585,"config":586,"menu":588},"Company",{"dataNavLevelOne":587},"company",{"type":370,"columns":589},[590],{"items":591},[592,597,603,605,610,615,620,625,630,635],{"text":593,"config":594},"About",{"href":595,"dataGaName":596,"dataGaLocation":320},"/company/","about",{"text":598,"config":599,"footerGa":602},"Jobs",{"href":600,"dataGaName":601,"dataGaLocation":320},"/jobs/","jobs",{"dataGaName":601},{"text":564,"config":604},{"href":566,"dataGaName":567,"dataGaLocation":320},{"text":606,"config":607},"Leadership",{"href":608,"dataGaName":609,"dataGaLocation":320},"/company/team/e-group/","leadership",{"text":611,"config":612},"Handbook",{"href":613,"dataGaName":614,"dataGaLocation":320},"https://handbook.gitlab.com/","handbook",{"text":616,"config":617},"Investor relations",{"href":618,"dataGaName":619,"dataGaLocation":320},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":621,"config":622},"Trust Center",{"href":623,"dataGaName":624,"dataGaLocation":320},"/security/","trust center",{"text":626,"config":627},"AI Transparency Center",{"href":628,"dataGaName":629,"dataGaLocation":320},"/ai-transparency-center/","ai transparency center",{"text":631,"config":632},"Newsletter",{"href":633,"dataGaName":634,"dataGaLocation":320},"/company/contact/#contact-forms","newsletter",{"text":636,"config":637},"Press",{"href":638,"dataGaName":639,"dataGaLocation":320},"/press/","press",{"text":641,"config":642,"menu":643},"Contact us",{"dataNavLevelOne":587},{"type":370,"columns":644},[645],{"items":646},[647,652,657],{"text":648,"config":649},"Talk to sales",{"href":650,"dataGaName":651,"dataGaLocation":320},"/sales/","talk to sales",{"text":653,"config":654},"Support portal",{"href":655,"dataGaName":656,"dataGaLocation":320},"https://support.gitlab.com/hc/en-us","support portal",{"text":658,"config":659},"Customer portal",{"href":660,"dataGaName":661,"dataGaLocation":320},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":663,"login":664,"suggestions":671},"Close",{"text":665,"link":666},"To search repositories and projects, login to",{"text":667,"config":668},"gitlab.com",{"href":334,"dataGaName":669,"dataGaLocation":670},"search login","search",{"text":672,"default":673},"Suggestions",[674,676,680,682,686,690],{"text":351,"config":675},{"href":356,"dataGaName":351,"dataGaLocation":670},{"text":677,"config":678},"Code Suggestions (AI)",{"href":679,"dataGaName":677,"dataGaLocation":670},"/solutions/code-suggestions/",{"text":386,"config":681},{"href":388,"dataGaName":386,"dataGaLocation":670},{"text":683,"config":684},"GitLab on AWS",{"href":685,"dataGaName":683,"dataGaLocation":670},"/partners/technology-partners/aws/",{"text":687,"config":688},"GitLab on Google Cloud",{"href":689,"dataGaName":687,"dataGaLocation":670},"/partners/technology-partners/google-cloud-platform/",{"text":691,"config":692},"Why GitLab?",{"href":363,"dataGaName":691,"dataGaLocation":670},{"freeTrial":694,"mobileIcon":699,"desktopIcon":704,"secondaryButton":707},{"text":695,"config":696},"Start free trial",{"href":697,"dataGaName":325,"dataGaLocation":698},"https://gitlab.com/-/trials/new/","nav",{"altText":700,"config":701},"Gitlab Icon",{"src":702,"dataGaName":703,"dataGaLocation":698},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":700,"config":705},{"src":706,"dataGaName":703,"dataGaLocation":698},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":708,"config":709},"Get Started",{"href":710,"dataGaName":711,"dataGaLocation":698},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":713,"mobileIcon":717,"desktopIcon":719},{"text":714,"config":715},"Learn more about GitLab Duo",{"href":356,"dataGaName":716,"dataGaLocation":698},"gitlab duo",{"altText":700,"config":718},{"src":702,"dataGaName":703,"dataGaLocation":698},{"altText":700,"config":720},{"src":706,"dataGaName":703,"dataGaLocation":698},{"button":722,"mobileIcon":727,"desktopIcon":729},{"text":723,"config":724},"/switch",{"href":725,"dataGaName":726,"dataGaLocation":698},"#contact","switch",{"altText":700,"config":728},{"src":702,"dataGaName":703,"dataGaLocation":698},{"altText":700,"config":730},{"src":731,"dataGaName":703,"dataGaLocation":698},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":733,"mobileIcon":738,"desktopIcon":740},{"text":734,"config":735},"Back to pricing",{"href":468,"dataGaName":736,"dataGaLocation":698,"icon":737},"back to pricing","GoBack",{"altText":700,"config":739},{"src":702,"dataGaName":703,"dataGaLocation":698},{"altText":700,"config":741},{"src":706,"dataGaName":703,"dataGaLocation":698},{"title":743,"titleMobile":744,"button":745,"config":750},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":73,"config":746},{"href":747,"dataGaName":748,"dataGaLocation":749},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":751,"disabled":297},"release",{"data":753},{"text":754,"source":755,"edit":761,"contribute":766,"config":771,"items":776,"minimal":986},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":756,"config":757},"View page source",{"href":758,"dataGaName":759,"dataGaLocation":760},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":762,"config":763},"Edit this page",{"href":764,"dataGaName":765,"dataGaLocation":760},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":767,"config":768},"Please contribute",{"href":769,"dataGaName":770,"dataGaLocation":760},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":772,"facebook":773,"youtube":774,"linkedin":775},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[777,824,878,922,954],{"title":466,"links":778,"subMenu":793},[779,783,788],{"text":780,"config":781},"View plans",{"href":468,"dataGaName":782,"dataGaLocation":760},"view plans",{"text":784,"config":785},"Why Premium?",{"href":786,"dataGaName":787,"dataGaLocation":760},"/pricing/premium/","why premium",{"text":789,"config":790},"Why Ultimate?",{"href":791,"dataGaName":792,"dataGaLocation":760},"/pricing/ultimate/","why ultimate",[794],{"title":795,"links":796},"Contact Us",[797,800,802,804,809,814,819],{"text":798,"config":799},"Contact sales",{"href":650,"dataGaName":330,"dataGaLocation":760},{"text":653,"config":801},{"href":655,"dataGaName":656,"dataGaLocation":760},{"text":658,"config":803},{"href":660,"dataGaName":661,"dataGaLocation":760},{"text":805,"config":806},"Status",{"href":807,"dataGaName":808,"dataGaLocation":760},"https://status.gitlab.com/","status",{"text":810,"config":811},"Terms of use",{"href":812,"dataGaName":813,"dataGaLocation":760},"/terms/","terms of use",{"text":815,"config":816},"Privacy statement",{"href":817,"dataGaName":818,"dataGaLocation":760},"/privacy/","privacy statement",{"text":820,"config":821},"Cookie preferences",{"dataGaName":822,"dataGaLocation":760,"id":823,"isOneTrustButton":148},"cookie preferences","ot-sdk-btn",{"title":366,"links":825,"subMenu":834},[826,830],{"text":827,"config":828},"DevSecOps platform",{"href":349,"dataGaName":829,"dataGaLocation":760},"devsecops platform",{"text":831,"config":832},"AI-Assisted Development",{"href":356,"dataGaName":833,"dataGaLocation":760},"ai-assisted development",[835],{"title":836,"links":837},"Topics",[838,843,848,853,858,863,868,873],{"text":839,"config":840},"CICD",{"href":841,"dataGaName":842,"dataGaLocation":760},"/topics/ci-cd/","cicd",{"text":844,"config":845},"GitOps",{"href":846,"dataGaName":847,"dataGaLocation":760},"/topics/gitops/","gitops",{"text":849,"config":850},"DevOps",{"href":851,"dataGaName":852,"dataGaLocation":760},"/topics/devops/","devops",{"text":854,"config":855},"Version Control",{"href":856,"dataGaName":857,"dataGaLocation":760},"/topics/version-control/","version control",{"text":859,"config":860},"DevSecOps",{"href":861,"dataGaName":862,"dataGaLocation":760},"/topics/devsecops/","devsecops",{"text":864,"config":865},"Cloud Native",{"href":866,"dataGaName":867,"dataGaLocation":760},"/topics/cloud-native/","cloud native",{"text":869,"config":870},"AI for Coding",{"href":871,"dataGaName":872,"dataGaLocation":760},"/topics/devops/ai-for-coding/","ai for coding",{"text":874,"config":875},"Agentic AI",{"href":876,"dataGaName":877,"dataGaLocation":760},"/topics/agentic-ai/","agentic ai",{"title":879,"links":880},"Solutions",[881,883,885,890,894,897,901,904,906,909,912,917],{"text":410,"config":882},{"href":405,"dataGaName":410,"dataGaLocation":760},{"text":399,"config":884},{"href":382,"dataGaName":383,"dataGaLocation":760},{"text":886,"config":887},"Agile development",{"href":888,"dataGaName":889,"dataGaLocation":760},"/solutions/agile-delivery/","agile delivery",{"text":891,"config":892},"SCM",{"href":395,"dataGaName":893,"dataGaLocation":760},"source code management",{"text":839,"config":895},{"href":388,"dataGaName":896,"dataGaLocation":760},"continuous integration & delivery",{"text":898,"config":899},"Value stream management",{"href":438,"dataGaName":900,"dataGaLocation":760},"value stream management",{"text":844,"config":902},{"href":903,"dataGaName":847,"dataGaLocation":760},"/solutions/gitops/",{"text":448,"config":905},{"href":451,"dataGaName":452,"dataGaLocation":760},{"text":907,"config":908},"Small business",{"href":457,"dataGaName":458,"dataGaLocation":760},{"text":910,"config":911},"Public sector",{"href":463,"dataGaName":464,"dataGaLocation":760},{"text":913,"config":914},"Education",{"href":915,"dataGaName":916,"dataGaLocation":760},"/solutions/education/","education",{"text":918,"config":919},"Financial services",{"href":920,"dataGaName":921,"dataGaLocation":760},"/solutions/finance/","financial services",{"title":471,"links":923},[924,926,928,930,933,935,938,940,942,944,946,948,950,952],{"text":484,"config":925},{"href":486,"dataGaName":487,"dataGaLocation":760},{"text":489,"config":927},{"href":491,"dataGaName":492,"dataGaLocation":760},{"text":494,"config":929},{"href":496,"dataGaName":497,"dataGaLocation":760},{"text":499,"config":931},{"href":501,"dataGaName":932,"dataGaLocation":760},"docs",{"text":522,"config":934},{"href":524,"dataGaName":525,"dataGaLocation":760},{"text":936,"config":937},"What's new",{"href":582,"dataGaName":583,"dataGaLocation":760},{"text":517,"config":939},{"href":519,"dataGaName":520,"dataGaLocation":760},{"text":536,"config":941},{"href":538,"dataGaName":539,"dataGaLocation":760},{"text":544,"config":943},{"href":546,"dataGaName":547,"dataGaLocation":760},{"text":549,"config":945},{"href":551,"dataGaName":552,"dataGaLocation":760},{"text":554,"config":947},{"href":556,"dataGaName":557,"dataGaLocation":760},{"text":559,"config":949},{"href":561,"dataGaName":562,"dataGaLocation":760},{"text":564,"config":951},{"href":566,"dataGaName":567,"dataGaLocation":760},{"text":569,"config":953},{"href":571,"dataGaName":572,"dataGaLocation":760},{"title":585,"links":955},[956,958,960,962,964,966,970,975,977,979,981],{"text":593,"config":957},{"href":595,"dataGaName":587,"dataGaLocation":760},{"text":598,"config":959},{"href":600,"dataGaName":601,"dataGaLocation":760},{"text":606,"config":961},{"href":608,"dataGaName":609,"dataGaLocation":760},{"text":611,"config":963},{"href":613,"dataGaName":614,"dataGaLocation":760},{"text":616,"config":965},{"href":618,"dataGaName":619,"dataGaLocation":760},{"text":967,"config":968},"Sustainability",{"href":969,"dataGaName":967,"dataGaLocation":760},"/sustainability/",{"text":971,"config":972},"Diversity, inclusion and belonging (DIB)",{"href":973,"dataGaName":974,"dataGaLocation":760},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":621,"config":976},{"href":623,"dataGaName":624,"dataGaLocation":760},{"text":631,"config":978},{"href":633,"dataGaName":634,"dataGaLocation":760},{"text":636,"config":980},{"href":638,"dataGaName":639,"dataGaLocation":760},{"text":982,"config":983},"Modern Slavery Transparency Statement",{"href":984,"dataGaName":985,"dataGaLocation":760},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":987},[988,991,994],{"text":989,"config":990},"Terms",{"href":812,"dataGaName":813,"dataGaLocation":760},{"text":992,"config":993},"Cookies",{"dataGaName":822,"dataGaLocation":760,"id":823,"isOneTrustButton":148},{"text":995,"config":996},"Privacy",{"href":817,"dataGaName":818,"dataGaLocation":760},[998],{"id":999,"title":7,"body":296,"config":1000,"content":1002,"description":296,"extension":1006,"meta":1007,"navigation":148,"path":1008,"seo":1009,"stem":1010,"__hash__":1011},"blogAuthors/en-us/blog/authors/ivan-nemytchenko.yml",{"template":1001},"BlogAuthor",{"name":7,"config":1003},{"headshot":1004,"ctfId":1005},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Ivan-Nemytchenko","yml",{},"/en-us/blog/authors/ivan-nemytchenko",{},"en-us/blog/authors/ivan-nemytchenko","LIveI3a-Zqab8RyZk3ijJwKPTck0i-FN_JanwQMOZr4",[1013,1021,1029],{"title":1014,"description":1015,"heroImage":1016,"category":292,"date":1017,"authors":1018,"slug":1020,"externalUrl":296},"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",[1019],"Ashley Knobloch","navigation-research-blog-post",{"title":1022,"description":1023,"heroImage":1024,"category":292,"date":1025,"authors":1026,"slug":1028,"externalUrl":296},"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",[1027],"Veethika Mishra","beautifying-of-our-ui",{"title":1030,"description":1031,"heroImage":1032,"category":292,"date":1033,"authors":1034,"slug":1036,"externalUrl":296},"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",[1035],"Kristina Weis","best-practices-leading-orgs-to-release-software-faster",{"promotions":1038},[1039,1053,1065,1077],{"id":1040,"categories":1041,"header":1043,"text":1044,"button":1045,"image":1050},"ai-modernization",[1042],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1046,"config":1047},"Get your AI maturity score",{"href":1048,"dataGaName":1049,"dataGaLocation":525},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1051},{"src":1052},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1054,"categories":1055,"header":1057,"text":1044,"button":1058,"image":1062},"devops-modernization",[1056,862],"product","Are you just managing tools or shipping innovation?",{"text":1059,"config":1060},"Get your DevOps maturity score",{"href":1061,"dataGaName":1049,"dataGaLocation":525},"/assessments/devops-modernization-assessment/",{"config":1063},{"src":1064},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1066,"categories":1067,"header":1069,"text":1044,"button":1070,"image":1074},"security-modernization",[1068],"security","Are you trading speed for security?",{"text":1071,"config":1072},"Get your security maturity score",{"href":1073,"dataGaName":1049,"dataGaLocation":525},"/assessments/security-modernization-assessment/",{"config":1075},{"src":1076},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1078,"paths":1079,"header":1082,"text":1083,"button":1084,"image":1089},"github-azure-migration",[1080,1081],"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":1085,"config":1086},"See how GitLab compares to GitHub",{"href":1087,"dataGaName":1088,"dataGaLocation":525},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1090},{"src":1064},{"header":1092,"blurb":1093,"button":1094,"secondaryButton":1099},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1095,"config":1096},"Get your free trial",{"href":1097,"dataGaName":325,"dataGaLocation":1098},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":798,"config":1100},{"href":650,"dataGaName":330,"dataGaLocation":1098},1786803750571]