[{"data":1,"prerenderedAt":1021},["ShallowReactive",2],{"/blog/5-code-review-features":3,"navigation-en-us":237,"banner-en-us":665,"footer-en-us":675,"blog-post-authors-en-us-Brendan O'Leary":918,"blog-related-posts-en-us-5-code-review-features":933,"blog-promotions-en-us":958,"next-steps-en-us":1011},{"id":4,"title":5,"authors":6,"body":8,"category":216,"date":217,"description":218,"extension":219,"externalUrl":220,"faq":220,"featured":221,"heroImage":222,"meta":223,"navigation":224,"path":225,"seo":226,"slug":230,"stem":231,"tags":232,"template":235,"updatedDate":220,"__hash__":236},"blogPosts/en-us/blog/5-code-review-features.md","How GitLab's 5 new code review features will make life easier",[7],"Brendan O'Leary",{"type":9,"value":10,"toc":203},"minimark",[11,24,29,32,40,44,47,50,55,58,71,92,107,111,142,149,153,160,166,170,173,184,187,193,197,200],[12,13,14],"p",{},[15,16,17,18,23],"em",{},"This is the second in a series of blog posts looking at the challenges of code review and the ways a DevOps platform can help. Read the ",[19,20,22],"a",{"href":21},"/blog/the-code-review-struggle-is-real-heres-what-you-need-to-know/","first post",".",[25,26,28],"h2",{"id":27},"what-is-a-code-review-and-why-is-it-important","What is a code review, and why is it important?",[12,30,31],{},"Code review can be one of the most deceivingly difficult things in delivering software faster. Given the high stakes involved, we've made some key additions to our DevOps Platform that focus on making the code review process as seamless and effective as possible. We believe the number one way to make code reviews effective is to provide context.",[12,33,34,35,39],{},"Too often we think of ",[19,36,38],{"href":37},"/topics/version-control/what-are-best-code-review-tools-features/","code review tool features"," as only \"reading\" and commenting on others' code - but what a good code reviewer does is understand the entire context of the proposed change. Context-driven code reviews should include factors like the issue that spurred on the change, how the change impacts non-obvious things like code quality, security, and performance, and whether the code is maintainable after the change is in place.",[25,41,43],{"id":42},"simplifying-code-reviews","Simplifying code reviews",[12,45,46],{},"Given all of that, we made the merge request the central point of change management and it's one of the key benefits of a DevOps Platform. Using a merge request allows code submitters and reviewers alike to have all of the information required to make the right decisions about a particular change. Making sure that everyone has the same information, and is as informed as possible about how a change will impact the project over all, leads to code reviews that are both quicker and more effective.",[12,48,49],{},"Over the last year we've added five features that help ease the code review pain. Here's a look at all of them:",[51,52,54],"h3",{"id":53},"_1-meeting-you-where-you-are","1) Meeting you where you are",[12,56,57],{},"Some of the biggest code review changes involve meeting folks where they are - and allowing for a more natural feeling code review. As engineers, we spend most of our days glued to our IDE of choice. And we're used to code not just being static words on a screen, but also interacting and running that code to check its performance and outputs. That's why GitLab has brought a truly integrated experience to your development environment.",[12,59,60],{},[61,62,63],"strong",{},[64,65,66,67],"span",{},"Here's how to get started with a ",[19,68,70],{"href":69},"/topics/devops-platform/","DevOps platform",[12,72,73,74,79,80,85,86,91],{},"If you use Visual Studio Code as your main development environment like I do, you can now ",[19,75,78],{"href":76,"rel":77},"https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow",[],"view merge requests directly in VSCode",". In addition, you can ",[19,81,84],{"href":82,"rel":83},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/342",[],"comment and see comments"," in that view as well as ",[19,87,90],{"href":88,"rel":89},"https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/63",[],"checkout the branch directly from VSCode",". This familiar environment gives you all the benefits of GitLab MRs - CI/CD, security scanning, approval workflows - without having to leave your own development environment.",[12,93,94,95,100,101,106],{},"But what if you're not at your development box? Or you don't have this particular library or project installed and running locally?  Well there's a great solution for that - ",[19,96,99],{"href":97,"rel":98},"https://gitpod.io",[],"Gitpod"," - and it also integrates directly with GitLab.  Gitpod allows you to have a working, containerized development environment in seconds. And now with GitLab 14.2, you can ",[19,102,105],{"href":103,"rel":104},"https://www.gitpod.io/blog/gitlab-mr-gitpod-integration",[],"launch a Gitpod workspace directly from the GitLab merge request",".  That means with one button in GitLab you can go from a static code review into a running application with all of the proposed changes.",[51,108,110],{"id":109},"_2-code-quality-notices-built-into-the-mr-diff","2) Code quality notices built into the MR diff",[12,112,113,114,119,120,119,125,130,131,136,137,141],{},"GitLab already brings ",[19,115,118],{"href":116,"rel":117},"https://docs.gitlab.com/ci/testing/code_quality/",[],"code quality",", ",[19,121,124],{"href":122,"rel":123},"https://docs.gitlab.com/user/application_security/",[],"security",[19,126,129],{"href":127,"rel":128},"https://docs.gitlab.com/ci/testing/load_performance_testing/",[],"performance",", and ",[19,132,135],{"href":133,"rel":134},"https://docs.gitlab.com/ci/testing/metrics_reports/",[],"other metrics"," directly into the merge request. But in GitLab 13.12, we also added the ability to see ",[19,138,140],{"href":116,"rel":139},[],"code quality notices directly in the MR diff",". This means that changes to code quality are presented right next to the offending code, making it quick and easy for reviewers to make suggestions about how to keep code quality top notch while shipping changes.",[12,143,144],{},[145,146],"img",{"alt":147,"src":148},"Code quality notice shown in-line with merge request diff","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398086/blog/Content%20Images/code_quality_mr_diff_report_v14_2.png",[51,150,152],{"id":151},"_3-file-by-file-reviews","3) File-by-file reviews",[12,154,155,156,159],{},"Sometimes with changes it is nice to use the file explorer view and be able to see changes across multiple files. Other times you might want to do a thorough pass on ",[15,157,158],{},"every"," file to ensure you didn't miss anything. Toggling between seeing all of the changed files and one file at a time is a small but valuable feature that makes code reviews easier.",[12,161,162],{},[145,163],{"alt":164,"src":165},"Animated image showing changing between show all and show one file at time view in a merge request","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397937/blog/Content%20Images/animated-single-file-review-example.gif",[51,167,169],{"id":168},"_4-check-off-a-file-as-reviewed","4) Check off a file as reviewed",[12,171,172],{},"Speaking of small but powerful features, one of my favorite features is something many would consider incredibly small.  But to that I would say - there are no small features, only small merge requests 😄!",[12,174,175],{},[61,176,177],{},[64,178,179,180],{},"How to ",[19,181,183],{"href":182},"/topics/devops/seven-tips-to-get-the-most-out-of-your-devops-platform/","get the most out of your DevOps platform",[12,185,186],{},"The ability to check off files as reviewed has become a natural part of my code review workflow - even when the code I'm reviewing might be code I wrote myself! It allows me to focus more of my review time on the biggest impact changes, ignoring smaller changes or ones that don't directly impact the biggest concerns in a review. And in every review session I use it to make sure I've ACTUALLY reviewed every file...not that any reviewer would ever leave one out 😉.",[12,188,189],{},[145,190],{"alt":191,"src":192},"Viewed check box checked and a file hidden as already reviewed","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398278/blog/Content%20Images/filed-viewed-merge-request.png",[51,194,196],{"id":195},"_5-reviewers-vs-assignee","5) Reviewers vs. Assignee",[12,198,199],{},"The last improvement to code review in our DevOps Platform is the addition of \"reviewers\" as an option in a merge request, alongside the existing choice of \"assignee.\" This can help speed up code reviews by ensuring all team members who have to sign off on a merge request are informed and consulted while also making sure there is a clear responsibility on who will take the next action on a merge request, or be the one to actually click the \"merge when pipeline succeeds\" button.",[12,201,202],{},"We hope your teams will try these new and improved DevOps Platform code review features - and we're not done yet.  We'll be shipping improvements and updates to the code review process all of the time. And because everyone can contribute you can add your own ideas and suggestions into our DevOps Platform to make code reviews less painful and more effective.",{"title":204,"searchDepth":205,"depth":205,"links":206},"",2,[207,208],{"id":27,"depth":205,"text":28},{"id":42,"depth":205,"text":43,"children":209},[210,212,213,214,215],{"id":53,"depth":211,"text":54},3,{"id":109,"depth":211,"text":110},{"id":151,"depth":211,"text":152},{"id":168,"depth":211,"text":169},{"id":195,"depth":211,"text":196},"devsecops","2021-09-09","Code reviews are hard to get right. Here are five new features in our DevOps Platform designed to streamline code reviews and provide vital context.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667400/Blog/Hero%20Images/lagos-techie-unsplash.jpg",{},true,"/en-us/blog/5-code-review-features",{"title":5,"description":218,"ogTitle":5,"ogDescription":218,"noIndex":221,"ogImage":222,"ogUrl":227,"ogSiteName":228,"ogType":229,"canonicalUrls":227},"https://about.gitlab.com/blog/5-code-review-features","https://about.gitlab.com","article","5-code-review-features","en-us/blog/5-code-review-features",[233,234],"code review","DevOps","BlogPost","LVdArIfgx7ThKdONXjjSxMP3tuCiDplokOUQWM5z_Jc",{"logo":238,"freeTrial":243,"sales":248,"login":253,"items":258,"search":585,"minimal":616,"duo":635,"switchNav":644,"pricingDeployment":655},{"config":239},{"href":240,"dataGaName":241,"dataGaLocation":242},"/","gitlab logo","header",{"text":244,"config":245},"Get free trial",{"href":246,"dataGaName":247,"dataGaLocation":242},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":249,"config":250},"Request a demo",{"href":251,"dataGaName":252,"dataGaLocation":242},"/sales/?contact-topic=request-demo","sales",{"text":254,"config":255},"Sign in",{"href":256,"dataGaName":257,"dataGaLocation":242},"https://gitlab.com/users/sign_in/","sign in",[259,288,388,393,507,563],{"text":260,"config":261,"menu":263},"Platform",{"dataNavLevelOne":262},"platform",{"type":264,"columns":265},"cards",[266,272,280],{"title":260,"description":267,"link":268},"The intelligent orchestration platform for DevSecOps",{"text":269,"config":270},"Explore our Platform",{"href":271,"dataGaName":262,"dataGaLocation":242},"/platform/",{"title":273,"description":274,"link":275},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":276,"config":277},"Meet GitLab Duo",{"href":278,"dataGaName":279,"dataGaLocation":242},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":281,"description":282,"link":283},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":284,"config":285},"Learn more",{"href":286,"dataGaName":287,"dataGaLocation":242},"/why-gitlab/","why gitlab",{"text":289,"left":224,"config":290,"menu":292},"Product",{"dataNavLevelOne":291},"solutions",{"type":293,"link":294,"columns":298,"feature":367},"lists",{"text":295,"config":296},"View all Solutions",{"href":297,"dataGaName":291,"dataGaLocation":242},"/solutions/",[299,323,346],{"title":300,"description":301,"link":302,"items":307},"Automation","CI/CD and automation to accelerate deployment",{"config":303},{"icon":304,"href":305,"dataGaName":306,"dataGaLocation":242},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[308,312,315,319],{"text":309,"config":310},"CI/CD",{"href":311,"dataGaLocation":242,"dataGaName":309},"/solutions/continuous-integration/",{"text":273,"config":313},{"href":278,"dataGaLocation":242,"dataGaName":314},"gitlab duo agent platform - product menu",{"text":316,"config":317},"Source Code Management",{"href":318,"dataGaLocation":242,"dataGaName":316},"/solutions/source-code-management/",{"text":320,"config":321},"Automated Software Delivery",{"href":305,"dataGaLocation":242,"dataGaName":322},"Automated software delivery",{"title":324,"description":325,"link":326,"items":331},"Security","Deliver code faster without compromising security",{"config":327},{"href":328,"dataGaName":329,"dataGaLocation":242,"icon":330},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[332,336,341],{"text":333,"config":334},"Application Security Testing",{"href":328,"dataGaName":335,"dataGaLocation":242},"Application security testing",{"text":337,"config":338},"Software Supply Chain Security",{"href":339,"dataGaLocation":242,"dataGaName":340},"/solutions/supply-chain/","Software supply chain security",{"text":342,"config":343},"Software Compliance",{"href":344,"dataGaName":345,"dataGaLocation":242},"/solutions/software-compliance/","software compliance",{"title":347,"link":348,"items":353},"Measurement",{"config":349},{"icon":350,"href":351,"dataGaName":352,"dataGaLocation":242},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[354,358,362],{"text":355,"config":356},"Visibility & Measurement",{"href":351,"dataGaLocation":242,"dataGaName":357},"Visibility and Measurement",{"text":359,"config":360},"Value Stream Management",{"href":361,"dataGaLocation":242,"dataGaName":359},"/solutions/value-stream-management/",{"text":363,"config":364},"Analytics & Insights",{"href":365,"dataGaLocation":242,"dataGaName":366},"/solutions/analytics-and-insights/","Analytics and insights",{"title":368,"type":293,"items":369},"GitLab for",[370,376,382],{"text":371,"config":372},"Enterprise",{"icon":373,"href":374,"dataGaLocation":242,"dataGaName":375},"Building","/enterprise/","enterprise",{"text":377,"config":378},"Small Business",{"icon":379,"href":380,"dataGaLocation":242,"dataGaName":381},"Work","/small-business/","small business",{"text":383,"config":384},"Public Sector",{"icon":385,"href":386,"dataGaLocation":242,"dataGaName":387},"Organization","/solutions/public-sector/","public sector",{"text":389,"config":390},"Pricing",{"href":391,"dataGaName":392,"dataGaLocation":242,"dataNavLevelOne":392},"/pricing/","pricing",{"text":394,"config":395,"menu":397},"Resources",{"dataNavLevelOne":396},"resources",{"type":293,"link":398,"columns":402,"feature":496},{"text":399,"config":400},"View all resources",{"href":401,"dataGaName":396,"dataGaLocation":242},"/resources/",[403,436,463],{"title":404,"items":405},"Getting started",[406,411,416,421,426,431],{"text":407,"config":408},"Install",{"href":409,"dataGaName":410,"dataGaLocation":242},"/install/","install",{"text":412,"config":413},"Quick start guides",{"href":414,"dataGaName":415,"dataGaLocation":242},"/get-started/","quick setup checklists",{"text":417,"config":418},"Learn",{"href":419,"dataGaLocation":242,"dataGaName":420},"https://university.gitlab.com/","learn",{"text":422,"config":423},"Product documentation",{"href":424,"dataGaName":425,"dataGaLocation":242},"https://docs.gitlab.com/","product documentation",{"text":427,"config":428},"Best practice videos",{"href":429,"dataGaName":430,"dataGaLocation":242},"/getting-started-videos/","best practice videos",{"text":432,"config":433},"Integrations",{"href":434,"dataGaName":435,"dataGaLocation":242},"/integrations/","integrations",{"title":437,"items":438},"Discover",[439,444,449,454,458],{"text":440,"config":441},"Customer success stories",{"href":442,"dataGaName":443,"dataGaLocation":242},"/customers/","customer success stories",{"text":445,"config":446},"Blog",{"href":447,"dataGaName":448,"dataGaLocation":242},"/blog/","blog",{"text":450,"config":451},"Demo Hub",{"href":452,"dataGaName":453,"dataGaLocation":242},"/demo-hub/","demo hub",{"text":455,"config":456},"The Source",{"href":457,"dataGaName":448,"dataGaLocation":242},"/the-source/",{"text":459,"config":460},"Remote",{"href":461,"dataGaName":462,"dataGaLocation":242},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":464,"items":465},"Connect",[466,471,476,481,486,491],{"text":467,"config":468},"GitLab Services",{"href":469,"dataGaName":470,"dataGaLocation":242},"/services/","services",{"text":472,"config":473},"Contribute",{"href":474,"dataGaName":475,"dataGaLocation":242},"https://contributors.gitlab.com","contribute",{"text":477,"config":478},"Community",{"href":479,"dataGaName":480,"dataGaLocation":242},"/community/","community",{"text":482,"config":483},"Forum",{"href":484,"dataGaName":485,"dataGaLocation":242},"https://forum.gitlab.com/","forum",{"text":487,"config":488},"Events",{"href":489,"dataGaName":490,"dataGaLocation":242},"/events/","events",{"text":492,"config":493},"Partners",{"href":494,"dataGaName":495,"dataGaLocation":242},"/partners/","partners",{"config":497,"title":500,"text":501,"link":502},{"background":498,"textColor":499},"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":503,"config":504},"Read the latest",{"href":505,"dataGaName":506,"dataGaLocation":242},"/whats-new/","whats new",{"text":508,"config":509,"menu":511},"Company",{"dataNavLevelOne":510},"company",{"type":293,"columns":512},[513],{"items":514},[515,520,526,528,533,538,543,548,553,558],{"text":516,"config":517},"About",{"href":518,"dataGaName":519,"dataGaLocation":242},"/company/","about",{"text":521,"config":522,"footerGa":525},"Jobs",{"href":523,"dataGaName":524,"dataGaLocation":242},"/jobs/","jobs",{"dataGaName":524},{"text":487,"config":527},{"href":489,"dataGaName":490,"dataGaLocation":242},{"text":529,"config":530},"Leadership",{"href":531,"dataGaName":532,"dataGaLocation":242},"/company/team/e-group/","leadership",{"text":534,"config":535},"Handbook",{"href":536,"dataGaName":537,"dataGaLocation":242},"https://handbook.gitlab.com/","handbook",{"text":539,"config":540},"Investor relations",{"href":541,"dataGaName":542,"dataGaLocation":242},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":544,"config":545},"Trust Center",{"href":546,"dataGaName":547,"dataGaLocation":242},"/security/","trust center",{"text":549,"config":550},"AI Transparency Center",{"href":551,"dataGaName":552,"dataGaLocation":242},"/ai-transparency-center/","ai transparency center",{"text":554,"config":555},"Newsletter",{"href":556,"dataGaName":557,"dataGaLocation":242},"/company/contact/#contact-forms","newsletter",{"text":559,"config":560},"Press",{"href":561,"dataGaName":562,"dataGaLocation":242},"/press/","press",{"text":564,"config":565,"menu":566},"Contact us",{"dataNavLevelOne":510},{"type":293,"columns":567},[568],{"items":569},[570,575,580],{"text":571,"config":572},"Talk to sales",{"href":573,"dataGaName":574,"dataGaLocation":242},"/sales/","talk to sales",{"text":576,"config":577},"Support portal",{"href":578,"dataGaName":579,"dataGaLocation":242},"https://support.gitlab.com/hc/en-us","support portal",{"text":581,"config":582},"Customer portal",{"href":583,"dataGaName":584,"dataGaLocation":242},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":586,"login":587,"suggestions":594},"Close",{"text":588,"link":589},"To search repositories and projects, login to",{"text":590,"config":591},"gitlab.com",{"href":256,"dataGaName":592,"dataGaLocation":593},"search login","search",{"text":595,"default":596},"Suggestions",[597,599,603,605,609,613],{"text":273,"config":598},{"href":278,"dataGaName":273,"dataGaLocation":593},{"text":600,"config":601},"Code Suggestions (AI)",{"href":602,"dataGaName":600,"dataGaLocation":593},"/solutions/code-suggestions/",{"text":309,"config":604},{"href":311,"dataGaName":309,"dataGaLocation":593},{"text":606,"config":607},"GitLab on AWS",{"href":608,"dataGaName":606,"dataGaLocation":593},"/partners/technology-partners/aws/",{"text":610,"config":611},"GitLab on Google Cloud",{"href":612,"dataGaName":610,"dataGaLocation":593},"/partners/technology-partners/google-cloud-platform/",{"text":614,"config":615},"Why GitLab?",{"href":286,"dataGaName":614,"dataGaLocation":593},{"freeTrial":617,"mobileIcon":622,"desktopIcon":627,"secondaryButton":630},{"text":618,"config":619},"Start free trial",{"href":620,"dataGaName":247,"dataGaLocation":621},"https://gitlab.com/-/trials/new/","nav",{"altText":623,"config":624},"Gitlab Icon",{"src":625,"dataGaName":626,"dataGaLocation":621},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":623,"config":628},{"src":629,"dataGaName":626,"dataGaLocation":621},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":631,"config":632},"Get Started",{"href":633,"dataGaName":634,"dataGaLocation":621},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":636,"mobileIcon":640,"desktopIcon":642},{"text":637,"config":638},"Learn more about GitLab Duo",{"href":278,"dataGaName":639,"dataGaLocation":621},"gitlab duo",{"altText":623,"config":641},{"src":625,"dataGaName":626,"dataGaLocation":621},{"altText":623,"config":643},{"src":629,"dataGaName":626,"dataGaLocation":621},{"button":645,"mobileIcon":650,"desktopIcon":652},{"text":646,"config":647},"/switch",{"href":648,"dataGaName":649,"dataGaLocation":621},"#contact","switch",{"altText":623,"config":651},{"src":625,"dataGaName":626,"dataGaLocation":621},{"altText":623,"config":653},{"src":654,"dataGaName":626,"dataGaLocation":621},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":656,"mobileIcon":661,"desktopIcon":663},{"text":657,"config":658},"Back to pricing",{"href":391,"dataGaName":659,"dataGaLocation":621,"icon":660},"back to pricing","GoBack",{"altText":623,"config":662},{"src":625,"dataGaName":626,"dataGaLocation":621},{"altText":623,"config":664},{"src":629,"dataGaName":626,"dataGaLocation":621},{"title":666,"titleMobile":667,"button":668,"config":673},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":284,"config":669},{"href":670,"dataGaName":671,"dataGaLocation":672},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":674,"disabled":221},"release",{"data":676},{"text":677,"source":678,"edit":684,"contribute":689,"config":694,"items":699,"minimal":907},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":679,"config":680},"View page source",{"href":681,"dataGaName":682,"dataGaLocation":683},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":685,"config":686},"Edit this page",{"href":687,"dataGaName":688,"dataGaLocation":683},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":690,"config":691},"Please contribute",{"href":692,"dataGaName":693,"dataGaLocation":683},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":695,"facebook":696,"youtube":697,"linkedin":698},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[700,747,799,843,875],{"title":389,"links":701,"subMenu":716},[702,706,711],{"text":703,"config":704},"View plans",{"href":391,"dataGaName":705,"dataGaLocation":683},"view plans",{"text":707,"config":708},"Why Premium?",{"href":709,"dataGaName":710,"dataGaLocation":683},"/pricing/premium/","why premium",{"text":712,"config":713},"Why Ultimate?",{"href":714,"dataGaName":715,"dataGaLocation":683},"/pricing/ultimate/","why ultimate",[717],{"title":718,"links":719},"Contact Us",[720,723,725,727,732,737,742],{"text":721,"config":722},"Contact sales",{"href":573,"dataGaName":252,"dataGaLocation":683},{"text":576,"config":724},{"href":578,"dataGaName":579,"dataGaLocation":683},{"text":581,"config":726},{"href":583,"dataGaName":584,"dataGaLocation":683},{"text":728,"config":729},"Status",{"href":730,"dataGaName":731,"dataGaLocation":683},"https://status.gitlab.com/","status",{"text":733,"config":734},"Terms of use",{"href":735,"dataGaName":736,"dataGaLocation":683},"/terms/","terms of use",{"text":738,"config":739},"Privacy statement",{"href":740,"dataGaName":741,"dataGaLocation":683},"/privacy/","privacy statement",{"text":743,"config":744},"Cookie preferences",{"dataGaName":745,"dataGaLocation":683,"id":746,"isOneTrustButton":224},"cookie preferences","ot-sdk-btn",{"title":289,"links":748,"subMenu":757},[749,753],{"text":750,"config":751},"DevSecOps platform",{"href":271,"dataGaName":752,"dataGaLocation":683},"devsecops platform",{"text":754,"config":755},"AI-Assisted Development",{"href":278,"dataGaName":756,"dataGaLocation":683},"ai-assisted development",[758],{"title":759,"links":760},"Topics",[761,766,771,775,780,784,789,794],{"text":762,"config":763},"CICD",{"href":764,"dataGaName":765,"dataGaLocation":683},"/topics/ci-cd/","cicd",{"text":767,"config":768},"GitOps",{"href":769,"dataGaName":770,"dataGaLocation":683},"/topics/gitops/","gitops",{"text":234,"config":772},{"href":773,"dataGaName":774,"dataGaLocation":683},"/topics/devops/","devops",{"text":776,"config":777},"Version Control",{"href":778,"dataGaName":779,"dataGaLocation":683},"/topics/version-control/","version control",{"text":781,"config":782},"DevSecOps",{"href":783,"dataGaName":216,"dataGaLocation":683},"/topics/devsecops/",{"text":785,"config":786},"Cloud Native",{"href":787,"dataGaName":788,"dataGaLocation":683},"/topics/cloud-native/","cloud native",{"text":790,"config":791},"AI for Coding",{"href":792,"dataGaName":793,"dataGaLocation":683},"/topics/devops/ai-for-coding/","ai for coding",{"text":795,"config":796},"Agentic AI",{"href":797,"dataGaName":798,"dataGaLocation":683},"/topics/agentic-ai/","agentic ai",{"title":800,"links":801},"Solutions",[802,804,806,811,815,818,822,825,827,830,833,838],{"text":333,"config":803},{"href":328,"dataGaName":333,"dataGaLocation":683},{"text":322,"config":805},{"href":305,"dataGaName":306,"dataGaLocation":683},{"text":807,"config":808},"Agile development",{"href":809,"dataGaName":810,"dataGaLocation":683},"/solutions/agile-delivery/","agile delivery",{"text":812,"config":813},"SCM",{"href":318,"dataGaName":814,"dataGaLocation":683},"source code management",{"text":762,"config":816},{"href":311,"dataGaName":817,"dataGaLocation":683},"continuous integration & delivery",{"text":819,"config":820},"Value stream management",{"href":361,"dataGaName":821,"dataGaLocation":683},"value stream management",{"text":767,"config":823},{"href":824,"dataGaName":770,"dataGaLocation":683},"/solutions/gitops/",{"text":371,"config":826},{"href":374,"dataGaName":375,"dataGaLocation":683},{"text":828,"config":829},"Small business",{"href":380,"dataGaName":381,"dataGaLocation":683},{"text":831,"config":832},"Public sector",{"href":386,"dataGaName":387,"dataGaLocation":683},{"text":834,"config":835},"Education",{"href":836,"dataGaName":837,"dataGaLocation":683},"/solutions/education/","education",{"text":839,"config":840},"Financial services",{"href":841,"dataGaName":842,"dataGaLocation":683},"/solutions/finance/","financial services",{"title":394,"links":844},[845,847,849,851,854,856,859,861,863,865,867,869,871,873],{"text":407,"config":846},{"href":409,"dataGaName":410,"dataGaLocation":683},{"text":412,"config":848},{"href":414,"dataGaName":415,"dataGaLocation":683},{"text":417,"config":850},{"href":419,"dataGaName":420,"dataGaLocation":683},{"text":422,"config":852},{"href":424,"dataGaName":853,"dataGaLocation":683},"docs",{"text":445,"config":855},{"href":447,"dataGaName":448,"dataGaLocation":683},{"text":857,"config":858},"What's new",{"href":505,"dataGaName":506,"dataGaLocation":683},{"text":440,"config":860},{"href":442,"dataGaName":443,"dataGaLocation":683},{"text":459,"config":862},{"href":461,"dataGaName":462,"dataGaLocation":683},{"text":467,"config":864},{"href":469,"dataGaName":470,"dataGaLocation":683},{"text":472,"config":866},{"href":474,"dataGaName":475,"dataGaLocation":683},{"text":477,"config":868},{"href":479,"dataGaName":480,"dataGaLocation":683},{"text":482,"config":870},{"href":484,"dataGaName":485,"dataGaLocation":683},{"text":487,"config":872},{"href":489,"dataGaName":490,"dataGaLocation":683},{"text":492,"config":874},{"href":494,"dataGaName":495,"dataGaLocation":683},{"title":508,"links":876},[877,879,881,883,885,887,891,896,898,900,902],{"text":516,"config":878},{"href":518,"dataGaName":510,"dataGaLocation":683},{"text":521,"config":880},{"href":523,"dataGaName":524,"dataGaLocation":683},{"text":529,"config":882},{"href":531,"dataGaName":532,"dataGaLocation":683},{"text":534,"config":884},{"href":536,"dataGaName":537,"dataGaLocation":683},{"text":539,"config":886},{"href":541,"dataGaName":542,"dataGaLocation":683},{"text":888,"config":889},"Sustainability",{"href":890,"dataGaName":888,"dataGaLocation":683},"/sustainability/",{"text":892,"config":893},"Diversity, inclusion and belonging (DIB)",{"href":894,"dataGaName":895,"dataGaLocation":683},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":544,"config":897},{"href":546,"dataGaName":547,"dataGaLocation":683},{"text":554,"config":899},{"href":556,"dataGaName":557,"dataGaLocation":683},{"text":559,"config":901},{"href":561,"dataGaName":562,"dataGaLocation":683},{"text":903,"config":904},"Modern Slavery Transparency Statement",{"href":905,"dataGaName":906,"dataGaLocation":683},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":908},[909,912,915],{"text":910,"config":911},"Terms",{"href":735,"dataGaName":736,"dataGaLocation":683},{"text":913,"config":914},"Cookies",{"dataGaName":745,"dataGaLocation":683,"id":746,"isOneTrustButton":224},{"text":916,"config":917},"Privacy",{"href":740,"dataGaName":741,"dataGaLocation":683},[919],{"id":920,"title":921,"body":220,"config":922,"content":924,"description":220,"extension":927,"meta":928,"navigation":224,"path":929,"seo":930,"stem":931,"__hash__":932},"blogAuthors/en-us/blog/authors/brendan-oleary.yml","Brendan Oleary",{"template":923},"BlogAuthor",{"name":7,"config":925},{"headshot":204,"ctfId":926},"brendan","yml",{},"/en-us/blog/authors/brendan-oleary",{},"en-us/blog/authors/brendan-oleary","IkXVLft77WlFK-Vgo210ZM3Io_PCcrXnYzkBCzx153k",[934,942,950],{"title":935,"description":936,"heroImage":937,"category":216,"date":938,"authors":939,"slug":941,"externalUrl":220},"Consolidate your GitLab stack with Gitaly on Kubernetes","Discover how to install Gitaly on Kubernetes, which is now generally available.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756500636/wmey6kqzzuhirk88w2de.png","2026-05-07",[940],"Olivier Campeau","gitaly-on-kubernetes-generally-available",{"title":943,"description":944,"heroImage":945,"category":216,"date":946,"authors":947,"slug":949,"externalUrl":220},"Teaching software development the easy way using GitLab","Learn how University of Washington lecturer Stephen G. Dame uses GitLab for Education to manage student assignments, distribute course materials, and provide inline code feedback at scale.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659537/Blog/Hero%20Images/display-article-image-0679-1800x945-fy26.png","2026-04-29",[948],"Rod Burns","teaching-software-development-the-easy-way-using-gitlab",{"title":951,"description":952,"heroImage":953,"category":216,"date":954,"authors":955,"slug":957,"externalUrl":220},"AI is reshaping DevSecOps: Attend GitLab Transcend to see what’s next","AI-generated code is 34% of development work. Discover how to balance productivity gains with quality, reliability, and security.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1767982271/e9ogyosmuummq7j65zqg.png","2026-01-08",[956],"Manav Khurana","ai-is-reshaping-devsecops-attend-gitlab-transcend-to-see-whats-next",{"promotions":959},[960,974,986,997],{"id":961,"categories":962,"header":964,"text":965,"button":966,"image":971},"ai-modernization",[963],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":967,"config":968},"Get your AI maturity score",{"href":969,"dataGaName":970,"dataGaLocation":448},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":972},{"src":973},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":975,"categories":976,"header":978,"text":965,"button":979,"image":983},"devops-modernization",[977,216],"product","Are you just managing tools or shipping innovation?",{"text":980,"config":981},"Get your DevOps maturity score",{"href":982,"dataGaName":970,"dataGaLocation":448},"/assessments/devops-modernization-assessment/",{"config":984},{"src":985},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":987,"categories":988,"header":989,"text":965,"button":990,"image":994},"security-modernization",[124],"Are you trading speed for security?",{"text":991,"config":992},"Get your security maturity score",{"href":993,"dataGaName":970,"dataGaLocation":448},"/assessments/security-modernization-assessment/",{"config":995},{"src":996},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":998,"paths":999,"header":1002,"text":1003,"button":1004,"image":1009},"github-azure-migration",[1000,1001],"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":1005,"config":1006},"See how GitLab compares to GitHub",{"href":1007,"dataGaName":1008,"dataGaLocation":448},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1010},{"src":985},{"header":1012,"blurb":1013,"button":1014,"secondaryButton":1019},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1015,"config":1016},"Get your free trial",{"href":1017,"dataGaName":247,"dataGaLocation":1018},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":721,"config":1020},{"href":573,"dataGaName":252,"dataGaLocation":1018},1786803760855]