[{"data":1,"prerenderedAt":697},["ShallowReactive",2],{"/en-us/blog/authors/joel-patterson":3,"navigation-en-us":19,"banner-en-us":435,"footer-en-us":444,"blog-author-posts-en-us-joel-patterson":687},{"id":4,"title":5,"body":6,"config":7,"content":9,"description":6,"extension":12,"meta":13,"navigation":14,"path":15,"seo":16,"stem":17,"__hash__":18},"blogAuthors/en-us/blog/authors/joel-patterson.yml","Joel Patterson",null,{"template":8},"BlogAuthor",{"name":5,"config":10},{"headshot":11},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1779470299/ogjvh6vwl4jv6g69mjzl.jpg","yml",{},true,"/en-us/blog/authors/joel-patterson",{},"en-us/blog/authors/joel-patterson","d20r_vnYvJS-Lm4joe8-19EJbQDBUfE59dcCRokaeA4",{"logo":20,"freeTrial":25,"sales":30,"login":35,"items":40,"search":355,"minimal":386,"duo":405,"switchNav":414,"pricingDeployment":425},{"config":21},{"href":22,"dataGaName":23,"dataGaLocation":24},"/","gitlab logo","header",{"text":26,"config":27},"Get free trial",{"href":28,"dataGaName":29,"dataGaLocation":24},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":31,"config":32},"Talk to sales",{"href":33,"dataGaName":34,"dataGaLocation":24},"/sales/","sales",{"text":36,"config":37},"Sign in",{"href":38,"dataGaName":39,"dataGaLocation":24},"https://gitlab.com/users/sign_in/","sign in",[41,70,170,175,279,335],{"text":42,"config":43,"menu":45},"Platform",{"dataNavLevelOne":44},"platform",{"type":46,"columns":47},"cards",[48,54,62],{"title":42,"description":49,"link":50},"The intelligent orchestration platform for DevSecOps",{"text":51,"config":52},"Explore our Platform",{"href":53,"dataGaName":44,"dataGaLocation":24},"/platform/",{"title":55,"description":56,"link":57},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":58,"config":59},"Meet GitLab Duo",{"href":60,"dataGaName":61,"dataGaLocation":24},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":63,"description":64,"link":65},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":66,"config":67},"Learn more",{"href":68,"dataGaName":69,"dataGaLocation":24},"/why-gitlab/","why gitlab",{"text":71,"left":14,"config":72,"menu":74},"Product",{"dataNavLevelOne":73},"solutions",{"type":75,"link":76,"columns":80,"feature":149},"lists",{"text":77,"config":78},"View all Solutions",{"href":79,"dataGaName":73,"dataGaLocation":24},"/solutions/",[81,105,128],{"title":82,"description":83,"link":84,"items":89},"Automation","CI/CD and automation to accelerate deployment",{"config":85},{"icon":86,"href":87,"dataGaName":88,"dataGaLocation":24},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[90,94,97,101],{"text":91,"config":92},"CI/CD",{"href":93,"dataGaLocation":24,"dataGaName":91},"/solutions/continuous-integration/",{"text":55,"config":95},{"href":60,"dataGaLocation":24,"dataGaName":96},"gitlab duo agent platform - product menu",{"text":98,"config":99},"Source Code Management",{"href":100,"dataGaLocation":24,"dataGaName":98},"/solutions/source-code-management/",{"text":102,"config":103},"Automated Software Delivery",{"href":87,"dataGaLocation":24,"dataGaName":104},"Automated software delivery",{"title":106,"description":107,"link":108,"items":113},"Security","Deliver code faster without compromising security",{"config":109},{"href":110,"dataGaName":111,"dataGaLocation":24,"icon":112},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[114,118,123],{"text":115,"config":116},"Application Security Testing",{"href":110,"dataGaName":117,"dataGaLocation":24},"Application security testing",{"text":119,"config":120},"Software Supply Chain Security",{"href":121,"dataGaLocation":24,"dataGaName":122},"/solutions/supply-chain/","Software supply chain security",{"text":124,"config":125},"Software Compliance",{"href":126,"dataGaName":127,"dataGaLocation":24},"/solutions/software-compliance/","software compliance",{"title":129,"link":130,"items":135},"Measurement",{"config":131},{"icon":132,"href":133,"dataGaName":134,"dataGaLocation":24},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[136,140,144],{"text":137,"config":138},"Visibility & Measurement",{"href":133,"dataGaLocation":24,"dataGaName":139},"Visibility and Measurement",{"text":141,"config":142},"Value Stream Management",{"href":143,"dataGaLocation":24,"dataGaName":141},"/solutions/value-stream-management/",{"text":145,"config":146},"Analytics & Insights",{"href":147,"dataGaLocation":24,"dataGaName":148},"/solutions/analytics-and-insights/","Analytics and insights",{"title":150,"type":75,"items":151},"GitLab for",[152,158,164],{"text":153,"config":154},"Enterprise",{"icon":155,"href":156,"dataGaLocation":24,"dataGaName":157},"Building","/enterprise/","enterprise",{"text":159,"config":160},"Small Business",{"icon":161,"href":162,"dataGaLocation":24,"dataGaName":163},"Work","/small-business/","small business",{"text":165,"config":166},"Public Sector",{"icon":167,"href":168,"dataGaLocation":24,"dataGaName":169},"Organization","/solutions/public-sector/","public sector",{"text":171,"config":172},"Pricing",{"href":173,"dataGaName":174,"dataGaLocation":24,"dataNavLevelOne":174},"/pricing/","pricing",{"text":176,"config":177,"menu":179},"Resources",{"dataNavLevelOne":178},"resources",{"type":75,"link":180,"columns":184,"feature":268},{"text":181,"config":182},"View all resources",{"href":183,"dataGaName":178,"dataGaLocation":24},"/resources/",[185,218,240],{"title":186,"items":187},"Getting started",[188,193,198,203,208,213],{"text":189,"config":190},"Install",{"href":191,"dataGaName":192,"dataGaLocation":24},"/install/","install",{"text":194,"config":195},"Quick start guides",{"href":196,"dataGaName":197,"dataGaLocation":24},"/get-started/","quick setup checklists",{"text":199,"config":200},"Learn",{"href":201,"dataGaLocation":24,"dataGaName":202},"https://university.gitlab.com/","learn",{"text":204,"config":205},"Product documentation",{"href":206,"dataGaName":207,"dataGaLocation":24},"https://docs.gitlab.com/","product documentation",{"text":209,"config":210},"Best practice videos",{"href":211,"dataGaName":212,"dataGaLocation":24},"/getting-started-videos/","best practice videos",{"text":214,"config":215},"Integrations",{"href":216,"dataGaName":217,"dataGaLocation":24},"/integrations/","integrations",{"title":219,"items":220},"Discover",[221,226,231,235],{"text":222,"config":223},"Customer success stories",{"href":224,"dataGaName":225,"dataGaLocation":24},"/customers/","customer success stories",{"text":227,"config":228},"Blog",{"href":229,"dataGaName":230,"dataGaLocation":24},"/blog/","blog",{"text":232,"config":233},"The Source",{"href":234,"dataGaName":230,"dataGaLocation":24},"/the-source/",{"text":236,"config":237},"Remote",{"href":238,"dataGaName":239,"dataGaLocation":24},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":241,"items":242},"Connect",[243,248,253,258,263],{"text":244,"config":245},"GitLab Services",{"href":246,"dataGaName":247,"dataGaLocation":24},"/services/","services",{"text":249,"config":250},"Community",{"href":251,"dataGaName":252,"dataGaLocation":24},"/community/","community",{"text":254,"config":255},"Forum",{"href":256,"dataGaName":257,"dataGaLocation":24},"https://forum.gitlab.com/","forum",{"text":259,"config":260},"Events",{"href":261,"dataGaName":262,"dataGaLocation":24},"/events/","events",{"text":264,"config":265},"Partners",{"href":266,"dataGaName":267,"dataGaLocation":24},"/partners/","partners",{"config":269,"title":272,"text":273,"link":274},{"background":270,"textColor":271},"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":275,"config":276},"Read the latest",{"href":277,"dataGaName":278,"dataGaLocation":24},"/whats-new/","whats new",{"text":280,"config":281,"menu":283},"Company",{"dataNavLevelOne":282},"company",{"type":75,"columns":284},[285],{"items":286},[287,292,298,300,305,310,315,320,325,330],{"text":288,"config":289},"About",{"href":290,"dataGaName":291,"dataGaLocation":24},"/company/","about",{"text":293,"config":294,"footerGa":297},"Jobs",{"href":295,"dataGaName":296,"dataGaLocation":24},"/jobs/","jobs",{"dataGaName":296},{"text":259,"config":299},{"href":261,"dataGaName":262,"dataGaLocation":24},{"text":301,"config":302},"Leadership",{"href":303,"dataGaName":304,"dataGaLocation":24},"/company/team/e-group/","leadership",{"text":306,"config":307},"Handbook",{"href":308,"dataGaName":309,"dataGaLocation":24},"https://handbook.gitlab.com/","handbook",{"text":311,"config":312},"Investor relations",{"href":313,"dataGaName":314,"dataGaLocation":24},"https://ir.gitlab.com/","investor relations",{"text":316,"config":317},"Trust Center",{"href":318,"dataGaName":319,"dataGaLocation":24},"/security/","trust center",{"text":321,"config":322},"AI Transparency Center",{"href":323,"dataGaName":324,"dataGaLocation":24},"/ai-transparency-center/","ai transparency center",{"text":326,"config":327},"Newsletter",{"href":328,"dataGaName":329,"dataGaLocation":24},"/company/contact/#contact-forms","newsletter",{"text":331,"config":332},"Press",{"href":333,"dataGaName":334,"dataGaLocation":24},"/press/","press",{"text":336,"config":337,"menu":338},"Contact us",{"dataNavLevelOne":282},{"type":75,"columns":339},[340],{"items":341},[342,345,350],{"text":31,"config":343},{"href":33,"dataGaName":344,"dataGaLocation":24},"talk to sales",{"text":346,"config":347},"Support portal",{"href":348,"dataGaName":349,"dataGaLocation":24},"https://support.gitlab.com","support portal",{"text":351,"config":352},"Customer portal",{"href":353,"dataGaName":354,"dataGaLocation":24},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":356,"login":357,"suggestions":364},"Close",{"text":358,"link":359},"To search repositories and projects, login to",{"text":360,"config":361},"gitlab.com",{"href":38,"dataGaName":362,"dataGaLocation":363},"search login","search",{"text":365,"default":366},"Suggestions",[367,369,373,375,379,383],{"text":55,"config":368},{"href":60,"dataGaName":55,"dataGaLocation":363},{"text":370,"config":371},"Code Suggestions (AI)",{"href":372,"dataGaName":370,"dataGaLocation":363},"/solutions/code-suggestions/",{"text":91,"config":374},{"href":93,"dataGaName":91,"dataGaLocation":363},{"text":376,"config":377},"GitLab on AWS",{"href":378,"dataGaName":376,"dataGaLocation":363},"/partners/technology-partners/aws/",{"text":380,"config":381},"GitLab on Google Cloud",{"href":382,"dataGaName":380,"dataGaLocation":363},"/partners/technology-partners/google-cloud-platform/",{"text":384,"config":385},"Why GitLab?",{"href":68,"dataGaName":384,"dataGaLocation":363},{"freeTrial":387,"mobileIcon":392,"desktopIcon":397,"secondaryButton":400},{"text":388,"config":389},"Start free trial",{"href":390,"dataGaName":29,"dataGaLocation":391},"https://gitlab.com/-/trials/new/","nav",{"altText":393,"config":394},"Gitlab Icon",{"src":395,"dataGaName":396,"dataGaLocation":391},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":393,"config":398},{"src":399,"dataGaName":396,"dataGaLocation":391},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":401,"config":402},"Get Started",{"href":403,"dataGaName":404,"dataGaLocation":391},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":406,"mobileIcon":410,"desktopIcon":412},{"text":407,"config":408},"Learn more about GitLab Duo",{"href":60,"dataGaName":409,"dataGaLocation":391},"gitlab duo",{"altText":393,"config":411},{"src":395,"dataGaName":396,"dataGaLocation":391},{"altText":393,"config":413},{"src":399,"dataGaName":396,"dataGaLocation":391},{"button":415,"mobileIcon":420,"desktopIcon":422},{"text":416,"config":417},"/switch",{"href":418,"dataGaName":419,"dataGaLocation":391},"#contact","switch",{"altText":393,"config":421},{"src":395,"dataGaName":396,"dataGaLocation":391},{"altText":393,"config":423},{"src":424,"dataGaName":396,"dataGaLocation":391},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":426,"mobileIcon":431,"desktopIcon":433},{"text":427,"config":428},"Back to pricing",{"href":173,"dataGaName":429,"dataGaLocation":391,"icon":430},"back to pricing","GoBack",{"altText":393,"config":432},{"src":395,"dataGaName":396,"dataGaLocation":391},{"altText":393,"config":434},{"src":399,"dataGaName":396,"dataGaLocation":391},{"title":436,"button":437,"config":441},"GitLab Orbit is here: The context layer for AI agents.",{"text":66,"config":438},{"href":439,"dataGaName":440,"dataGaLocation":24},"/gitlab-orbit/","orbit",{"layout":442,"disabled":443},"release",false,{"data":445},{"text":446,"source":447,"edit":453,"contribute":458,"config":463,"items":468,"minimal":676},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":448,"config":449},"View page source",{"href":450,"dataGaName":451,"dataGaLocation":452},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":454,"config":455},"Edit this page",{"href":456,"dataGaName":457,"dataGaLocation":452},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":459,"config":460},"Please contribute",{"href":461,"dataGaName":462,"dataGaLocation":452},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":464,"facebook":465,"youtube":466,"linkedin":467},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[469,516,570,614,644],{"title":171,"links":470,"subMenu":485},[471,475,480],{"text":472,"config":473},"View plans",{"href":173,"dataGaName":474,"dataGaLocation":452},"view plans",{"text":476,"config":477},"Why Premium?",{"href":478,"dataGaName":479,"dataGaLocation":452},"/pricing/premium/","why premium",{"text":481,"config":482},"Why Ultimate?",{"href":483,"dataGaName":484,"dataGaLocation":452},"/pricing/ultimate/","why ultimate",[486],{"title":487,"links":488},"Contact Us",[489,492,494,496,501,506,511],{"text":490,"config":491},"Contact sales",{"href":33,"dataGaName":34,"dataGaLocation":452},{"text":346,"config":493},{"href":348,"dataGaName":349,"dataGaLocation":452},{"text":351,"config":495},{"href":353,"dataGaName":354,"dataGaLocation":452},{"text":497,"config":498},"Status",{"href":499,"dataGaName":500,"dataGaLocation":452},"https://status.gitlab.com/","status",{"text":502,"config":503},"Terms of use",{"href":504,"dataGaName":505,"dataGaLocation":452},"/terms/","terms of use",{"text":507,"config":508},"Privacy statement",{"href":509,"dataGaName":510,"dataGaLocation":452},"/privacy/","privacy statement",{"text":512,"config":513},"Cookie preferences",{"dataGaName":514,"dataGaLocation":452,"id":515,"isOneTrustButton":14},"cookie preferences","ot-sdk-btn",{"title":71,"links":517,"subMenu":526},[518,522],{"text":519,"config":520},"DevSecOps platform",{"href":53,"dataGaName":521,"dataGaLocation":452},"devsecops platform",{"text":523,"config":524},"AI-Assisted Development",{"href":60,"dataGaName":525,"dataGaLocation":452},"ai-assisted development",[527],{"title":528,"links":529},"Topics",[530,535,540,545,550,555,560,565],{"text":531,"config":532},"CICD",{"href":533,"dataGaName":534,"dataGaLocation":452},"/topics/ci-cd/","cicd",{"text":536,"config":537},"GitOps",{"href":538,"dataGaName":539,"dataGaLocation":452},"/topics/gitops/","gitops",{"text":541,"config":542},"DevOps",{"href":543,"dataGaName":544,"dataGaLocation":452},"/topics/devops/","devops",{"text":546,"config":547},"Version Control",{"href":548,"dataGaName":549,"dataGaLocation":452},"/topics/version-control/","version control",{"text":551,"config":552},"DevSecOps",{"href":553,"dataGaName":554,"dataGaLocation":452},"/topics/devsecops/","devsecops",{"text":556,"config":557},"Cloud Native",{"href":558,"dataGaName":559,"dataGaLocation":452},"/topics/cloud-native/","cloud native",{"text":561,"config":562},"AI for Coding",{"href":563,"dataGaName":564,"dataGaLocation":452},"/topics/devops/ai-for-coding/","ai for coding",{"text":566,"config":567},"Agentic AI",{"href":568,"dataGaName":569,"dataGaLocation":452},"/topics/agentic-ai/","agentic ai",{"title":571,"links":572},"Solutions",[573,575,577,582,586,589,593,596,598,601,604,609],{"text":115,"config":574},{"href":110,"dataGaName":115,"dataGaLocation":452},{"text":104,"config":576},{"href":87,"dataGaName":88,"dataGaLocation":452},{"text":578,"config":579},"Agile development",{"href":580,"dataGaName":581,"dataGaLocation":452},"/solutions/agile-delivery/","agile delivery",{"text":583,"config":584},"SCM",{"href":100,"dataGaName":585,"dataGaLocation":452},"source code management",{"text":531,"config":587},{"href":93,"dataGaName":588,"dataGaLocation":452},"continuous integration & delivery",{"text":590,"config":591},"Value stream management",{"href":143,"dataGaName":592,"dataGaLocation":452},"value stream management",{"text":536,"config":594},{"href":595,"dataGaName":539,"dataGaLocation":452},"/solutions/gitops/",{"text":153,"config":597},{"href":156,"dataGaName":157,"dataGaLocation":452},{"text":599,"config":600},"Small business",{"href":162,"dataGaName":163,"dataGaLocation":452},{"text":602,"config":603},"Public sector",{"href":168,"dataGaName":169,"dataGaLocation":452},{"text":605,"config":606},"Education",{"href":607,"dataGaName":608,"dataGaLocation":452},"/solutions/education/","education",{"text":610,"config":611},"Financial services",{"href":612,"dataGaName":613,"dataGaLocation":452},"/solutions/finance/","financial services",{"title":176,"links":615},[616,618,620,622,625,627,630,632,634,636,638,640,642],{"text":189,"config":617},{"href":191,"dataGaName":192,"dataGaLocation":452},{"text":194,"config":619},{"href":196,"dataGaName":197,"dataGaLocation":452},{"text":199,"config":621},{"href":201,"dataGaName":202,"dataGaLocation":452},{"text":204,"config":623},{"href":206,"dataGaName":624,"dataGaLocation":452},"docs",{"text":227,"config":626},{"href":229,"dataGaName":230,"dataGaLocation":452},{"text":628,"config":629},"What's new",{"href":277,"dataGaName":278,"dataGaLocation":452},{"text":222,"config":631},{"href":224,"dataGaName":225,"dataGaLocation":452},{"text":236,"config":633},{"href":238,"dataGaName":239,"dataGaLocation":452},{"text":244,"config":635},{"href":246,"dataGaName":247,"dataGaLocation":452},{"text":249,"config":637},{"href":251,"dataGaName":252,"dataGaLocation":452},{"text":254,"config":639},{"href":256,"dataGaName":257,"dataGaLocation":452},{"text":259,"config":641},{"href":261,"dataGaName":262,"dataGaLocation":452},{"text":264,"config":643},{"href":266,"dataGaName":267,"dataGaLocation":452},{"title":280,"links":645},[646,648,650,652,654,656,660,665,667,669,671],{"text":288,"config":647},{"href":290,"dataGaName":282,"dataGaLocation":452},{"text":293,"config":649},{"href":295,"dataGaName":296,"dataGaLocation":452},{"text":301,"config":651},{"href":303,"dataGaName":304,"dataGaLocation":452},{"text":306,"config":653},{"href":308,"dataGaName":309,"dataGaLocation":452},{"text":311,"config":655},{"href":313,"dataGaName":314,"dataGaLocation":452},{"text":657,"config":658},"Sustainability",{"href":659,"dataGaName":657,"dataGaLocation":452},"/sustainability/",{"text":661,"config":662},"Diversity, inclusion and belonging (DIB)",{"href":663,"dataGaName":664,"dataGaLocation":452},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":316,"config":666},{"href":318,"dataGaName":319,"dataGaLocation":452},{"text":326,"config":668},{"href":328,"dataGaName":329,"dataGaLocation":452},{"text":331,"config":670},{"href":333,"dataGaName":334,"dataGaLocation":452},{"text":672,"config":673},"Modern Slavery Transparency Statement",{"href":674,"dataGaName":675,"dataGaLocation":452},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":677},[678,681,684],{"text":679,"config":680},"Terms",{"href":504,"dataGaName":505,"dataGaLocation":452},{"text":682,"config":683},"Cookies",{"dataGaName":514,"dataGaLocation":452,"id":515,"isOneTrustButton":14},{"text":685,"config":686},"Privacy",{"href":509,"dataGaName":510,"dataGaLocation":452},[688],{"title":689,"heroImage":690,"category":691,"description":692,"authors":693,"date":695,"slug":696,"externalUrl":6},"Reduce supply chain risk with SBOM-based dependency scanning","https://res.cloudinary.com/about-gitlab-com/image/upload/v1779189265/iqzyhhiwagxzwywvjzow.png","security","Detect transitive dependencies, trace how they entered your project, and prioritize them by real-world exposure.",[694,5],"Mark Settle","2026-05-26","sbom-based-dependency-scanning",1781392674521]