[{"data":1,"prerenderedAt":1118},["ShallowReactive",2],{"/en-us/blog/tags/demo":3,"navigation-en-us":18,"banner-en-us":439,"footer-en-us":450,"demo-tag-posts-en-us":692},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":9,"description":6,"extension":11,"meta":12,"navigation":13,"path":14,"seo":15,"slug":6,"stem":16,"testContent":6,"type":6,"__hash__":17},"blogTags/en-us/blog/tags/demo.yml","Demo",null,{"template":8},"BlogTag",{"tag":10,"tagSlug":10},"demo","yml",{},true,"/en-us/blog/tags/demo",{},"en-us/blog/tags/demo","WLNNjjLInZT5A8yulcD951cZPp-_Cvy6bpSgOhtmLNo",{"logo":19,"freeTrial":24,"sales":29,"login":34,"items":39,"search":359,"minimal":390,"duo":409,"switchNav":418,"pricingDeployment":429},{"config":20},{"href":21,"dataGaName":22,"dataGaLocation":23},"/","gitlab logo","header",{"text":25,"config":26},"Get free trial",{"href":27,"dataGaName":28,"dataGaLocation":23},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":30,"config":31},"Talk to sales",{"href":32,"dataGaName":33,"dataGaLocation":23},"/sales/","sales",{"text":35,"config":36},"Sign in",{"href":37,"dataGaName":38,"dataGaLocation":23},"https://gitlab.com/users/sign_in/","sign in",[40,69,169,174,278,339],{"text":41,"config":42,"menu":44},"Platform",{"dataNavLevelOne":43},"platform",{"type":45,"columns":46},"cards",[47,53,61],{"title":41,"description":48,"link":49},"The intelligent orchestration platform for DevSecOps",{"text":50,"config":51},"Explore our Platform",{"href":52,"dataGaName":43,"dataGaLocation":23},"/platform/",{"title":54,"description":55,"link":56},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":57,"config":58},"Meet GitLab Duo",{"href":59,"dataGaName":60,"dataGaLocation":23},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":62,"description":63,"link":64},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":65,"config":66},"Learn more",{"href":67,"dataGaName":68,"dataGaLocation":23},"/why-gitlab/","why gitlab",{"text":70,"left":13,"config":71,"menu":73},"Product",{"dataNavLevelOne":72},"solutions",{"type":74,"link":75,"columns":79,"feature":148},"lists",{"text":76,"config":77},"View all Solutions",{"href":78,"dataGaName":72,"dataGaLocation":23},"/solutions/",[80,104,127],{"title":81,"description":82,"link":83,"items":88},"Automation","CI/CD and automation to accelerate deployment",{"config":84},{"icon":85,"href":86,"dataGaName":87,"dataGaLocation":23},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[89,93,96,100],{"text":90,"config":91},"CI/CD",{"href":92,"dataGaLocation":23,"dataGaName":90},"/solutions/continuous-integration/",{"text":54,"config":94},{"href":59,"dataGaLocation":23,"dataGaName":95},"gitlab duo agent platform - product menu",{"text":97,"config":98},"Source Code Management",{"href":99,"dataGaLocation":23,"dataGaName":97},"/solutions/source-code-management/",{"text":101,"config":102},"Automated Software Delivery",{"href":86,"dataGaLocation":23,"dataGaName":103},"Automated software delivery",{"title":105,"description":106,"link":107,"items":112},"Security","Deliver code faster without compromising security",{"config":108},{"href":109,"dataGaName":110,"dataGaLocation":23,"icon":111},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[113,117,122],{"text":114,"config":115},"Application Security Testing",{"href":109,"dataGaName":116,"dataGaLocation":23},"Application security testing",{"text":118,"config":119},"Software Supply Chain Security",{"href":120,"dataGaLocation":23,"dataGaName":121},"/solutions/supply-chain/","Software supply chain security",{"text":123,"config":124},"Software Compliance",{"href":125,"dataGaName":126,"dataGaLocation":23},"/solutions/software-compliance/","software compliance",{"title":128,"link":129,"items":134},"Measurement",{"config":130},{"icon":131,"href":132,"dataGaName":133,"dataGaLocation":23},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[135,139,143],{"text":136,"config":137},"Visibility & Measurement",{"href":132,"dataGaLocation":23,"dataGaName":138},"Visibility and Measurement",{"text":140,"config":141},"Value Stream Management",{"href":142,"dataGaLocation":23,"dataGaName":140},"/solutions/value-stream-management/",{"text":144,"config":145},"Analytics & Insights",{"href":146,"dataGaLocation":23,"dataGaName":147},"/solutions/analytics-and-insights/","Analytics and insights",{"title":149,"type":74,"items":150},"GitLab for",[151,157,163],{"text":152,"config":153},"Enterprise",{"icon":154,"href":155,"dataGaLocation":23,"dataGaName":156},"Building","/enterprise/","enterprise",{"text":158,"config":159},"Small Business",{"icon":160,"href":161,"dataGaLocation":23,"dataGaName":162},"Work","/small-business/","small business",{"text":164,"config":165},"Public Sector",{"icon":166,"href":167,"dataGaLocation":23,"dataGaName":168},"Organization","/solutions/public-sector/","public sector",{"text":170,"config":171},"Pricing",{"href":172,"dataGaName":173,"dataGaLocation":23,"dataNavLevelOne":173},"/pricing/","pricing",{"text":175,"config":176,"menu":178},"Resources",{"dataNavLevelOne":177},"resources",{"type":74,"link":179,"columns":183,"feature":267},{"text":180,"config":181},"View all resources",{"href":182,"dataGaName":177,"dataGaLocation":23},"/resources/",[184,217,239],{"title":185,"items":186},"Getting started",[187,192,197,202,207,212],{"text":188,"config":189},"Install",{"href":190,"dataGaName":191,"dataGaLocation":23},"/install/","install",{"text":193,"config":194},"Quick start guides",{"href":195,"dataGaName":196,"dataGaLocation":23},"/get-started/","quick setup checklists",{"text":198,"config":199},"Learn",{"href":200,"dataGaLocation":23,"dataGaName":201},"https://university.gitlab.com/","learn",{"text":203,"config":204},"Product documentation",{"href":205,"dataGaName":206,"dataGaLocation":23},"https://docs.gitlab.com/","product documentation",{"text":208,"config":209},"Best practice videos",{"href":210,"dataGaName":211,"dataGaLocation":23},"/getting-started-videos/","best practice videos",{"text":213,"config":214},"Integrations",{"href":215,"dataGaName":216,"dataGaLocation":23},"/integrations/","integrations",{"title":218,"items":219},"Discover",[220,225,230,234],{"text":221,"config":222},"Customer success stories",{"href":223,"dataGaName":224,"dataGaLocation":23},"/customers/","customer success stories",{"text":226,"config":227},"Blog",{"href":228,"dataGaName":229,"dataGaLocation":23},"/blog/","blog",{"text":231,"config":232},"The Source",{"href":233,"dataGaName":229,"dataGaLocation":23},"/the-source/",{"text":235,"config":236},"Remote",{"href":237,"dataGaName":238,"dataGaLocation":23},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":240,"items":241},"Connect",[242,247,252,257,262],{"text":243,"config":244},"GitLab Services",{"href":245,"dataGaName":246,"dataGaLocation":23},"/services/","services",{"text":248,"config":249},"Community",{"href":250,"dataGaName":251,"dataGaLocation":23},"/community/","community",{"text":253,"config":254},"Forum",{"href":255,"dataGaName":256,"dataGaLocation":23},"https://forum.gitlab.com/","forum",{"text":258,"config":259},"Events",{"href":260,"dataGaName":261,"dataGaLocation":23},"/events/","events",{"text":263,"config":264},"Partners",{"href":265,"dataGaName":266,"dataGaLocation":23},"/partners/","partners",{"config":268,"title":271,"text":272,"link":273},{"background":269,"textColor":270},"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":274,"config":275},"Read the latest",{"href":276,"dataGaName":277,"dataGaLocation":23},"/releases/whats-new/","whats new",{"text":279,"config":280,"menu":282},"Company",{"dataNavLevelOne":281},"company",{"type":74,"columns":283},[284],{"items":285},[286,291,297,299,304,309,314,319,324,329,334],{"text":287,"config":288},"About",{"href":289,"dataGaName":290,"dataGaLocation":23},"/company/","about",{"text":292,"config":293,"footerGa":296},"Jobs",{"href":294,"dataGaName":295,"dataGaLocation":23},"/jobs/","jobs",{"dataGaName":295},{"text":258,"config":298},{"href":260,"dataGaName":261,"dataGaLocation":23},{"text":300,"config":301},"Leadership",{"href":302,"dataGaName":303,"dataGaLocation":23},"/company/team/e-group/","leadership",{"text":305,"config":306},"Team",{"href":307,"dataGaName":308,"dataGaLocation":23},"/company/team/","team",{"text":310,"config":311},"Handbook",{"href":312,"dataGaName":313,"dataGaLocation":23},"https://handbook.gitlab.com/","handbook",{"text":315,"config":316},"Investor relations",{"href":317,"dataGaName":318,"dataGaLocation":23},"https://ir.gitlab.com/","investor relations",{"text":320,"config":321},"Trust Center",{"href":322,"dataGaName":323,"dataGaLocation":23},"/security/","trust center",{"text":325,"config":326},"AI Transparency Center",{"href":327,"dataGaName":328,"dataGaLocation":23},"/ai-transparency-center/","ai transparency center",{"text":330,"config":331},"Newsletter",{"href":332,"dataGaName":333,"dataGaLocation":23},"/company/contact/#contact-forms","newsletter",{"text":335,"config":336},"Press",{"href":337,"dataGaName":338,"dataGaLocation":23},"/press/","press",{"text":340,"config":341,"menu":342},"Contact us",{"dataNavLevelOne":281},{"type":74,"columns":343},[344],{"items":345},[346,349,354],{"text":30,"config":347},{"href":32,"dataGaName":348,"dataGaLocation":23},"talk to sales",{"text":350,"config":351},"Support portal",{"href":352,"dataGaName":353,"dataGaLocation":23},"https://support.gitlab.com","support portal",{"text":355,"config":356},"Customer portal",{"href":357,"dataGaName":358,"dataGaLocation":23},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":360,"login":361,"suggestions":368},"Close",{"text":362,"link":363},"To search repositories and projects, login to",{"text":364,"config":365},"gitlab.com",{"href":37,"dataGaName":366,"dataGaLocation":367},"search login","search",{"text":369,"default":370},"Suggestions",[371,373,377,379,383,387],{"text":54,"config":372},{"href":59,"dataGaName":54,"dataGaLocation":367},{"text":374,"config":375},"Code Suggestions (AI)",{"href":376,"dataGaName":374,"dataGaLocation":367},"/solutions/code-suggestions/",{"text":90,"config":378},{"href":92,"dataGaName":90,"dataGaLocation":367},{"text":380,"config":381},"GitLab on AWS",{"href":382,"dataGaName":380,"dataGaLocation":367},"/partners/technology-partners/aws/",{"text":384,"config":385},"GitLab on Google Cloud",{"href":386,"dataGaName":384,"dataGaLocation":367},"/partners/technology-partners/google-cloud-platform/",{"text":388,"config":389},"Why GitLab?",{"href":67,"dataGaName":388,"dataGaLocation":367},{"freeTrial":391,"mobileIcon":396,"desktopIcon":401,"secondaryButton":404},{"text":392,"config":393},"Start free trial",{"href":394,"dataGaName":28,"dataGaLocation":395},"https://gitlab.com/-/trials/new/","nav",{"altText":397,"config":398},"Gitlab Icon",{"src":399,"dataGaName":400,"dataGaLocation":395},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":397,"config":402},{"src":403,"dataGaName":400,"dataGaLocation":395},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":405,"config":406},"Get Started",{"href":407,"dataGaName":408,"dataGaLocation":395},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":410,"mobileIcon":414,"desktopIcon":416},{"text":411,"config":412},"Learn more about GitLab Duo",{"href":59,"dataGaName":413,"dataGaLocation":395},"gitlab duo",{"altText":397,"config":415},{"src":399,"dataGaName":400,"dataGaLocation":395},{"altText":397,"config":417},{"src":403,"dataGaName":400,"dataGaLocation":395},{"button":419,"mobileIcon":424,"desktopIcon":426},{"text":420,"config":421},"/switch",{"href":422,"dataGaName":423,"dataGaLocation":395},"#contact","switch",{"altText":397,"config":425},{"src":399,"dataGaName":400,"dataGaLocation":395},{"altText":397,"config":427},{"src":428,"dataGaName":400,"dataGaLocation":395},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":430,"mobileIcon":435,"desktopIcon":437},{"text":431,"config":432},"Back to pricing",{"href":172,"dataGaName":433,"dataGaLocation":395,"icon":434},"back to pricing","GoBack",{"altText":397,"config":436},{"src":399,"dataGaName":400,"dataGaLocation":395},{"altText":397,"config":438},{"src":403,"dataGaName":400,"dataGaLocation":395},{"title":440,"button":441,"config":446},"See how agentic AI transforms software delivery",{"text":442,"config":443},"Sign up for GitLab Transcend on June 10",{"href":444,"dataGaName":445,"dataGaLocation":23},"/releases/whats-new/#sign-up","transcend event",{"layout":447,"icon":448,"disabled":449},"release","AiStar",false,{"data":451},{"text":452,"source":453,"edit":459,"contribute":464,"config":469,"items":474,"minimal":681},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":454,"config":455},"View page source",{"href":456,"dataGaName":457,"dataGaLocation":458},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":460,"config":461},"Edit this page",{"href":462,"dataGaName":463,"dataGaLocation":458},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":465,"config":466},"Please contribute",{"href":467,"dataGaName":468,"dataGaLocation":458},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":470,"facebook":471,"youtube":472,"linkedin":473},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[475,522,576,620,647],{"title":170,"links":476,"subMenu":491},[477,481,486],{"text":478,"config":479},"View plans",{"href":172,"dataGaName":480,"dataGaLocation":458},"view plans",{"text":482,"config":483},"Why Premium?",{"href":484,"dataGaName":485,"dataGaLocation":458},"/pricing/premium/","why premium",{"text":487,"config":488},"Why Ultimate?",{"href":489,"dataGaName":490,"dataGaLocation":458},"/pricing/ultimate/","why ultimate",[492],{"title":493,"links":494},"Contact Us",[495,498,500,502,507,512,517],{"text":496,"config":497},"Contact sales",{"href":32,"dataGaName":33,"dataGaLocation":458},{"text":350,"config":499},{"href":352,"dataGaName":353,"dataGaLocation":458},{"text":355,"config":501},{"href":357,"dataGaName":358,"dataGaLocation":458},{"text":503,"config":504},"Status",{"href":505,"dataGaName":506,"dataGaLocation":458},"https://status.gitlab.com/","status",{"text":508,"config":509},"Terms of use",{"href":510,"dataGaName":511,"dataGaLocation":458},"/terms/","terms of use",{"text":513,"config":514},"Privacy statement",{"href":515,"dataGaName":516,"dataGaLocation":458},"/privacy/","privacy statement",{"text":518,"config":519},"Cookie preferences",{"dataGaName":520,"dataGaLocation":458,"id":521,"isOneTrustButton":13},"cookie preferences","ot-sdk-btn",{"title":70,"links":523,"subMenu":532},[524,528],{"text":525,"config":526},"DevSecOps platform",{"href":52,"dataGaName":527,"dataGaLocation":458},"devsecops platform",{"text":529,"config":530},"AI-Assisted Development",{"href":59,"dataGaName":531,"dataGaLocation":458},"ai-assisted development",[533],{"title":534,"links":535},"Topics",[536,541,546,551,556,561,566,571],{"text":537,"config":538},"CICD",{"href":539,"dataGaName":540,"dataGaLocation":458},"/topics/ci-cd/","cicd",{"text":542,"config":543},"GitOps",{"href":544,"dataGaName":545,"dataGaLocation":458},"/topics/gitops/","gitops",{"text":547,"config":548},"DevOps",{"href":549,"dataGaName":550,"dataGaLocation":458},"/topics/devops/","devops",{"text":552,"config":553},"Version Control",{"href":554,"dataGaName":555,"dataGaLocation":458},"/topics/version-control/","version control",{"text":557,"config":558},"DevSecOps",{"href":559,"dataGaName":560,"dataGaLocation":458},"/topics/devsecops/","devsecops",{"text":562,"config":563},"Cloud Native",{"href":564,"dataGaName":565,"dataGaLocation":458},"/topics/cloud-native/","cloud native",{"text":567,"config":568},"AI for Coding",{"href":569,"dataGaName":570,"dataGaLocation":458},"/topics/devops/ai-for-coding/","ai for coding",{"text":572,"config":573},"Agentic AI",{"href":574,"dataGaName":575,"dataGaLocation":458},"/topics/agentic-ai/","agentic ai",{"title":577,"links":578},"Solutions",[579,581,583,588,592,595,599,602,604,607,610,615],{"text":114,"config":580},{"href":109,"dataGaName":114,"dataGaLocation":458},{"text":103,"config":582},{"href":86,"dataGaName":87,"dataGaLocation":458},{"text":584,"config":585},"Agile development",{"href":586,"dataGaName":587,"dataGaLocation":458},"/solutions/agile-delivery/","agile delivery",{"text":589,"config":590},"SCM",{"href":99,"dataGaName":591,"dataGaLocation":458},"source code management",{"text":537,"config":593},{"href":92,"dataGaName":594,"dataGaLocation":458},"continuous integration & delivery",{"text":596,"config":597},"Value stream management",{"href":142,"dataGaName":598,"dataGaLocation":458},"value stream management",{"text":542,"config":600},{"href":601,"dataGaName":545,"dataGaLocation":458},"/solutions/gitops/",{"text":152,"config":603},{"href":155,"dataGaName":156,"dataGaLocation":458},{"text":605,"config":606},"Small business",{"href":161,"dataGaName":162,"dataGaLocation":458},{"text":608,"config":609},"Public sector",{"href":167,"dataGaName":168,"dataGaLocation":458},{"text":611,"config":612},"Education",{"href":613,"dataGaName":614,"dataGaLocation":458},"/solutions/education/","education",{"text":616,"config":617},"Financial services",{"href":618,"dataGaName":619,"dataGaLocation":458},"/solutions/finance/","financial services",{"title":175,"links":621},[622,624,626,628,631,633,635,637,639,641,643,645],{"text":188,"config":623},{"href":190,"dataGaName":191,"dataGaLocation":458},{"text":193,"config":625},{"href":195,"dataGaName":196,"dataGaLocation":458},{"text":198,"config":627},{"href":200,"dataGaName":201,"dataGaLocation":458},{"text":203,"config":629},{"href":205,"dataGaName":630,"dataGaLocation":458},"docs",{"text":226,"config":632},{"href":228,"dataGaName":229,"dataGaLocation":458},{"text":221,"config":634},{"href":223,"dataGaName":224,"dataGaLocation":458},{"text":235,"config":636},{"href":237,"dataGaName":238,"dataGaLocation":458},{"text":243,"config":638},{"href":245,"dataGaName":246,"dataGaLocation":458},{"text":248,"config":640},{"href":250,"dataGaName":251,"dataGaLocation":458},{"text":253,"config":642},{"href":255,"dataGaName":256,"dataGaLocation":458},{"text":258,"config":644},{"href":260,"dataGaName":261,"dataGaLocation":458},{"text":263,"config":646},{"href":265,"dataGaName":266,"dataGaLocation":458},{"title":279,"links":648},[649,651,653,655,657,659,661,665,670,672,674,676],{"text":287,"config":650},{"href":289,"dataGaName":281,"dataGaLocation":458},{"text":292,"config":652},{"href":294,"dataGaName":295,"dataGaLocation":458},{"text":300,"config":654},{"href":302,"dataGaName":303,"dataGaLocation":458},{"text":305,"config":656},{"href":307,"dataGaName":308,"dataGaLocation":458},{"text":310,"config":658},{"href":312,"dataGaName":313,"dataGaLocation":458},{"text":315,"config":660},{"href":317,"dataGaName":318,"dataGaLocation":458},{"text":662,"config":663},"Sustainability",{"href":664,"dataGaName":662,"dataGaLocation":458},"/sustainability/",{"text":666,"config":667},"Diversity, inclusion and belonging (DIB)",{"href":668,"dataGaName":669,"dataGaLocation":458},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":320,"config":671},{"href":322,"dataGaName":323,"dataGaLocation":458},{"text":330,"config":673},{"href":332,"dataGaName":333,"dataGaLocation":458},{"text":335,"config":675},{"href":337,"dataGaName":338,"dataGaLocation":458},{"text":677,"config":678},"Modern Slavery Transparency Statement",{"href":679,"dataGaName":680,"dataGaLocation":458},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":682},[683,686,689],{"text":684,"config":685},"Terms",{"href":510,"dataGaName":511,"dataGaLocation":458},{"text":687,"config":688},"Cookies",{"dataGaName":520,"dataGaLocation":458,"id":521,"isOneTrustButton":13},{"text":690,"config":691},"Privacy",{"href":515,"dataGaName":516,"dataGaLocation":458},[693,704,714,725,735,748,757,766,775,786,796,806,815,824,833,842,852,862,862,871,882,892,900,910,920,930,939,949,959,970,980,991,1002,1012,1022,1031,1040,1050,1060,1070,1080,1090,1100,1108],{"content":694,"config":702},{"title":695,"heroImage":696,"category":697,"description":698,"authors":699,"date":701},"Use GitLab Duo to build and deploy a simple Quarkus-native project","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666069/Blog/Hero%20Images/AdobeStock_639935439.jpg","ai-ml","This tutorial shows how a Java application is compiled to machine code and deployed to a Kubernetes cluster using a CI/CD pipeline. See how AI makes the process faster and more efficient.",[700],"Cesar Saavedra","2024-10-17",{"slug":703,"externalUrl":-1},"use-gitlab-duo-to-build-and-deploy-a-simple-quarkus-native-project",{"content":705,"config":712},{"title":706,"heroImage":707,"category":560,"description":708,"authors":709,"date":711},"DevSecOps platforms help SMBs scale as they grow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668641/Blog/Hero%20Images/smbscale.jpg","Adopting a comprehensive platform early lets smaller businesses mature with best practices.",[710],"Sharon Gaudin","2023-01-17",{"slug":713,"externalUrl":-1},"devsecops-platforms-help-smbs-scale-as-they-grow",{"content":715,"config":723},{"title":716,"heroImage":717,"category":718,"description":719,"authors":720,"date":722},"Installing GitLab on Raspberry Pi 64-bit OS","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679433/Blog/Hero%20Images/anto-meneghini-gqytxsrctvw-unsplash.jpg","engineering","A Raspberry Pi enthusiast tries to run GitLab on the new 64-bit OS...and here's what happened.",[721],"Brendan O'Leary","2022-03-14",{"slug":724,"externalUrl":-1},"installing-gitlab-on-raspberry-pi-64-bit-os",{"content":726,"config":733},{"title":727,"heroImage":728,"category":718,"description":729,"authors":730,"date":732},"How Comet can streamline machine learning on The GitLab DevOps Platform","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669991/Blog/Hero%20Images/ways-to-encourage-collaboration.jpg","Here's a step-by-step look at how to bring ML into software development using Comet on GitLab's DevOps Platform.",[731],"William Arias","2021-11-08",{"slug":734,"externalUrl":-1},"machine-learning-on-the-gitlab-devops-platform",{"content":736,"config":746},{"title":737,"heroImage":738,"category":739,"description":740,"authors":741,"date":745},"How to write and continuously test vulnerability detection rules for SAST","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667819/Blog/Hero%20Images/anomaly-detection-cover.png","security","Interns with the Google Summer of Code helped GitLab transition from our old SAST tools to Semgrep.",[742,743,744],"Ross Fuhrman","Anshuman Singh","Julian Thome","2021-09-08",{"slug":747,"externalUrl":-1},"write-vulnerability-detection-rules",{"content":749,"config":755},{"title":750,"heroImage":751,"category":718,"description":752,"authors":753,"date":754},"How to use a push-based approach for GitOps with Terraform and AWS ECS and EC2","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg","Learn how GitLab supports agentless approach for GitOps on AWS.",[700],"2021-08-10",{"slug":756,"externalUrl":-1},"how-to-agentless-gitops-aws",{"content":758,"config":764},{"title":759,"heroImage":760,"category":718,"description":761,"authors":762,"date":763},"How to use a push-based approach for GitOps with GitLab scripting and variables","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682051/Blog/Hero%20Images/agentless-gitops-vars-cover-880x587.jpg","Learn how GitLab supports agentless approach for GitOps with scripting and variables.",[700],"2021-07-23",{"slug":765,"externalUrl":-1},"how-to-agentless-gitops-vars",{"content":767,"config":773},{"title":768,"heroImage":769,"category":718,"description":770,"authors":771,"date":772},"How to use a pull-based (agent-based) approach for GitOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682037/Blog/Hero%20Images/agent-based-gitops-cover-880x587.jpg","Learn how GitLab supports agent-based approach for GitOps",[700],"2021-06-23",{"slug":774,"externalUrl":-1},"how-to-use-agent-based-gitops",{"content":776,"config":784},{"title":777,"heroImage":778,"category":779,"description":780,"authors":781,"date":783},"What to consider when going hybrid","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681897/Blog/Hero%20Images/san_francisco_skyline_dm.jpg","culture","Hybrid-remote is an alluring alternative to all-remote, but requires careful consideration. Here's what you need to know when making the shift.",[782],"Darren Murph","2021-02-17",{"slug":785,"externalUrl":-1},"considerations-for-going-hybrid-remote",{"content":787,"config":794},{"title":788,"heroImage":789,"category":790,"description":791,"authors":792,"date":793},"GitLab’s automated and integrated continuous delivery","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681872/Blog/Hero%20Images/CD-2st-mkt-diff-cover-1275x849.jpg","unfiltered","Learn about how the power of GitLab Auto DevOps can help increase productivity and speed up releases.",[700],"2021-01-22",{"slug":795,"externalUrl":-1},"cd-automated-integrated",{"content":797,"config":804},{"title":798,"heroImage":799,"category":790,"description":800,"authors":801,"date":803},"A quick guide to GitLab Dependency Scanning","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681849/Blog/Hero%20Images/iceberg_header.jpg","A walk through of creating a quick example project in order to see Dependency Scanning in action.",[802],"Nicole Schwartz","2021-01-14",{"slug":805,"externalUrl":-1},"try-dependency-scanning",{"content":807,"config":813},{"title":808,"heroImage":809,"category":718,"description":810,"authors":811,"date":812},"How to use GitLab tools for continuous delivery","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682956/Blog/Hero%20Images/CD-continuous-nature-cover-880x586.jpg","Learn how to use GitLab technology to release software faster and with less risk.",[700],"2020-12-17",{"slug":814,"externalUrl":-1},"cd-solution-overview",{"content":816,"config":822},{"title":817,"heroImage":818,"category":718,"description":819,"authors":820,"date":812},"How to use GitLab for Agile, CI/CD, GitOps, and more","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681825/Blog/Hero%20Images/triangle_geo.jpg","Read our example engineering stories from the past two years that show how to use GitLab for you DevOps cycle, including GitOps, CI/CD and more.",[821],"Sara Kassabian",{"slug":823,"externalUrl":-1},"gitlab-for-cicd-agile-gitops-cloudnative",{"content":825,"config":831},{"title":826,"heroImage":827,"category":790,"description":828,"authors":829,"date":830},"GitLab's unifiied and integrated monitoring strategies","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681771/Blog/Hero%20Images/CD-1st-mkt-diff-cover-1275x849.jpg","Learn about GitLab’s unified and integrated monitoring capabilities and advanced deployment strategies.",[700],"2020-11-23",{"slug":832,"externalUrl":-1},"cd-unified-monitor-deploy",{"content":834,"config":840},{"title":835,"heroImage":836,"category":790,"description":837,"authors":838,"date":839},"GitLab uniquely enables rapid innovation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681603/Blog/Hero%20Images/rapids-cover-1275x750.jpg","Learn about some of the ways GitLab can uniquely enable your developers to innovate more rapidly.",[700],"2020-09-30",{"slug":841,"externalUrl":-1},"enables-rapid-innovation",{"content":843,"config":850},{"title":844,"heroImage":845,"category":790,"description":846,"authors":847,"date":849},"Applying risk management to pandemic-driven remote learning","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672774/Blog/Hero%20Images/pexels-august.jpg","A GitLab team member and parent offers some tips to improve today’s remote learning experience.",[848],"Meghan Maneval","2020-08-27",{"slug":851,"externalUrl":-1},"applying-risk-management-to-remote-learning",{"content":853,"config":860},{"title":854,"heroImage":855,"category":739,"description":856,"authors":857,"date":859},"Get better container security with GitLab: 4 real-world examples","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667094/Blog/Hero%20Images/container-security.jpg","Containers are increasingly popular – and increasingly vulnerable. Using\nfour threat scenarios, we step through how GitLab's built-in security\nfeatures will make containers safer.",[858],"Thiago Figueiró","2020-07-28",{"slug":861,"externalUrl":-1},"container-security-in-gitlab",{"content":863,"config":869},{"title":864,"heroImage":865,"category":790,"description":866,"authors":867,"date":868},"GitLab CEO Shadow program takeaways and lessons learned","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681331/Blog/Hero%20Images/all-remote-world-banner-1920x1080.png","I attended every meeting with GitLab's CEO for two weeks. This is what I learned.",[782],"2020-05-22",{"slug":870,"externalUrl":-1},"gitlab-remote-ceo-shadow-takeaways",{"content":872,"config":880},{"title":873,"heroImage":874,"category":875,"description":876,"authors":877,"date":879},"Announcing 32/64-bit Arm Runner Support for AWS Graviton2","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png","news","GitLab enables CI/CD solution on Arm-based AWS Graviton2 instances.",[878],"Kushal Koolwal","2020-05-15",{"slug":881,"externalUrl":-1},"gitlab-arm-aws-graviton2-solution",{"content":883,"config":890},{"title":884,"heroImage":885,"category":718,"description":886,"authors":887,"date":889},"How to deploy your application to a GitLab-managed Amazon EKS cluster with Auto DevOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666959/Blog/Hero%20Images/gitlab-aws-cover.png","A Kubernetes tutorial: Use GitLab AutoDevOps to deploy your applications to Amazon EKS.",[888],"Abubakar Siddiq Ango","2020-05-05",{"slug":891,"externalUrl":-1},"deploying-application-eks",{"content":893,"config":898},{"title":894,"heroImage":885,"category":718,"description":895,"authors":896,"date":897},"How to create a Kubernetes cluster on Amazon EKS in GitLab","A Kubernetes tutorial: Create clusters in a few clicks with GitLab and Amazon EKS.",[888],"2020-03-09",{"slug":899,"externalUrl":-1},"gitlab-eks-integration-how-to",{"content":901,"config":908},{"title":902,"heroImage":903,"category":718,"description":904,"authors":905,"date":907},"How to limit access to manual pipeline gates and deployments using GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681105/Blog/Hero%20Images/protect_manual_jobs.jpg","Let's look at how to use protected environments to set up access controls for production deployments and manual gates.",[906],"Thao Yeager","2020-02-20",{"slug":909,"externalUrl":-1},"protecting-manual-jobs",{"content":911,"config":918},{"title":912,"heroImage":913,"category":779,"description":914,"authors":915,"date":917},"Lessons learned managing the GitLab Data team","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664102/Blog/Hero%20Images/gitlab-values-cover.png","Staff Data Engineer Taylor Murphy shares his lessons and takeways from one year as the Data team manager.",[916],"Taylor Murphy","2020-02-10",{"slug":919,"externalUrl":-1},"lessons-learned-as-data-team-manager",{"content":921,"config":928},{"title":922,"heroImage":923,"category":718,"description":924,"authors":925,"date":927},"How starting merge trains improve efficiency for DevOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678419/Blog/Hero%20Images/merge_trains.jpg","No more queuing and waiting for pipeline results! Read how merge trains will speed up your deployments while making sure master stays green.",[926],"Orit Golowinski","2020-01-30",{"slug":929,"externalUrl":-1},"all-aboard-merge-trains",{"content":931,"config":937},{"title":932,"heroImage":933,"category":790,"description":934,"authors":935,"date":936},"Using Gitlab APIs: Real Use Case Scenario","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681037/Blog/Hero%20Images/gitlabapi-cover.jpg","Learn about how GitLab CI and APIs can help you automate bulk tasks",[731],"2020-01-22",{"slug":938,"externalUrl":-1},"gitlab-apis-ci",{"content":940,"config":947},{"title":941,"heroImage":942,"category":281,"description":943,"authors":944,"date":946},"Managing multiple product categories in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680898/Blog/Hero%20Images/filing-cabinet.jpg","Exploring issue mangement options for product teams that are all contributing to a single repository.",[945],"Gabe Weaver","2019-12-05",{"slug":948,"externalUrl":-1},"how-to-setup-gitlab-for-multiple-product-teams",{"content":950,"config":957},{"title":951,"heroImage":952,"category":790,"description":953,"authors":954,"date":956},"The 3 Levels of Data Analysis- A Framework for Assessing Data Organization Maturity","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666603/Blog/Hero%20Images/book.jpg","GitLab Data Engineer Emilie Schario lays out a framework for data analysis that can help an organization understand the maturity of their data team.",[955],"Emilie Schario","2019-11-04",{"slug":958,"externalUrl":-1},"three-levels-data-analysis",{"content":960,"config":968},{"title":961,"heroImage":962,"category":963,"description":964,"authors":965,"date":967},"Is serverless the end of ops?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671845/Blog/Hero%20Images/serverless-ops-blog.jpg","insights","What is Serverless architecture, what are the pros and cons of using it and where will it go in the future?",[966],"Chrissie Buchanan","2019-09-12",{"slug":969,"externalUrl":-1},"is-serverless-the-end-of-ops",{"content":971,"config":978},{"title":972,"heroImage":973,"category":718,"description":974,"authors":975,"date":977},"How to avoid broken master with Pipelines for Merged Results and Merge Trains","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678366/Blog/Hero%20Images/merge-train.jpg","Do you still run pipelines on source branches? Let's start running them on merge commits!",[976],"Shinya Maeda","2019-09-11",{"slug":979,"externalUrl":-1},"how-to-avoid-broken-master-with-pipelines-for-merge-requests",{"content":981,"config":989},{"title":982,"heroImage":983,"category":718,"description":984,"authors":985,"date":988},"Build enterprise-grade IaC pipelines with GitLab DevSecOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1746211002/zlet4rmfg2z0j6lg16mc.png","Learn how to transform infrastructure automation into scalable, secure pipelines using GitLab, Terraform/OpenTofu, and Ansible with integrated security scanning and CI/CD.",[986,987],"George Kichukov","Salahddine Aberkan","2019-07-01",{"slug":990,"externalUrl":-1},"using-ansible-and-gitlab-as-infrastructure-for-code",{"content":992,"config":1000},{"title":993,"heroImage":994,"category":995,"description":996,"authors":997,"date":999},"Thanks Fluentd for betting on GitLab CI/CD!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678614/Blog/Hero%20Images/gitlab-fluentd.png","open-source","We're happy to support fresh CNCF graduate Fluentd with GitLab CI/CD, and excited about their latest innovation offering stream processing on the edge.",[998],"Priyanka Sharma","2019-05-21",{"slug":1001,"externalUrl":-1},"fluentd-using-gitlab-ci-cd",{"content":1003,"config":1010},{"title":1004,"heroImage":1005,"category":281,"description":1006,"authors":1007,"date":1009},"GitLab deploys into multiple clouds from kubectl using Crossplane","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680612/Blog/Hero%20Images/crossplane.png","We're proud to be advancing our commitment to multicloud DevOps.",[1008],"GitLab","2019-05-20",{"slug":1011,"externalUrl":-1},"gitlab-first-deployed-kubernetes-api-to-multiple-clouds",{"content":1013,"config":1020},{"title":1014,"heroImage":1015,"category":718,"description":1016,"authors":1017,"date":1019},"New: How to get up and running quickly using GitLab Pages templates","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679908/Blog/Hero%20Images/pages-templates-cover-image.jpg","We're introducing bundled GitLab Pages templates, so let's take a look at how easy it really is now to get up and running with a new site.",[1018],"Jason Yavorska","2019-02-20",{"slug":1021,"externalUrl":-1},"start-using-pages-quickly",{"content":1023,"config":1029},{"title":1024,"heroImage":885,"category":718,"description":1025,"authors":1026,"date":1028},"How to set up multi-account AWS SAM deployments with GitLab CI/CD","Our guest author, an AWS Serverless hero, shares how to automate SAM deployments using GitLab CI/CD.",[1027],"Forrest Brazeal","2019-02-04",{"slug":1030,"externalUrl":-1},"multi-account-aws-sam-deployments-with-gitlab-ci",{"content":1032,"config":1038},{"title":1033,"heroImage":1034,"category":281,"description":1035,"authors":1036,"date":1037},"Highlights from AWS re:Invent 2018","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679994/Blog/Hero%20Images/aws_booth_2018.jpg","Catch up on what GitLab got up to at AWS re:Invent last week! Reinventing pipelines, emerging as a single application, theCUBE interviews, and more.",[998],"2018-12-06",{"slug":1039,"externalUrl":-1},"aws-reinvent-recap",{"content":1041,"config":1048},{"title":1042,"heroImage":1043,"category":718,"description":1044,"authors":1045,"date":1047},"New Meltano personas, priorities, and updates from the team","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678847/Blog/Hero%20Images/meltano-fgu.jpg","There's a lot going on — here are some of the highlights on user research, dogfooding Meltano, embedding engineers, and hiring!",[1046],"Jacob Schatz","2018-10-08",{"slug":1049,"externalUrl":-1},"meltano-functional-group-update-post",{"content":1051,"config":1058},{"title":1052,"heroImage":1053,"category":718,"description":1054,"authors":1055,"date":1057},"How to work on two Git branches at the same time","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678782/Blog/Hero%20Images/working-on-two-git-branches-at-the-same-time.jpg","Watch the demo on how using the GitLab Web IDE and your local dev environment to work on two branches at once can help save time.",[1056],"William Chia","2018-10-03",{"slug":1059,"externalUrl":-1},"working-on-two-git-branches-at-the-same-time",{"content":1061,"config":1068},{"title":1062,"heroImage":1063,"category":995,"description":1064,"authors":1065,"date":1067},"Contributing to GitLab with ease","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678997/Blog/Hero%20Images/mergerequestsgame.jpg","Everyone can contribute to GitLab, so here are a few tips to make your experience easy and pleasant.",[1066],"Lin Jen-Shin","2018-08-23",{"slug":1069,"externalUrl":-1},"contributing-to-gitlab-with-ease",{"content":1071,"config":1078},{"title":1072,"heroImage":1073,"category":718,"description":1074,"authors":1075,"date":1077},"A 5-minute Markdown tutorial","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671172/Blog/Hero%20Images/markdown-tutorial-cover.png","New to GitLab? New to Markdown? Here's a quick explainer on using Markdown to format text all over GitLab.",[1076],"Rebecca Dodd","2018-08-17",{"slug":1079,"externalUrl":-1},"gitlab-markdown-tutorial",{"content":1081,"config":1088},{"title":1082,"heroImage":1083,"category":281,"description":1084,"authors":1085,"date":1087},"Demo: GitLab + Jira + Jenkins","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680048/Blog/Hero%20Images/gitlab-jira-jenkins-cover.png","See how you can use our Jira and Jenkins integrations to reduce context switching and streamline your workflow.",[1086],"Joel Krooswyk","2018-07-30",{"slug":1089,"externalUrl":-1},"gitlab-workflow-with-jira-jenkins",{"content":1091,"config":1098},{"title":1092,"heroImage":1093,"category":718,"description":1094,"authors":1095,"date":1097},"Scalable app deployment with GitLab and Google Cloud Platform","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671280/Blog/Hero%20Images/gitlab-gke-integration-cover.png","Get the power to spin up a Kubernetes cluster managed by Google Cloud Platform in a few clicks – watch the demo of our native integration.",[1096],"Suri Patel","2018-05-10",{"slug":1099,"externalUrl":-1},"gke-webcast-recap-post",{"content":1101,"config":1106},{"title":1102,"heroImage":1093,"category":718,"description":1103,"authors":1104,"date":1105},"Getting started with GitLab CI/CD and Google Cloud Platform","Discover how easy it is to set up CI/CD and Kubernetes deployment with our integration with Google Kubernetes Engine.",[1008],"2018-04-24",{"slug":1107,"externalUrl":-1},"getting-started-gitlab-ci-gcp",{"content":1109,"config":1116},{"title":1110,"heroImage":1111,"category":718,"description":1112,"authors":1113,"date":1115},"A VS Code extension for GitLab: GitLab Workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680196/Blog/Hero%20Images/vs-code-extension-gitlab-workflow.jpg","Senior Frontend Engineer Fatih Acet created a VS Code extension, GitLab Workflow, which allows you to do many GitLab-specific tasks quickly and easily.",[1114],"Fatih Acet","2018-03-01",{"slug":1117,"externalUrl":-1},"gitlab-vscode-extension",1777934918629]