[{"data":1,"prerenderedAt":1519},["ShallowReactive",2],{"/blog/2019-year-in-review":3,"navigation-en-us":743,"banner-en-us":1165,"footer-en-us":1175,"blog-post-authors-en-us-Sara Kassabian":1420,"blog-related-posts-en-us-2019-year-in-review":1434,"blog-promotions-en-us":1456,"next-steps-en-us":1509},{"id":4,"title":5,"authors":6,"body":8,"category":723,"date":724,"description":725,"extension":726,"externalUrl":727,"faq":727,"featured":728,"heroImage":729,"meta":730,"navigation":149,"path":731,"seo":732,"slug":736,"stem":737,"tags":738,"template":741,"updatedDate":727,"__hash__":742},"blogPosts/en-us/blog/2019-year-in-review.md","Highlights from 2019",[7],"Sara Kassabian",{"type":9,"value":10,"toc":696},"minimark",[11,15,24,46,51,54,59,68,72,81,85,93,106,110,117,152,155,161,165,173,191,195,206,210,215,228,234,238,250,253,277,281,284,312,316,325,329,337,345,366,370,373,401,404,408,411,415,418,437,440,444,447,455,459,472,478,481,513,517,526,565,583,587,595,687,690,693],[12,13,14],"p",{},"At GitLab, we’re going into 2020 with big energy. 🙌 Take a look at the 2019 milestones that laid a solid foundation for the company as we gear up for our IPO, planned for November 2020.",[12,16,17,18,23],{},"In 2019, our company more than doubled in size as we hired more talented folks, many of whom helped us move our product closer to being a true ",[19,20,22],"a",{"href":21},"/topics/multicloud/","multicloud solution",". But the core of GitLab is our open source community, and in 2019 our community made plenty of valuable contributions in merge requests, feature fixes, and security checks! Explore some of the 2019 highlights for the GitLab product, community, and company.",[25,26,27,34,40],"ul",{},[28,29,30],"li",{},[19,31,33],{"href":32},"#product","Product highlights",[28,35,36],{},[19,37,39],{"href":38},"#community","Community highlights",[28,41,42],{},[19,43,45],{"href":44},"#company","Company highlights",[47,48,50],"h2",{"id":49},"product","Product",[12,52,53],{},"We introduced many exciting new features to help our GitLab product better serve the needs of our users.",[55,56,58],"h3",{"id":57},"multi-level-child-epics-make-project-management-a-breeze","Multi-level child epics make project management a breeze",[12,60,61,62,67],{},"Before our 11.7 release, epics were limited to a two-level structure, but ",[19,63,66],{"href":64,"rel":65},"https://docs.gitlab.com/releases/#multi-level-child-epics",[],"in 11.7 we introduced multi-level child epics",", so you can now have an ancestor epic that contains up to five levels of child epics, as well as issues. This feature allows longer-term work strategies to be defined in ancestor epics, with strategy and deliverables being articulated in the lower tiers.",[55,69,71],{"id":70},"auto-renew-certs-using-lets-encrypt","Auto-renew certs using Let’s Encrypt",[12,73,74,75,80],{},"One of our most highly-requested features was the introduction of a custom domain in GitLab pages ",[19,76,79],{"href":77,"rel":78},"https://gitlab.com/gitlab-org/gitlab-foss/issues/28996",[],"that automates HTTPS certificate renewals."," We delivered in 12.1 by integrating with Let’s Encrypt to transition this process from being manual to automated.",[55,82,84],{"id":83},"totally-buggin-track-errors-using-sentry","Totally buggin’: Track errors using Sentry",[12,86,87,88,92],{},"Using Sentry, our users can get more visibility into their entire stack, making it faster and easier to identify and remediate bugs in your code. ",[19,89,91],{"href":90},"/blog/sentry-integration-blog-post/","Read this blog post to dive deeper into how our integration with Sentry works"," or watch the video below.",[94,95,98,99],"figure",{"className":96},[97],"video_container","\n  ",[100,101,105],"iframe",{"src":102,"frameBorder":103,"allowFullScreen":104},"https://www.youtube-nocookie.com/embed/KUHk1uuXWhA","0","true"," ",[55,107,109],{"id":108},"accelerate-delivery-using-scoped-labels","Accelerate delivery using scoped labels",[12,111,112,116],{},[19,113,115],{"href":114},"/blog/issue-labels-can-now-be-scoped/","We created the scoped labels in 11.10",", making it simpler for users to customize workflows and accelerate delivery.",[118,119,122,105,146],"div",{"className":120},[121],"center",[123,124,127,141,142],"blockquote",{"className":125},[126],"twitter-tweet",[12,128,131,132,135,137,138],{"lang":129,"dir":130},"en","ltr","Great news, friends! Issue labels can now be scoped 😍",[133,134],"br",{},[133,136],{},"Scoped Labels make it possible for teams to define a basic custom field that avoids confusion and cleans up issue lists ✔️",[19,139,140],{"href":140},"https://t.co/U2T9BBIgBs","— GitLab (@gitlab) ",[19,143,145],{"href":144},"https://twitter.com/gitlab/status/1141782522013134848?ref_src=twsrc%5Etfw","June 20, 2019",[147,148],"script",{"async":149,"src":150,"charSet":151},true,"https://platform.twitter.com/widgets.js","utf-8",[12,153,154],{},"Watch the video below to see two use cases for scoped labels.",[94,156,98,158],{"className":157},[97],[100,159,105],{"src":160,"frameBorder":103,"allowFullScreen":104},"https://www.youtube-nocookie.com/embed/4BCBby6du3c",[55,162,164],{"id":163},"merge-trains-keep-your-pipeline-running","Merge trains keep your pipeline running",[12,166,167,168,172],{},"Broken master is a developer’s worst enemy. We want our users to keep their pipelines moving, which is ",[19,169,171],{"href":170},"/blog/how-to-avoid-broken-master-with-pipelines-for-merge-requests/","why we created merge trains to keep your pipelines in the green",".",[118,174,176,105,189],{"className":175},[121],[123,177,179,141,185],{"className":178},[126],[12,180,181,182],{"lang":129,"dir":130},"GitLab 12.1 released with Parallel Merge Trains, Merge Requests for Confidential Issues, Automated Let’s Encrypt certificates for GitLab Pages and much more! Enjoy! 🎉🙌🚀",[19,183,184],{"href":184},"https://t.co/oRp7YF9mmo",[19,186,188],{"href":187},"https://twitter.com/gitlab/status/1153319179266809857?ref_src=twsrc%5Etfw","July 22, 2019",[147,190],{"async":149,"src":150,"charSet":151},[55,192,194],{"id":193},"ce-and-ee-are-in-a-single-codebase","CE and EE are in a single codebase",[12,196,197,198,202,203,172],{},"In August, ",[19,199,201],{"href":200},"/blog/a-single-codebase-for-gitlab-community-and-enterprise-edition/","we officially migrated GitLab CE and GitLab EE to a single codebase",". Keeping CE and EE in their own repositories made the development process more complex than was necessary, and by moving to a single codebase we simplified a problem that was becoming more complicated over time. A migration of this size wasn’t a simple process. ",[19,204,205],{"href":200},"Our blog post dives into more detail about how we managed the migration",[55,207,209],{"id":208},"multicloud-this-is-the-way","Multicloud: This is the way",[211,212,214],"h4",{"id":213},"create-and-deploy-to-an-eks-cluster","Create and deploy to an EKS cluster",[12,216,217,218,223,224,172],{},"GitLab is designed to be cloud-agnostic and in the spirit of multicloud, ",[19,219,222],{"href":220,"rel":221},"https://docs.gitlab.com/releases/#easily-create-and-deploy-to-an-eks-cluster",[],"we added an EKS integration to 12.5",". Now, users can create and deploy an EKS cluster by selecting the EKS option on the GitLab clusters page rather than having to build the integration from scratch. Watch the demo below to see how it works, or ",[19,225,227],{"href":220,"rel":226},[],"read our documentation page",[94,229,98,231],{"className":230},[97],[100,232,105],{"src":233,"frameBorder":103,"allowFullScreen":104},"https://www.youtube-nocookie.com/embed/DGvPEJUnXME",[211,235,237],{"id":236},"deploy-to-any-cloud-with-gitlab-cicd","Deploy to any cloud with GitLab CI/CD",[12,239,240,241,245,246,249],{},"Learn more about how ",[19,242,244],{"href":243},"/blog/gitlab-ci-cd-is-for-multi-cloud/","GitLab CI/CD makes it possible to work with any cloud provider",". Study our ",[19,247,248],{"href":21},"Guide to the Cloud"," to become an expert in this topic.",[12,251,252],{},"Other notable accomplishments include:",[25,254,255,261,269],{},[28,256,257,172],{},[19,258,260],{"href":259},"/blog/gitlab-journey-to-cicd/","How our delivery team used the “boring solution” to migrate GitLab.com to CI/CD",[28,262,263,264,172],{},"The introduction of ",[19,265,268],{"href":266,"rel":267},"https://docs.gitlab.com/user/instance/clusters/",[],"instance-level Kubernetes",[28,270,271,276],{},[19,272,275],{"href":273,"rel":274},"https://docs.gitlab.com/releases/#directed-acyclic-graphs-dag-for-gitlab-pipelines",[],"DAG pipelines",", which allow certain jobs to be completed in a non-consecutive order between stages.",[47,278,280],{"id":279},"community","Community",[12,282,283],{},"In 2019, GitLab benefitted from a highly engaged and collaborative community of contributors.",[118,285,287,105,310],{"className":286},[121],[123,288,290,141,306],{"className":289},[126],[12,291,292,293,295,297,298,105,302],{"lang":129,"dir":130},"While GitLab the company is growing quickly, we also have over 2500 contributors to GitLab from the wider community. ",[133,294],{},[133,296],{},"Those contributors are providing over 200 contributions per month 💥",[19,299,301],{"href":300},"https://twitter.com/hashtag/GitLabCommit?src=hash&ref_src=twsrc%5Etfw","#GitLabCommit",[19,303,305],{"href":304},"https://t.co/qrSCCAKtpE","pic.twitter.com/qrSCCAKtpE",[19,307,309],{"href":308},"https://twitter.com/gitlab/status/1181889359492108295?ref_src=twsrc%5Etfw","October 9, 2019",[147,311],{"async":149,"src":150,"charSet":151},[55,313,315],{"id":314},"code-contributions-soared","Code contributions soared",[12,317,318,319,324],{},"In 2018, we had 447 code contributors create 1,608 merge requests. ",[19,320,323],{"href":321,"rel":322},"https://gitlab.com/gitlab-com/www-gitlab-com/issues/6075#note_262597822",[],"Our numbers nearly doubled in 2019"," with an astounding 861 code contributors creating 2,437 merge requests (as of Dec. 18 2019). This marks more than 50% year-over-year growth in merged MRs for the wider community. We can’t wait to see what you folks have in store for us in 2020!",[47,326,328],{"id":327},"one-million-merge-requests","One million merge requests",[12,330,331,332,336],{},"In March 2019, our community broke more records by ",[19,333,335],{"href":334},"/blog/1-mil-merge-requests/","submitting one million merge requests to GitLab.com"," in a month. In fact, the number of new MRs per active user increased by 40% year-over-year (May 2019 vs. May 2018).",[12,338,339,340,344],{},"The majority of these contributions were part of private projects on GitLab.com, indicating there is the potential for ",[341,342,343],"em",{},"even more growth"," in the New Year if our contributors resolve to submit to some of our public projects too.",[118,346,348,105,364],{"className":347},[121],[123,349,351,141,360],{"className":350},[126],[12,352,353,356,357],{"lang":129,"dir":130},[19,354,355],{"href":355},"https://t.co/C4mACZpLWf"," received a record 1 million merge requests in March 2019 😱",[19,358,359],{"href":359},"https://t.co/Ii57tcSbq1",[19,361,363],{"href":362},"https://twitter.com/gitlab/status/1136714388914757633?ref_src=twsrc%5Etfw","June 6, 2019",[147,365],{"async":149,"src":150,"charSet":151},[55,367,369],{"id":368},"our-bug-bounty-program-goes-public","Our bug bounty program goes public",[12,371,372],{},"Our bug bounty program launched in 2017 but was limited to the top 10% of HackerOne contributors. But in 2019, we elected to accelerate our efforts by making the program public – and our community did not disappoint! In the first seven weeks of our program, 42% of all reporters were first-time contributors and 64% of all of the reports we received came from folks new to the GitLab program.",[118,374,376,105,399],{"className":375},[121],[123,377,379,394,395],{"className":378},[126],[12,380,381,382,386,387,105,390],{"lang":129,"dir":130},"\"We’re proud to see the benefits and value being generated by our bug bounty program and specifically our reporter community.\"",[19,383,385],{"href":384},"https://twitter.com/gitlab?ref_src=twsrc%5Etfw","@GitLab"," shares where their team is succeeding and focusing on improvement after moving to a public program. Fantastic job!",[19,388,389],{"href":389},"https://t.co/iZ7rYqKmmq",[19,391,393],{"href":392},"https://t.co/7WcrPWIMbQ","pic.twitter.com/7WcrPWIMbQ","— HackerOne (@Hacker0x01) ",[19,396,398],{"href":397},"https://twitter.com/Hacker0x01/status/1154159537596899329?ref_src=twsrc%5Etfw","July 24, 2019",[147,400],{"async":149,"src":150,"charSet":151},[12,402,403],{},"Thank you to all of our reporters who helped make our product and platform even more secure.",[47,405,407],{"id":406},"company","Company",[12,409,410],{},"Just like any start-up, GitLab came from humble beginnings, but in 2019 we’ve had more and more organizations adopt our tool as their all-in-one DevOps solution, and our team, funding, and corporate events have grown to accommodate the demand.",[55,412,414],{"id":413},"gitlab-valued-at-275-billion","GitLab valued at $2.75 billion",[12,416,417],{},"Our plans for a 2020 IPO are off to a roaring start! 🚀 In less than a year, we’ve more than doubled our company’s valuation from $1.1 billion in 2018 to $2.75 billion in 2019, after raising $268 million in September 2019. The money comes from existing funders such as Goldman Sachs as well as nine investors that are brand new to GitLab.",[118,419,421,105,435],{"className":420},[121],[123,422,424,430,431],{"className":423},[126],[12,425,426,427],{"lang":129,"dir":130},"GitLab (YC W15) hauls in $268M Series E on 2.75B valuation. Congrats to the GitLab team! ",[19,428,429],{"href":429},"https://t.co/8tfxnfu3YN","— Y Combinator (@ycombinator) ",[19,432,434],{"href":433},"https://twitter.com/ycombinator/status/1173998823850545157?ref_src=twsrc%5Etfw","September 17, 2019",[147,436],{"async":149,"src":150,"charSet":151},[12,438,439],{},"We’ll be reinvesting all of that money into making our DevOps platform the best in its class, bolstering its monitoring, security, and planning capabilities.",[55,441,443],{"id":442},"were-always-hiring","We’re (always) hiring!",[12,445,446],{},"Since the company launched in 2015, our headcount has more than doubled each year. At the end of January 2019, we had roughly 452 team members at GitLab but as of Jan. 9, 2020 we've grown to 1,137 team members and counting.",[12,448,449,450,454],{},"Explosive growth in team members is exciting, but when it comes time to organize GitLab Contribute, our annual event for team members and the wider GitLab community, there simply is no cookie cutter solution for accommodating more than a thousand people. Learn more about ",[19,451,453],{"href":452},"/blog/how-we-scaled-our-summits/","how our corporate events team has mastered the persistent challenge of scale"," when planning GitLab Contribute.",[55,456,458],{"id":457},"gitlab-heads-down-to-the-bayou","GitLab heads down to the bayou",[12,460,461,462,466,467,172],{},"Speaking of Contribute... in May 2019, more than 500 GitLab team members met in New Orleans for our yearly summit. In between bites of beignets, our ",[19,463,465],{"href":464},"/blog/contribute-wrap-up/","GitLab team managed to meet, mingle, and ship lots of code",". If you missed us in NOLA, ",[19,468,471],{"href":469,"rel":470},"https://handbook.gitlab.com/handbook/company/culture/summit/",[],"catch us in Prague in 2020",[94,473,98,475],{"className":474},[97],[100,476,105],{"src":477,"frameBorder":103,"allowFullScreen":104},"https://www.youtube-nocookie.com/embed/xdtPNXtkBhE",[12,479,480],{},"Video directed and produced by Aricka Flowers",[118,482,484,105,511],{"className":483},[121],[123,485,487,506,507],{"className":486},[126],[12,488,489,490,105,493,497,498,105,502],{"lang":129,"dir":130},"Just arrived at ",[19,491,492],{"href":384},"@gitlab",[19,494,496],{"href":495},"https://twitter.com/hashtag/Contribute?src=hash&ref_src=twsrc%5Etfw","#Contribute","! Everything is so amazing the energy is palpable. Thankful to the Contribute Team for all their hard work. Onwards to dinner and debriefing with ma peeps now! ",[19,499,501],{"href":500},"https://twitter.com/hashtag/NOLA?src=hash&ref_src=twsrc%5Etfw","#NOLA",[19,503,505],{"href":504},"https://t.co/NmQ1PtLdkl","pic.twitter.com/NmQ1PtLdkl","— Priyanka Sharma (@pritianka) ",[19,508,510],{"href":509},"https://twitter.com/pritianka/status/1126243914762027008?ref_src=twsrc%5Etfw","May 8, 2019",[147,512],{"async":149,"src":150,"charSet":151},[55,514,516],{"id":515},"the-future-of-devops-starts-here","The future of DevOps starts here",[12,518,519,520,525],{},"The best way to get a bird's eye view into operations and decision-making at a rapidly growing company is to start from the highest point. GitLab pioneered a ",[19,521,524],{"href":522,"rel":523},"https://handbook.gitlab.com/handbook/ceo/shadow/",[],"new CEO shadow program"," designed to help current and future leaders of GitLab get a comprehensive overview of how our organization operates. The task of a CEO shadow is simple: Join GitLab CEO Sid Sijbrandij at his home office in San Francisco and follow him to relevant meetings (digitally and IRL).",[118,527,529,105,563],{"className":528},[121],[123,530,532,558,559],{"className":531},[126],[12,533,534,535,539,540,542,543,545,547,548,550,551,553,554],{"lang":129,"dir":130},"It's been an incredible experience getting to ",[19,536,538],{"href":537},"https://twitter.com/hashtag/contribute?src=hash&ref_src=twsrc%5Etfw","#contribute"," to ",[19,541,492],{"href":384},"! I ❤️ the story my graph tells. Now, which should I be most proud of: ",[133,544],{},[133,546],{},"1. Becoming an intermediate-level Git user",[133,549],{},"2. Participating in the CEO Shadow Program",[133,552],{},"3. Taking 5 wks of vacation last year (clear winner) ",[19,555,557],{"href":556},"https://t.co/hN7kcxEHay","pic.twitter.com/hN7kcxEHay","— Erica Lindberg (@EricaLindberg_) ",[19,560,562],{"href":561},"https://twitter.com/EricaLindberg_/status/1125885748878536705?ref_src=twsrc%5Etfw","May 7, 2019",[147,564],{"async":149,"src":150,"charSet":151},[12,566,567,571,572,577,578,172],{},[19,568,570],{"href":569},"/company/#Lindberg","Erica Lindberg",", Global Content Manager, kicked off the CEO shadow program back in April 2019, but since then we’ve had a rotating schedule of CEO shadows that can drop in and drop out with ease and efficiency. ",[19,573,576],{"href":574,"rel":575},"https://medium.com/gitlab-magazine/acquisitions-growth-curves-and-ipo-strategies-a-day-at-khosla-ventures-2762eb02c83a",[],"Get an inside look at the life of a CEO shadow by reading Erica's blog post"," and ",[19,579,582],{"href":580,"rel":581},"https://handbook.gitlab.com/handbook/ceo/shadow/#expenses-travel-and-lodging",[],"learn more about the logistics and enrollment criteria",[55,584,586],{"id":585},"gitlab-launches-commit-our-first-user-conference","GitLab launches Commit, our first user conference",[12,588,589,590,594],{},"🥳 Contribute is for our team members and community but ",[19,591,593],{"href":592},"/events/","GitLab Commit"," is all about our users. We kicked off Commit in London and Brooklyn, inviting GitLab users to join us for a day of DevOps inspiration and learning.",[118,596,598,105,640,642,105,663,665,105,685],{"className":597},[121],[123,599,601,636,637],{"className":600},[126],[12,602,603,604,608,609,613,614,618,619,623,624,628,629,631,632],{"lang":129,"dir":130},"Hot take: Auto ",[19,605,607],{"href":606},"https://twitter.com/hashtag/DevOps?src=hash&ref_src=twsrc%5Etfw","#DevOps"," cures shell script madness. And ",[19,610,612],{"href":611},"https://twitter.com/hashtag/GitOps?src=hash&ref_src=twsrc%5Etfw","#GitOps"," is just another way to say git is the source of truth. Wisdom from ",[19,615,617],{"href":616},"https://twitter.com/digitalocean?ref_src=twsrc%5Etfw","@digitalocean"," Developer Relations Mgr. ",[19,620,622],{"href":621},"https://twitter.com/eddiezane?ref_src=twsrc%5Etfw","@eddiezane"," & ",[19,625,627],{"href":626},"https://twitter.com/NMFinancial?ref_src=twsrc%5Etfw","@NMFinancial"," Senior Engineers Kyle Persohn, & Sean Corkum ",[19,630,492],{"href":384}," Commit. ",[19,633,635],{"href":634},"https://t.co/4YI5WvMRzD","pic.twitter.com/4YI5WvMRzD","— The New Stack (@thenewstack) ",[19,638,434],{"href":639},"https://twitter.com/thenewstack/status/1174035665803186176?ref_src=twsrc%5Etfw",[147,641],{"async":149,"src":150,"charSet":151},[123,643,645,658,659],{"className":644},[126],[12,646,647,648,650,651,653,654],{"lang":129,"dir":130},"I started speaking at conferences 11 years ago, and that's the time I had to wait for an opportunity to present my first talk in English. Thanks ",[19,649,492],{"href":384}," for having me at ",[19,652,301],{"href":300}," last week, for amazing days in London. So much learning, new friends and good memories. ",[19,655,657],{"href":656},"https://t.co/OOchLmelpe","pic.twitter.com/OOchLmelpe","— Mario García (@mariogmd) ",[19,660,662],{"href":661},"https://twitter.com/mariogmd/status/1183450205280186368?ref_src=twsrc%5Etfw","October 13, 2019",[147,664],{"async":149,"src":150,"charSet":151},[123,666,668,506,681],{"className":667},[126],[12,669,670,671,673,674,676,677],{"lang":129,"dir":130},"And that’s a wrap! Thank you, London for an amazing time at ",[19,672,301],{"href":300},". We loved hosting our European ",[19,675,492],{"href":384}," conference with you. Can’t wait to visit again and bring back some GitLab love to the land of the Brits 💜🇬🇧🧡 ",[19,678,680],{"href":679},"https://t.co/XLZiB2Dgm1","pic.twitter.com/XLZiB2Dgm1",[19,682,684],{"href":683},"https://twitter.com/pritianka/status/1182254193324806151?ref_src=twsrc%5Etfw","October 10, 2019",[147,686],{"async":149,"src":150,"charSet":151},[12,688,689],{},"Join us in San Francisco on January 14 for our first Commit event of 2020.",[12,691,692],{},"Thank you to all the folks that contributed to making 2019 such a smashing success and cheers to what’s in store for 2020!",[12,694,695],{},"Also, thank you to Social Marketing Manager Wil Spillane for helping source the social media posts featured in this blog post.",{"title":697,"searchDepth":698,"depth":698,"links":699},"",2,[700,710,713,716],{"id":49,"depth":698,"text":50,"children":701},[702,704,705,706,707,708,709],{"id":57,"depth":703,"text":58},3,{"id":70,"depth":703,"text":71},{"id":83,"depth":703,"text":84},{"id":108,"depth":703,"text":109},{"id":163,"depth":703,"text":164},{"id":193,"depth":703,"text":194},{"id":208,"depth":703,"text":209},{"id":279,"depth":698,"text":280,"children":711},[712],{"id":314,"depth":703,"text":315},{"id":327,"depth":698,"text":328,"children":714},[715],{"id":368,"depth":703,"text":369},{"id":406,"depth":698,"text":407,"children":717},[718,719,720,721,722],{"id":413,"depth":703,"text":414},{"id":442,"depth":703,"text":443},{"id":457,"depth":703,"text":458},{"id":515,"depth":703,"text":516},{"id":585,"depth":703,"text":586},"news","2020-01-09","2019 was a big year for GitLab! We look back on our achievements and growth from the past year.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665651/Blog/Hero%20Images/gitlab-holiday-2019-blog-cover.png",{},"/en-us/blog/2019-year-in-review",{"title":5,"description":725,"ogTitle":5,"ogDescription":725,"noIndex":728,"ogImage":729,"ogUrl":733,"ogSiteName":734,"ogType":735,"canonicalUrls":733},"https://about.gitlab.com/blog/2019-year-in-review","https://about.gitlab.com","article","2019-year-in-review","en-us/blog/2019-year-in-review",[739,279,740],"features","inside GitLab","BlogPost","ojZggjBn36_iqfi8ai-GncZEd5kC454poyE7oGcmPAo",{"logo":744,"freeTrial":749,"sales":754,"login":759,"items":764,"search":1085,"minimal":1116,"duo":1135,"switchNav":1144,"pricingDeployment":1155},{"config":745},{"href":746,"dataGaName":747,"dataGaLocation":748},"/","gitlab logo","header",{"text":750,"config":751},"Get free trial",{"href":752,"dataGaName":753,"dataGaLocation":748},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":755,"config":756},"Request a demo",{"href":757,"dataGaName":758,"dataGaLocation":748},"/sales/?contact-topic=request-demo","sales",{"text":760,"config":761},"Sign in",{"href":762,"dataGaName":763,"dataGaLocation":748},"https://gitlab.com/users/sign_in/","sign in",[765,794,893,898,1009,1063],{"text":766,"config":767,"menu":769},"Platform",{"dataNavLevelOne":768},"platform",{"type":770,"columns":771},"cards",[772,778,786],{"title":766,"description":773,"link":774},"The intelligent orchestration platform for DevSecOps",{"text":775,"config":776},"Explore our Platform",{"href":777,"dataGaName":768,"dataGaLocation":748},"/platform/",{"title":779,"description":780,"link":781},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":782,"config":783},"Meet GitLab Duo",{"href":784,"dataGaName":785,"dataGaLocation":748},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":787,"description":788,"link":789},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":790,"config":791},"Learn more",{"href":792,"dataGaName":793,"dataGaLocation":748},"/why-gitlab/","why gitlab",{"text":50,"left":149,"config":795,"menu":797},{"dataNavLevelOne":796},"solutions",{"type":798,"link":799,"columns":803,"feature":872},"lists",{"text":800,"config":801},"View all Solutions",{"href":802,"dataGaName":796,"dataGaLocation":748},"/solutions/",[804,828,851],{"title":805,"description":806,"link":807,"items":812},"Automation","CI/CD and automation to accelerate deployment",{"config":808},{"icon":809,"href":810,"dataGaName":811,"dataGaLocation":748},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[813,817,820,824],{"text":814,"config":815},"CI/CD",{"href":816,"dataGaLocation":748,"dataGaName":814},"/solutions/continuous-integration/",{"text":779,"config":818},{"href":784,"dataGaLocation":748,"dataGaName":819},"gitlab duo agent platform - product menu",{"text":821,"config":822},"Source Code Management",{"href":823,"dataGaLocation":748,"dataGaName":821},"/solutions/source-code-management/",{"text":825,"config":826},"Automated Software Delivery",{"href":810,"dataGaLocation":748,"dataGaName":827},"Automated software delivery",{"title":829,"description":830,"link":831,"items":836},"Security","Deliver code faster without compromising security",{"config":832},{"href":833,"dataGaName":834,"dataGaLocation":748,"icon":835},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[837,841,846],{"text":838,"config":839},"Application Security Testing",{"href":833,"dataGaName":840,"dataGaLocation":748},"Application security testing",{"text":842,"config":843},"Software Supply Chain Security",{"href":844,"dataGaLocation":748,"dataGaName":845},"/solutions/supply-chain/","Software supply chain security",{"text":847,"config":848},"Software Compliance",{"href":849,"dataGaName":850,"dataGaLocation":748},"/solutions/software-compliance/","software compliance",{"title":852,"link":853,"items":858},"Measurement",{"config":854},{"icon":855,"href":856,"dataGaName":857,"dataGaLocation":748},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[859,863,867],{"text":860,"config":861},"Visibility & Measurement",{"href":856,"dataGaLocation":748,"dataGaName":862},"Visibility and Measurement",{"text":864,"config":865},"Value Stream Management",{"href":866,"dataGaLocation":748,"dataGaName":864},"/solutions/value-stream-management/",{"text":868,"config":869},"Analytics & Insights",{"href":870,"dataGaLocation":748,"dataGaName":871},"/solutions/analytics-and-insights/","Analytics and insights",{"title":873,"type":798,"items":874},"GitLab for",[875,881,887],{"text":876,"config":877},"Enterprise",{"icon":878,"href":879,"dataGaLocation":748,"dataGaName":880},"Building","/enterprise/","enterprise",{"text":882,"config":883},"Small Business",{"icon":884,"href":885,"dataGaLocation":748,"dataGaName":886},"Work","/small-business/","small business",{"text":888,"config":889},"Public Sector",{"icon":890,"href":891,"dataGaLocation":748,"dataGaName":892},"Organization","/solutions/public-sector/","public sector",{"text":894,"config":895},"Pricing",{"href":896,"dataGaName":897,"dataGaLocation":748,"dataNavLevelOne":897},"/pricing/","pricing",{"text":899,"config":900,"menu":902},"Resources",{"dataNavLevelOne":901},"resources",{"type":798,"link":903,"columns":907,"feature":998},{"text":904,"config":905},"View all resources",{"href":906,"dataGaName":901,"dataGaLocation":748},"/resources/",[908,941,968],{"title":909,"items":910},"Getting started",[911,916,921,926,931,936],{"text":912,"config":913},"Install",{"href":914,"dataGaName":915,"dataGaLocation":748},"/install/","install",{"text":917,"config":918},"Quick start guides",{"href":919,"dataGaName":920,"dataGaLocation":748},"/get-started/","quick setup checklists",{"text":922,"config":923},"Learn",{"href":924,"dataGaLocation":748,"dataGaName":925},"https://university.gitlab.com/","learn",{"text":927,"config":928},"Product documentation",{"href":929,"dataGaName":930,"dataGaLocation":748},"https://docs.gitlab.com/","product documentation",{"text":932,"config":933},"Best practice videos",{"href":934,"dataGaName":935,"dataGaLocation":748},"/getting-started-videos/","best practice videos",{"text":937,"config":938},"Integrations",{"href":939,"dataGaName":940,"dataGaLocation":748},"/integrations/","integrations",{"title":942,"items":943},"Discover",[944,949,954,959,963],{"text":945,"config":946},"Customer success stories",{"href":947,"dataGaName":948,"dataGaLocation":748},"/customers/","customer success stories",{"text":950,"config":951},"Blog",{"href":952,"dataGaName":953,"dataGaLocation":748},"/blog/","blog",{"text":955,"config":956},"Demo Hub",{"href":957,"dataGaName":958,"dataGaLocation":748},"/demo-hub/","demo hub",{"text":960,"config":961},"The Source",{"href":962,"dataGaName":953,"dataGaLocation":748},"/the-source/",{"text":964,"config":965},"Remote",{"href":966,"dataGaName":967,"dataGaLocation":748},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":969,"items":970},"Connect",[971,976,981,984,989,993],{"text":972,"config":973},"GitLab Services",{"href":974,"dataGaName":975,"dataGaLocation":748},"/services/","services",{"text":977,"config":978},"Contribute",{"href":979,"dataGaName":980,"dataGaLocation":748},"https://contributors.gitlab.com","contribute",{"text":280,"config":982},{"href":983,"dataGaName":279,"dataGaLocation":748},"/community/",{"text":985,"config":986},"Forum",{"href":987,"dataGaName":988,"dataGaLocation":748},"https://forum.gitlab.com/","forum",{"text":990,"config":991},"Events",{"href":592,"dataGaName":992,"dataGaLocation":748},"events",{"text":994,"config":995},"Partners",{"href":996,"dataGaName":997,"dataGaLocation":748},"/partners/","partners",{"config":999,"title":1002,"text":1003,"link":1004},{"background":1000,"textColor":1001},"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":1005,"config":1006},"Read the latest",{"href":1007,"dataGaName":1008,"dataGaLocation":748},"/whats-new/","whats new",{"text":407,"config":1010,"menu":1011},{"dataNavLevelOne":406},{"type":798,"columns":1012},[1013],{"items":1014},[1015,1020,1026,1028,1033,1038,1043,1048,1053,1058],{"text":1016,"config":1017},"About",{"href":1018,"dataGaName":1019,"dataGaLocation":748},"/company/","about",{"text":1021,"config":1022,"footerGa":1025},"Jobs",{"href":1023,"dataGaName":1024,"dataGaLocation":748},"/jobs/","jobs",{"dataGaName":1024},{"text":990,"config":1027},{"href":592,"dataGaName":992,"dataGaLocation":748},{"text":1029,"config":1030},"Leadership",{"href":1031,"dataGaName":1032,"dataGaLocation":748},"/company/team/e-group/","leadership",{"text":1034,"config":1035},"Handbook",{"href":1036,"dataGaName":1037,"dataGaLocation":748},"https://handbook.gitlab.com/","handbook",{"text":1039,"config":1040},"Investor relations",{"href":1041,"dataGaName":1042,"dataGaLocation":748},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1044,"config":1045},"Trust Center",{"href":1046,"dataGaName":1047,"dataGaLocation":748},"/security/","trust center",{"text":1049,"config":1050},"AI Transparency Center",{"href":1051,"dataGaName":1052,"dataGaLocation":748},"/ai-transparency-center/","ai transparency center",{"text":1054,"config":1055},"Newsletter",{"href":1056,"dataGaName":1057,"dataGaLocation":748},"/company/contact/#contact-forms","newsletter",{"text":1059,"config":1060},"Press",{"href":1061,"dataGaName":1062,"dataGaLocation":748},"/press/","press",{"text":1064,"config":1065,"menu":1066},"Contact us",{"dataNavLevelOne":406},{"type":798,"columns":1067},[1068],{"items":1069},[1070,1075,1080],{"text":1071,"config":1072},"Talk to sales",{"href":1073,"dataGaName":1074,"dataGaLocation":748},"/sales/","talk to sales",{"text":1076,"config":1077},"Support portal",{"href":1078,"dataGaName":1079,"dataGaLocation":748},"https://support.gitlab.com/hc/en-us","support portal",{"text":1081,"config":1082},"Customer portal",{"href":1083,"dataGaName":1084,"dataGaLocation":748},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1086,"login":1087,"suggestions":1094},"Close",{"text":1088,"link":1089},"To search repositories and projects, login to",{"text":1090,"config":1091},"gitlab.com",{"href":762,"dataGaName":1092,"dataGaLocation":1093},"search login","search",{"text":1095,"default":1096},"Suggestions",[1097,1099,1103,1105,1109,1113],{"text":779,"config":1098},{"href":784,"dataGaName":779,"dataGaLocation":1093},{"text":1100,"config":1101},"Code Suggestions (AI)",{"href":1102,"dataGaName":1100,"dataGaLocation":1093},"/solutions/code-suggestions/",{"text":814,"config":1104},{"href":816,"dataGaName":814,"dataGaLocation":1093},{"text":1106,"config":1107},"GitLab on AWS",{"href":1108,"dataGaName":1106,"dataGaLocation":1093},"/partners/technology-partners/aws/",{"text":1110,"config":1111},"GitLab on Google Cloud",{"href":1112,"dataGaName":1110,"dataGaLocation":1093},"/partners/technology-partners/google-cloud-platform/",{"text":1114,"config":1115},"Why GitLab?",{"href":792,"dataGaName":1114,"dataGaLocation":1093},{"freeTrial":1117,"mobileIcon":1122,"desktopIcon":1127,"secondaryButton":1130},{"text":1118,"config":1119},"Start free trial",{"href":1120,"dataGaName":753,"dataGaLocation":1121},"https://gitlab.com/-/trials/new/","nav",{"altText":1123,"config":1124},"Gitlab Icon",{"src":1125,"dataGaName":1126,"dataGaLocation":1121},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1123,"config":1128},{"src":1129,"dataGaName":1126,"dataGaLocation":1121},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1131,"config":1132},"Get Started",{"href":1133,"dataGaName":1134,"dataGaLocation":1121},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":1136,"mobileIcon":1140,"desktopIcon":1142},{"text":1137,"config":1138},"Learn more about GitLab Duo",{"href":784,"dataGaName":1139,"dataGaLocation":1121},"gitlab duo",{"altText":1123,"config":1141},{"src":1125,"dataGaName":1126,"dataGaLocation":1121},{"altText":1123,"config":1143},{"src":1129,"dataGaName":1126,"dataGaLocation":1121},{"button":1145,"mobileIcon":1150,"desktopIcon":1152},{"text":1146,"config":1147},"/switch",{"href":1148,"dataGaName":1149,"dataGaLocation":1121},"#contact","switch",{"altText":1123,"config":1151},{"src":1125,"dataGaName":1126,"dataGaLocation":1121},{"altText":1123,"config":1153},{"src":1154,"dataGaName":1126,"dataGaLocation":1121},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1156,"mobileIcon":1161,"desktopIcon":1163},{"text":1157,"config":1158},"Back to pricing",{"href":896,"dataGaName":1159,"dataGaLocation":1121,"icon":1160},"back to pricing","GoBack",{"altText":1123,"config":1162},{"src":1125,"dataGaName":1126,"dataGaLocation":1121},{"altText":1123,"config":1164},{"src":1129,"dataGaName":1126,"dataGaLocation":1121},{"title":1166,"titleMobile":1167,"button":1168,"config":1173},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":790,"config":1169},{"href":1170,"dataGaName":1171,"dataGaLocation":1172},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":1174,"disabled":728},"release",{"data":1176},{"text":1177,"source":1178,"edit":1184,"contribute":1189,"config":1194,"items":1199,"minimal":1409},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":1179,"config":1180},"View page source",{"href":1181,"dataGaName":1182,"dataGaLocation":1183},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1185,"config":1186},"Edit this page",{"href":1187,"dataGaName":1188,"dataGaLocation":1183},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1190,"config":1191},"Please contribute",{"href":1192,"dataGaName":1193,"dataGaLocation":1183},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1195,"facebook":1196,"youtube":1197,"linkedin":1198},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1200,1247,1301,1345,1377],{"title":894,"links":1201,"subMenu":1216},[1202,1206,1211],{"text":1203,"config":1204},"View plans",{"href":896,"dataGaName":1205,"dataGaLocation":1183},"view plans",{"text":1207,"config":1208},"Why Premium?",{"href":1209,"dataGaName":1210,"dataGaLocation":1183},"/pricing/premium/","why premium",{"text":1212,"config":1213},"Why Ultimate?",{"href":1214,"dataGaName":1215,"dataGaLocation":1183},"/pricing/ultimate/","why ultimate",[1217],{"title":1218,"links":1219},"Contact Us",[1220,1223,1225,1227,1232,1237,1242],{"text":1221,"config":1222},"Contact sales",{"href":1073,"dataGaName":758,"dataGaLocation":1183},{"text":1076,"config":1224},{"href":1078,"dataGaName":1079,"dataGaLocation":1183},{"text":1081,"config":1226},{"href":1083,"dataGaName":1084,"dataGaLocation":1183},{"text":1228,"config":1229},"Status",{"href":1230,"dataGaName":1231,"dataGaLocation":1183},"https://status.gitlab.com/","status",{"text":1233,"config":1234},"Terms of use",{"href":1235,"dataGaName":1236,"dataGaLocation":1183},"/terms/","terms of use",{"text":1238,"config":1239},"Privacy statement",{"href":1240,"dataGaName":1241,"dataGaLocation":1183},"/privacy/","privacy statement",{"text":1243,"config":1244},"Cookie preferences",{"dataGaName":1245,"dataGaLocation":1183,"id":1246,"isOneTrustButton":149},"cookie preferences","ot-sdk-btn",{"title":50,"links":1248,"subMenu":1257},[1249,1253],{"text":1250,"config":1251},"DevSecOps platform",{"href":777,"dataGaName":1252,"dataGaLocation":1183},"devsecops platform",{"text":1254,"config":1255},"AI-Assisted Development",{"href":784,"dataGaName":1256,"dataGaLocation":1183},"ai-assisted development",[1258],{"title":1259,"links":1260},"Topics",[1261,1266,1271,1276,1281,1286,1291,1296],{"text":1262,"config":1263},"CICD",{"href":1264,"dataGaName":1265,"dataGaLocation":1183},"/topics/ci-cd/","cicd",{"text":1267,"config":1268},"GitOps",{"href":1269,"dataGaName":1270,"dataGaLocation":1183},"/topics/gitops/","gitops",{"text":1272,"config":1273},"DevOps",{"href":1274,"dataGaName":1275,"dataGaLocation":1183},"/topics/devops/","devops",{"text":1277,"config":1278},"Version Control",{"href":1279,"dataGaName":1280,"dataGaLocation":1183},"/topics/version-control/","version control",{"text":1282,"config":1283},"DevSecOps",{"href":1284,"dataGaName":1285,"dataGaLocation":1183},"/topics/devsecops/","devsecops",{"text":1287,"config":1288},"Cloud Native",{"href":1289,"dataGaName":1290,"dataGaLocation":1183},"/topics/cloud-native/","cloud native",{"text":1292,"config":1293},"AI for Coding",{"href":1294,"dataGaName":1295,"dataGaLocation":1183},"/topics/devops/ai-for-coding/","ai for coding",{"text":1297,"config":1298},"Agentic AI",{"href":1299,"dataGaName":1300,"dataGaLocation":1183},"/topics/agentic-ai/","agentic ai",{"title":1302,"links":1303},"Solutions",[1304,1306,1308,1313,1317,1320,1324,1327,1329,1332,1335,1340],{"text":838,"config":1305},{"href":833,"dataGaName":838,"dataGaLocation":1183},{"text":827,"config":1307},{"href":810,"dataGaName":811,"dataGaLocation":1183},{"text":1309,"config":1310},"Agile development",{"href":1311,"dataGaName":1312,"dataGaLocation":1183},"/solutions/agile-delivery/","agile delivery",{"text":1314,"config":1315},"SCM",{"href":823,"dataGaName":1316,"dataGaLocation":1183},"source code management",{"text":1262,"config":1318},{"href":816,"dataGaName":1319,"dataGaLocation":1183},"continuous integration & delivery",{"text":1321,"config":1322},"Value stream management",{"href":866,"dataGaName":1323,"dataGaLocation":1183},"value stream management",{"text":1267,"config":1325},{"href":1326,"dataGaName":1270,"dataGaLocation":1183},"/solutions/gitops/",{"text":876,"config":1328},{"href":879,"dataGaName":880,"dataGaLocation":1183},{"text":1330,"config":1331},"Small business",{"href":885,"dataGaName":886,"dataGaLocation":1183},{"text":1333,"config":1334},"Public sector",{"href":891,"dataGaName":892,"dataGaLocation":1183},{"text":1336,"config":1337},"Education",{"href":1338,"dataGaName":1339,"dataGaLocation":1183},"/solutions/education/","education",{"text":1341,"config":1342},"Financial services",{"href":1343,"dataGaName":1344,"dataGaLocation":1183},"/solutions/finance/","financial services",{"title":899,"links":1346},[1347,1349,1351,1353,1356,1358,1361,1363,1365,1367,1369,1371,1373,1375],{"text":912,"config":1348},{"href":914,"dataGaName":915,"dataGaLocation":1183},{"text":917,"config":1350},{"href":919,"dataGaName":920,"dataGaLocation":1183},{"text":922,"config":1352},{"href":924,"dataGaName":925,"dataGaLocation":1183},{"text":927,"config":1354},{"href":929,"dataGaName":1355,"dataGaLocation":1183},"docs",{"text":950,"config":1357},{"href":952,"dataGaName":953,"dataGaLocation":1183},{"text":1359,"config":1360},"What's new",{"href":1007,"dataGaName":1008,"dataGaLocation":1183},{"text":945,"config":1362},{"href":947,"dataGaName":948,"dataGaLocation":1183},{"text":964,"config":1364},{"href":966,"dataGaName":967,"dataGaLocation":1183},{"text":972,"config":1366},{"href":974,"dataGaName":975,"dataGaLocation":1183},{"text":977,"config":1368},{"href":979,"dataGaName":980,"dataGaLocation":1183},{"text":280,"config":1370},{"href":983,"dataGaName":279,"dataGaLocation":1183},{"text":985,"config":1372},{"href":987,"dataGaName":988,"dataGaLocation":1183},{"text":990,"config":1374},{"href":592,"dataGaName":992,"dataGaLocation":1183},{"text":994,"config":1376},{"href":996,"dataGaName":997,"dataGaLocation":1183},{"title":407,"links":1378},[1379,1381,1383,1385,1387,1389,1393,1398,1400,1402,1404],{"text":1016,"config":1380},{"href":1018,"dataGaName":406,"dataGaLocation":1183},{"text":1021,"config":1382},{"href":1023,"dataGaName":1024,"dataGaLocation":1183},{"text":1029,"config":1384},{"href":1031,"dataGaName":1032,"dataGaLocation":1183},{"text":1034,"config":1386},{"href":1036,"dataGaName":1037,"dataGaLocation":1183},{"text":1039,"config":1388},{"href":1041,"dataGaName":1042,"dataGaLocation":1183},{"text":1390,"config":1391},"Sustainability",{"href":1392,"dataGaName":1390,"dataGaLocation":1183},"/sustainability/",{"text":1394,"config":1395},"Diversity, inclusion and belonging (DIB)",{"href":1396,"dataGaName":1397,"dataGaLocation":1183},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1044,"config":1399},{"href":1046,"dataGaName":1047,"dataGaLocation":1183},{"text":1054,"config":1401},{"href":1056,"dataGaName":1057,"dataGaLocation":1183},{"text":1059,"config":1403},{"href":1061,"dataGaName":1062,"dataGaLocation":1183},{"text":1405,"config":1406},"Modern Slavery Transparency Statement",{"href":1407,"dataGaName":1408,"dataGaLocation":1183},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1410},[1411,1414,1417],{"text":1412,"config":1413},"Terms",{"href":1235,"dataGaName":1236,"dataGaLocation":1183},{"text":1415,"config":1416},"Cookies",{"dataGaName":1245,"dataGaLocation":1183,"id":1246,"isOneTrustButton":149},{"text":1418,"config":1419},"Privacy",{"href":1240,"dataGaName":1241,"dataGaLocation":1183},[1421],{"id":1422,"title":7,"body":727,"config":1423,"content":1425,"description":727,"extension":1428,"meta":1429,"navigation":149,"path":1430,"seo":1431,"stem":1432,"__hash__":1433},"blogAuthors/en-us/blog/authors/sara-kassabian.yml",{"template":1424},"BlogAuthor",{"name":7,"config":1426},{"headshot":697,"ctfId":1427},"skassabian","yml",{},"/en-us/blog/authors/sara-kassabian",{},"en-us/blog/authors/sara-kassabian","6cCCPpjzkCDfb77tMVCyG8_FImRVQXA2VCMyiAjhFX0",[1435,1443,1450],{"title":1436,"description":1437,"heroImage":1438,"category":723,"date":1439,"authors":1440,"slug":1442,"externalUrl":727},"GitLab named a Leader in the 2026 Gartner® Magic Quadrant™ for DevSecOps Platforms","Agents made coding fast. GitLab is the Intelligent Orchestration Platform for DevSecOps that brings speed with control for the rest of the software lifecycle.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-06-17",[1441],"Manav Khurana","gitlab-leader-2026-gartner-mq-devsecops-platforms",{"title":1444,"description":1445,"heroImage":1446,"category":723,"date":1439,"authors":1447,"slug":1449,"externalUrl":727},"GitLab and Capgemini accelerate DevSecOps transformation","The global alliance helps organizations modernize software delivery, secure their supply chain, and bring AI into development workflows.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781279411/n3pkmddd2eswa8qbu06z.png",[1448],"Alex Picker","gitlab-and-capgemini-global-alliance-partnership",{"title":1451,"description":1452,"heroImage":1453,"category":723,"date":1439,"authors":1454,"slug":1455,"externalUrl":727},"Introducing the 2026 EMEA GitLab Partner Award winners","Learn about the EMEA partners who made an outstanding impact over the past year.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781608381/biycl2ib2kpsbspjlac7.png",[1448],"2026-emea-gitlab-partner-awards",{"promotions":1457},[1458,1472,1483,1495],{"id":1459,"categories":1460,"header":1462,"text":1463,"button":1464,"image":1469},"ai-modernization",[1461],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1465,"config":1466},"Get your AI maturity score",{"href":1467,"dataGaName":1468,"dataGaLocation":953},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1470},{"src":1471},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1473,"categories":1474,"header":1475,"text":1463,"button":1476,"image":1480},"devops-modernization",[49,1285],"Are you just managing tools or shipping innovation?",{"text":1477,"config":1478},"Get your DevOps maturity score",{"href":1479,"dataGaName":1468,"dataGaLocation":953},"/assessments/devops-modernization-assessment/",{"config":1481},{"src":1482},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1484,"categories":1485,"header":1487,"text":1463,"button":1488,"image":1492},"security-modernization",[1486],"security","Are you trading speed for security?",{"text":1489,"config":1490},"Get your security maturity score",{"href":1491,"dataGaName":1468,"dataGaLocation":953},"/assessments/security-modernization-assessment/",{"config":1493},{"src":1494},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1496,"paths":1497,"header":1500,"text":1501,"button":1502,"image":1507},"github-azure-migration",[1498,1499],"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":1503,"config":1504},"See how GitLab compares to GitHub",{"href":1505,"dataGaName":1506,"dataGaLocation":953},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1508},{"src":1482},{"header":1510,"blurb":1511,"button":1512,"secondaryButton":1517},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1513,"config":1514},"Get your free trial",{"href":1515,"dataGaName":753,"dataGaLocation":1516},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":1221,"config":1518},{"href":1073,"dataGaName":758,"dataGaLocation":1516},1786803760785]