[{"data":1,"prerenderedAt":1096},["ShallowReactive",2],{"/en-us/blog/tags/demo":3,"navigation-en-us":18,"banner-en-us":418,"footer-en-us":428,"demo-tag-posts-en-us":670},{"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",{"data":19},{"logo":20,"freeTrial":25,"sales":30,"login":35,"items":40,"search":348,"minimal":379,"duo":398,"pricingDeployment":408},{"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,68,163,168,269,329],{"text":42,"config":43,"cards":45},"Platform",{"dataNavLevelOne":44},"platform",[46,52,60],{"title":42,"description":47,"link":48},"The intelligent orchestration platform for DevSecOps",{"text":49,"config":50},"Explore our Platform",{"href":51,"dataGaName":44,"dataGaLocation":24},"/platform/",{"title":53,"description":54,"link":55},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":56,"config":57},"Meet GitLab Duo",{"href":58,"dataGaName":59,"dataGaLocation":24},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":61,"description":62,"link":63},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":64,"config":65},"Learn more",{"href":66,"dataGaName":67,"dataGaLocation":24},"/why-gitlab/","why gitlab",{"text":69,"left":13,"config":70,"link":72,"lists":76,"footer":145},"Product",{"dataNavLevelOne":71},"solutions",{"text":73,"config":74},"View all Solutions",{"href":75,"dataGaName":71,"dataGaLocation":24},"/solutions/",[77,101,124],{"title":78,"description":79,"link":80,"items":85},"Automation","CI/CD and automation to accelerate deployment",{"config":81},{"icon":82,"href":83,"dataGaName":84,"dataGaLocation":24},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[86,90,93,97],{"text":87,"config":88},"CI/CD",{"href":89,"dataGaLocation":24,"dataGaName":87},"/solutions/continuous-integration/",{"text":53,"config":91},{"href":58,"dataGaLocation":24,"dataGaName":92},"gitlab duo agent platform - product menu",{"text":94,"config":95},"Source Code Management",{"href":96,"dataGaLocation":24,"dataGaName":94},"/solutions/source-code-management/",{"text":98,"config":99},"Automated Software Delivery",{"href":83,"dataGaLocation":24,"dataGaName":100},"Automated software delivery",{"title":102,"description":103,"link":104,"items":109},"Security","Deliver code faster without compromising security",{"config":105},{"href":106,"dataGaName":107,"dataGaLocation":24,"icon":108},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[110,114,119],{"text":111,"config":112},"Application Security Testing",{"href":106,"dataGaName":113,"dataGaLocation":24},"Application security testing",{"text":115,"config":116},"Software Supply Chain Security",{"href":117,"dataGaLocation":24,"dataGaName":118},"/solutions/supply-chain/","Software supply chain security",{"text":120,"config":121},"Software Compliance",{"href":122,"dataGaName":123,"dataGaLocation":24},"/solutions/software-compliance/","software compliance",{"title":125,"link":126,"items":131},"Measurement",{"config":127},{"icon":128,"href":129,"dataGaName":130,"dataGaLocation":24},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[132,136,140],{"text":133,"config":134},"Visibility & Measurement",{"href":129,"dataGaLocation":24,"dataGaName":135},"Visibility and Measurement",{"text":137,"config":138},"Value Stream Management",{"href":139,"dataGaLocation":24,"dataGaName":137},"/solutions/value-stream-management/",{"text":141,"config":142},"Analytics & Insights",{"href":143,"dataGaLocation":24,"dataGaName":144},"/solutions/analytics-and-insights/","Analytics and insights",{"title":146,"items":147},"GitLab for",[148,153,158],{"text":149,"config":150},"Enterprise",{"href":151,"dataGaLocation":24,"dataGaName":152},"/enterprise/","enterprise",{"text":154,"config":155},"Small Business",{"href":156,"dataGaLocation":24,"dataGaName":157},"/small-business/","small business",{"text":159,"config":160},"Public Sector",{"href":161,"dataGaLocation":24,"dataGaName":162},"/solutions/public-sector/","public sector",{"text":164,"config":165},"Pricing",{"href":166,"dataGaName":167,"dataGaLocation":24,"dataNavLevelOne":167},"/pricing/","pricing",{"text":169,"config":170,"link":172,"lists":176,"feature":256},"Resources",{"dataNavLevelOne":171},"resources",{"text":173,"config":174},"View all resources",{"href":175,"dataGaName":171,"dataGaLocation":24},"/resources/",[177,210,228],{"title":178,"items":179},"Getting started",[180,185,190,195,200,205],{"text":181,"config":182},"Install",{"href":183,"dataGaName":184,"dataGaLocation":24},"/install/","install",{"text":186,"config":187},"Quick start guides",{"href":188,"dataGaName":189,"dataGaLocation":24},"/get-started/","quick setup checklists",{"text":191,"config":192},"Learn",{"href":193,"dataGaLocation":24,"dataGaName":194},"https://university.gitlab.com/","learn",{"text":196,"config":197},"Product documentation",{"href":198,"dataGaName":199,"dataGaLocation":24},"https://docs.gitlab.com/","product documentation",{"text":201,"config":202},"Best practice videos",{"href":203,"dataGaName":204,"dataGaLocation":24},"/getting-started-videos/","best practice videos",{"text":206,"config":207},"Integrations",{"href":208,"dataGaName":209,"dataGaLocation":24},"/integrations/","integrations",{"title":211,"items":212},"Discover",[213,218,223],{"text":214,"config":215},"Customer success stories",{"href":216,"dataGaName":217,"dataGaLocation":24},"/customers/","customer success stories",{"text":219,"config":220},"Blog",{"href":221,"dataGaName":222,"dataGaLocation":24},"/blog/","blog",{"text":224,"config":225},"Remote",{"href":226,"dataGaName":227,"dataGaLocation":24},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":229,"items":230},"Connect",[231,236,241,246,251],{"text":232,"config":233},"GitLab Services",{"href":234,"dataGaName":235,"dataGaLocation":24},"/services/","services",{"text":237,"config":238},"Community",{"href":239,"dataGaName":240,"dataGaLocation":24},"/community/","community",{"text":242,"config":243},"Forum",{"href":244,"dataGaName":245,"dataGaLocation":24},"https://forum.gitlab.com/","forum",{"text":247,"config":248},"Events",{"href":249,"dataGaName":250,"dataGaLocation":24},"/events/","events",{"text":252,"config":253},"Partners",{"href":254,"dataGaName":255,"dataGaLocation":24},"/partners/","partners",{"backgroundColor":257,"textColor":258,"text":259,"image":260,"link":264},"#2f2a6b","#fff","Insights for the future of software development",{"altText":261,"config":262},"the source promo card",{"src":263},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":265,"config":266},"Read the latest",{"href":267,"dataGaName":268,"dataGaLocation":24},"/the-source/","the source",{"text":270,"config":271,"lists":273},"Company",{"dataNavLevelOne":272},"company",[274],{"items":275},[276,281,287,289,294,299,304,309,314,319,324],{"text":277,"config":278},"About",{"href":279,"dataGaName":280,"dataGaLocation":24},"/company/","about",{"text":282,"config":283,"footerGa":286},"Jobs",{"href":284,"dataGaName":285,"dataGaLocation":24},"/jobs/","jobs",{"dataGaName":285},{"text":247,"config":288},{"href":249,"dataGaName":250,"dataGaLocation":24},{"text":290,"config":291},"Leadership",{"href":292,"dataGaName":293,"dataGaLocation":24},"/company/team/e-group/","leadership",{"text":295,"config":296},"Team",{"href":297,"dataGaName":298,"dataGaLocation":24},"/company/team/","team",{"text":300,"config":301},"Handbook",{"href":302,"dataGaName":303,"dataGaLocation":24},"https://handbook.gitlab.com/","handbook",{"text":305,"config":306},"Investor relations",{"href":307,"dataGaName":308,"dataGaLocation":24},"https://ir.gitlab.com/","investor relations",{"text":310,"config":311},"Trust Center",{"href":312,"dataGaName":313,"dataGaLocation":24},"/security/","trust center",{"text":315,"config":316},"AI Transparency Center",{"href":317,"dataGaName":318,"dataGaLocation":24},"/ai-transparency-center/","ai transparency center",{"text":320,"config":321},"Newsletter",{"href":322,"dataGaName":323,"dataGaLocation":24},"/company/contact/#contact-forms","newsletter",{"text":325,"config":326},"Press",{"href":327,"dataGaName":328,"dataGaLocation":24},"/press/","press",{"text":330,"config":331,"lists":332},"Contact us",{"dataNavLevelOne":272},[333],{"items":334},[335,338,343],{"text":31,"config":336},{"href":33,"dataGaName":337,"dataGaLocation":24},"talk to sales",{"text":339,"config":340},"Support portal",{"href":341,"dataGaName":342,"dataGaLocation":24},"https://support.gitlab.com","support portal",{"text":344,"config":345},"Customer portal",{"href":346,"dataGaName":347,"dataGaLocation":24},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":349,"login":350,"suggestions":357},"Close",{"text":351,"link":352},"To search repositories and projects, login to",{"text":353,"config":354},"gitlab.com",{"href":38,"dataGaName":355,"dataGaLocation":356},"search login","search",{"text":358,"default":359},"Suggestions",[360,362,366,368,372,376],{"text":53,"config":361},{"href":58,"dataGaName":53,"dataGaLocation":356},{"text":363,"config":364},"Code Suggestions (AI)",{"href":365,"dataGaName":363,"dataGaLocation":356},"/solutions/code-suggestions/",{"text":87,"config":367},{"href":89,"dataGaName":87,"dataGaLocation":356},{"text":369,"config":370},"GitLab on AWS",{"href":371,"dataGaName":369,"dataGaLocation":356},"/partners/technology-partners/aws/",{"text":373,"config":374},"GitLab on Google Cloud",{"href":375,"dataGaName":373,"dataGaLocation":356},"/partners/technology-partners/google-cloud-platform/",{"text":377,"config":378},"Why GitLab?",{"href":66,"dataGaName":377,"dataGaLocation":356},{"freeTrial":380,"mobileIcon":385,"desktopIcon":390,"secondaryButton":393},{"text":381,"config":382},"Start free trial",{"href":383,"dataGaName":29,"dataGaLocation":384},"https://gitlab.com/-/trials/new/","nav",{"altText":386,"config":387},"Gitlab Icon",{"src":388,"dataGaName":389,"dataGaLocation":384},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":386,"config":391},{"src":392,"dataGaName":389,"dataGaLocation":384},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":394,"config":395},"Get Started",{"href":396,"dataGaName":397,"dataGaLocation":384},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":399,"mobileIcon":404,"desktopIcon":406},{"text":400,"config":401},"Learn more about GitLab Duo",{"href":402,"dataGaName":403,"dataGaLocation":384},"/gitlab-duo/","gitlab duo",{"altText":386,"config":405},{"src":388,"dataGaName":389,"dataGaLocation":384},{"altText":386,"config":407},{"src":392,"dataGaName":389,"dataGaLocation":384},{"freeTrial":409,"mobileIcon":414,"desktopIcon":416},{"text":410,"config":411},"Back to pricing",{"href":166,"dataGaName":412,"dataGaLocation":384,"icon":413},"back to pricing","GoBack",{"altText":386,"config":415},{"src":388,"dataGaName":389,"dataGaLocation":384},{"altText":386,"config":417},{"src":392,"dataGaName":389,"dataGaLocation":384},{"title":419,"button":420,"config":425},"See how agentic AI transforms software delivery",{"text":421,"config":422},"Watch GitLab Transcend now",{"href":423,"dataGaName":424,"dataGaLocation":24},"/events/transcend/virtual/","transcend event",{"layout":426,"icon":427},"release","AiStar",{"data":429},{"text":430,"source":431,"edit":437,"contribute":442,"config":447,"items":452,"minimal":659},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":432,"config":433},"View page source",{"href":434,"dataGaName":435,"dataGaLocation":436},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":438,"config":439},"Edit this page",{"href":440,"dataGaName":441,"dataGaLocation":436},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":443,"config":444},"Please contribute",{"href":445,"dataGaName":446,"dataGaLocation":436},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":448,"facebook":449,"youtube":450,"linkedin":451},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[453,500,554,598,625],{"title":164,"links":454,"subMenu":469},[455,459,464],{"text":456,"config":457},"View plans",{"href":166,"dataGaName":458,"dataGaLocation":436},"view plans",{"text":460,"config":461},"Why Premium?",{"href":462,"dataGaName":463,"dataGaLocation":436},"/pricing/premium/","why premium",{"text":465,"config":466},"Why Ultimate?",{"href":467,"dataGaName":468,"dataGaLocation":436},"/pricing/ultimate/","why ultimate",[470],{"title":471,"links":472},"Contact Us",[473,476,478,480,485,490,495],{"text":474,"config":475},"Contact sales",{"href":33,"dataGaName":34,"dataGaLocation":436},{"text":339,"config":477},{"href":341,"dataGaName":342,"dataGaLocation":436},{"text":344,"config":479},{"href":346,"dataGaName":347,"dataGaLocation":436},{"text":481,"config":482},"Status",{"href":483,"dataGaName":484,"dataGaLocation":436},"https://status.gitlab.com/","status",{"text":486,"config":487},"Terms of use",{"href":488,"dataGaName":489,"dataGaLocation":436},"/terms/","terms of use",{"text":491,"config":492},"Privacy statement",{"href":493,"dataGaName":494,"dataGaLocation":436},"/privacy/","privacy statement",{"text":496,"config":497},"Cookie preferences",{"dataGaName":498,"dataGaLocation":436,"id":499,"isOneTrustButton":13},"cookie preferences","ot-sdk-btn",{"title":69,"links":501,"subMenu":510},[502,506],{"text":503,"config":504},"DevSecOps platform",{"href":51,"dataGaName":505,"dataGaLocation":436},"devsecops platform",{"text":507,"config":508},"AI-Assisted Development",{"href":402,"dataGaName":509,"dataGaLocation":436},"ai-assisted development",[511],{"title":512,"links":513},"Topics",[514,519,524,529,534,539,544,549],{"text":515,"config":516},"CICD",{"href":517,"dataGaName":518,"dataGaLocation":436},"/topics/ci-cd/","cicd",{"text":520,"config":521},"GitOps",{"href":522,"dataGaName":523,"dataGaLocation":436},"/topics/gitops/","gitops",{"text":525,"config":526},"DevOps",{"href":527,"dataGaName":528,"dataGaLocation":436},"/topics/devops/","devops",{"text":530,"config":531},"Version Control",{"href":532,"dataGaName":533,"dataGaLocation":436},"/topics/version-control/","version control",{"text":535,"config":536},"DevSecOps",{"href":537,"dataGaName":538,"dataGaLocation":436},"/topics/devsecops/","devsecops",{"text":540,"config":541},"Cloud Native",{"href":542,"dataGaName":543,"dataGaLocation":436},"/topics/cloud-native/","cloud native",{"text":545,"config":546},"AI for Coding",{"href":547,"dataGaName":548,"dataGaLocation":436},"/topics/devops/ai-for-coding/","ai for coding",{"text":550,"config":551},"Agentic AI",{"href":552,"dataGaName":553,"dataGaLocation":436},"/topics/agentic-ai/","agentic ai",{"title":555,"links":556},"Solutions",[557,559,561,566,570,573,577,580,582,585,588,593],{"text":111,"config":558},{"href":106,"dataGaName":111,"dataGaLocation":436},{"text":100,"config":560},{"href":83,"dataGaName":84,"dataGaLocation":436},{"text":562,"config":563},"Agile development",{"href":564,"dataGaName":565,"dataGaLocation":436},"/solutions/agile-delivery/","agile delivery",{"text":567,"config":568},"SCM",{"href":96,"dataGaName":569,"dataGaLocation":436},"source code management",{"text":515,"config":571},{"href":89,"dataGaName":572,"dataGaLocation":436},"continuous integration & delivery",{"text":574,"config":575},"Value stream management",{"href":139,"dataGaName":576,"dataGaLocation":436},"value stream management",{"text":520,"config":578},{"href":579,"dataGaName":523,"dataGaLocation":436},"/solutions/gitops/",{"text":149,"config":581},{"href":151,"dataGaName":152,"dataGaLocation":436},{"text":583,"config":584},"Small business",{"href":156,"dataGaName":157,"dataGaLocation":436},{"text":586,"config":587},"Public sector",{"href":161,"dataGaName":162,"dataGaLocation":436},{"text":589,"config":590},"Education",{"href":591,"dataGaName":592,"dataGaLocation":436},"/solutions/education/","education",{"text":594,"config":595},"Financial services",{"href":596,"dataGaName":597,"dataGaLocation":436},"/solutions/finance/","financial services",{"title":169,"links":599},[600,602,604,606,609,611,613,615,617,619,621,623],{"text":181,"config":601},{"href":183,"dataGaName":184,"dataGaLocation":436},{"text":186,"config":603},{"href":188,"dataGaName":189,"dataGaLocation":436},{"text":191,"config":605},{"href":193,"dataGaName":194,"dataGaLocation":436},{"text":196,"config":607},{"href":198,"dataGaName":608,"dataGaLocation":436},"docs",{"text":219,"config":610},{"href":221,"dataGaName":222,"dataGaLocation":436},{"text":214,"config":612},{"href":216,"dataGaName":217,"dataGaLocation":436},{"text":224,"config":614},{"href":226,"dataGaName":227,"dataGaLocation":436},{"text":232,"config":616},{"href":234,"dataGaName":235,"dataGaLocation":436},{"text":237,"config":618},{"href":239,"dataGaName":240,"dataGaLocation":436},{"text":242,"config":620},{"href":244,"dataGaName":245,"dataGaLocation":436},{"text":247,"config":622},{"href":249,"dataGaName":250,"dataGaLocation":436},{"text":252,"config":624},{"href":254,"dataGaName":255,"dataGaLocation":436},{"title":270,"links":626},[627,629,631,633,635,637,639,643,648,650,652,654],{"text":277,"config":628},{"href":279,"dataGaName":272,"dataGaLocation":436},{"text":282,"config":630},{"href":284,"dataGaName":285,"dataGaLocation":436},{"text":290,"config":632},{"href":292,"dataGaName":293,"dataGaLocation":436},{"text":295,"config":634},{"href":297,"dataGaName":298,"dataGaLocation":436},{"text":300,"config":636},{"href":302,"dataGaName":303,"dataGaLocation":436},{"text":305,"config":638},{"href":307,"dataGaName":308,"dataGaLocation":436},{"text":640,"config":641},"Sustainability",{"href":642,"dataGaName":640,"dataGaLocation":436},"/sustainability/",{"text":644,"config":645},"Diversity, inclusion and belonging (DIB)",{"href":646,"dataGaName":647,"dataGaLocation":436},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":310,"config":649},{"href":312,"dataGaName":313,"dataGaLocation":436},{"text":320,"config":651},{"href":322,"dataGaName":323,"dataGaLocation":436},{"text":325,"config":653},{"href":327,"dataGaName":328,"dataGaLocation":436},{"text":655,"config":656},"Modern Slavery Transparency Statement",{"href":657,"dataGaName":658,"dataGaLocation":436},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":660},[661,664,667],{"text":662,"config":663},"Terms",{"href":488,"dataGaName":489,"dataGaLocation":436},{"text":665,"config":666},"Cookies",{"dataGaName":498,"dataGaLocation":436,"id":499,"isOneTrustButton":13},{"text":668,"config":669},"Privacy",{"href":493,"dataGaName":494,"dataGaLocation":436},[671,682,692,703,713,726,735,744,753,764,774,784,793,802,811,820,830,840,840,849,860,870,878,888,898,908,917,927,937,948,958,969,980,990,1000,1009,1018,1028,1038,1048,1058,1068,1078,1086],{"content":672,"config":680},{"title":673,"heroImage":674,"category":675,"description":676,"authors":677,"date":679},"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.",[678],"Cesar Saavedra","2024-10-17",{"slug":681,"externalUrl":-1},"use-gitlab-duo-to-build-and-deploy-a-simple-quarkus-native-project",{"content":683,"config":690},{"title":684,"heroImage":685,"category":538,"description":686,"authors":687,"date":689},"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.",[688],"Sharon Gaudin","2023-01-17",{"slug":691,"externalUrl":-1},"devsecops-platforms-help-smbs-scale-as-they-grow",{"content":693,"config":701},{"title":694,"heroImage":695,"category":696,"description":697,"authors":698,"date":700},"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.",[699],"Brendan O'Leary","2022-03-14",{"slug":702,"externalUrl":-1},"installing-gitlab-on-raspberry-pi-64-bit-os",{"content":704,"config":711},{"title":705,"heroImage":706,"category":696,"description":707,"authors":708,"date":710},"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.",[709],"William Arias","2021-11-08",{"slug":712,"externalUrl":-1},"machine-learning-on-the-gitlab-devops-platform",{"content":714,"config":724},{"title":715,"heroImage":716,"category":717,"description":718,"authors":719,"date":723},"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.",[720,721,722],"Ross Fuhrman","Anshuman Singh","Julian Thome","2021-09-08",{"slug":725,"externalUrl":-1},"write-vulnerability-detection-rules",{"content":727,"config":733},{"title":728,"heroImage":729,"category":696,"description":730,"authors":731,"date":732},"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.",[678],"2021-08-10",{"slug":734,"externalUrl":-1},"how-to-agentless-gitops-aws",{"content":736,"config":742},{"title":737,"heroImage":738,"category":696,"description":739,"authors":740,"date":741},"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.",[678],"2021-07-23",{"slug":743,"externalUrl":-1},"how-to-agentless-gitops-vars",{"content":745,"config":751},{"title":746,"heroImage":747,"category":696,"description":748,"authors":749,"date":750},"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",[678],"2021-06-23",{"slug":752,"externalUrl":-1},"how-to-use-agent-based-gitops",{"content":754,"config":762},{"title":755,"heroImage":756,"category":757,"description":758,"authors":759,"date":761},"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.",[760],"Darren Murph","2021-02-17",{"slug":763,"externalUrl":-1},"considerations-for-going-hybrid-remote",{"content":765,"config":772},{"title":766,"heroImage":767,"category":768,"description":769,"authors":770,"date":771},"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.",[678],"2021-01-22",{"slug":773,"externalUrl":-1},"cd-automated-integrated",{"content":775,"config":782},{"title":776,"heroImage":777,"category":768,"description":778,"authors":779,"date":781},"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.",[780],"Nicole Schwartz","2021-01-14",{"slug":783,"externalUrl":-1},"try-dependency-scanning",{"content":785,"config":791},{"title":786,"heroImage":787,"category":696,"description":788,"authors":789,"date":790},"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.",[678],"2020-12-17",{"slug":792,"externalUrl":-1},"cd-solution-overview",{"content":794,"config":800},{"title":795,"heroImage":796,"category":696,"description":797,"authors":798,"date":790},"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.",[799],"Sara Kassabian",{"slug":801,"externalUrl":-1},"gitlab-for-cicd-agile-gitops-cloudnative",{"content":803,"config":809},{"title":804,"heroImage":805,"category":768,"description":806,"authors":807,"date":808},"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.",[678],"2020-11-23",{"slug":810,"externalUrl":-1},"cd-unified-monitor-deploy",{"content":812,"config":818},{"title":813,"heroImage":814,"category":768,"description":815,"authors":816,"date":817},"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.",[678],"2020-09-30",{"slug":819,"externalUrl":-1},"enables-rapid-innovation",{"content":821,"config":828},{"title":822,"heroImage":823,"category":768,"description":824,"authors":825,"date":827},"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.",[826],"Meghan Maneval","2020-08-27",{"slug":829,"externalUrl":-1},"applying-risk-management-to-remote-learning",{"content":831,"config":838},{"title":832,"heroImage":833,"category":717,"description":834,"authors":835,"date":837},"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.",[836],"Thiago Figueiró","2020-07-28",{"slug":839,"externalUrl":-1},"container-security-in-gitlab",{"content":841,"config":847},{"title":842,"heroImage":843,"category":768,"description":844,"authors":845,"date":846},"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.",[760],"2020-05-22",{"slug":848,"externalUrl":-1},"gitlab-remote-ceo-shadow-takeaways",{"content":850,"config":858},{"title":851,"heroImage":852,"category":853,"description":854,"authors":855,"date":857},"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.",[856],"Kushal Koolwal","2020-05-15",{"slug":859,"externalUrl":-1},"gitlab-arm-aws-graviton2-solution",{"content":861,"config":868},{"title":862,"heroImage":863,"category":696,"description":864,"authors":865,"date":867},"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.",[866],"Abubakar Siddiq Ango","2020-05-05",{"slug":869,"externalUrl":-1},"deploying-application-eks",{"content":871,"config":876},{"title":872,"heroImage":863,"category":696,"description":873,"authors":874,"date":875},"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.",[866],"2020-03-09",{"slug":877,"externalUrl":-1},"gitlab-eks-integration-how-to",{"content":879,"config":886},{"title":880,"heroImage":881,"category":696,"description":882,"authors":883,"date":885},"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.",[884],"Thao Yeager","2020-02-20",{"slug":887,"externalUrl":-1},"protecting-manual-jobs",{"content":889,"config":896},{"title":890,"heroImage":891,"category":757,"description":892,"authors":893,"date":895},"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.",[894],"Taylor Murphy","2020-02-10",{"slug":897,"externalUrl":-1},"lessons-learned-as-data-team-manager",{"content":899,"config":906},{"title":900,"heroImage":901,"category":696,"description":902,"authors":903,"date":905},"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.",[904],"Orit Golowinski","2020-01-30",{"slug":907,"externalUrl":-1},"all-aboard-merge-trains",{"content":909,"config":915},{"title":910,"heroImage":911,"category":768,"description":912,"authors":913,"date":914},"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",[709],"2020-01-22",{"slug":916,"externalUrl":-1},"gitlab-apis-ci",{"content":918,"config":925},{"title":919,"heroImage":920,"category":272,"description":921,"authors":922,"date":924},"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.",[923],"Gabe Weaver","2019-12-05",{"slug":926,"externalUrl":-1},"how-to-setup-gitlab-for-multiple-product-teams",{"content":928,"config":935},{"title":929,"heroImage":930,"category":768,"description":931,"authors":932,"date":934},"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.",[933],"Emilie Schario","2019-11-04",{"slug":936,"externalUrl":-1},"three-levels-data-analysis",{"content":938,"config":946},{"title":939,"heroImage":940,"category":941,"description":942,"authors":943,"date":945},"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?",[944],"Chrissie Buchanan","2019-09-12",{"slug":947,"externalUrl":-1},"is-serverless-the-end-of-ops",{"content":949,"config":956},{"title":950,"heroImage":951,"category":696,"description":952,"authors":953,"date":955},"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!",[954],"Shinya Maeda","2019-09-11",{"slug":957,"externalUrl":-1},"how-to-avoid-broken-master-with-pipelines-for-merge-requests",{"content":959,"config":967},{"title":960,"heroImage":961,"category":696,"description":962,"authors":963,"date":966},"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.",[964,965],"George Kichukov","Salahddine Aberkan","2019-07-01",{"slug":968,"externalUrl":-1},"using-ansible-and-gitlab-as-infrastructure-for-code",{"content":970,"config":978},{"title":971,"heroImage":972,"category":973,"description":974,"authors":975,"date":977},"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.",[976],"Priyanka Sharma","2019-05-21",{"slug":979,"externalUrl":-1},"fluentd-using-gitlab-ci-cd",{"content":981,"config":988},{"title":982,"heroImage":983,"category":272,"description":984,"authors":985,"date":987},"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.",[986],"GitLab","2019-05-20",{"slug":989,"externalUrl":-1},"gitlab-first-deployed-kubernetes-api-to-multiple-clouds",{"content":991,"config":998},{"title":992,"heroImage":993,"category":696,"description":994,"authors":995,"date":997},"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.",[996],"Jason Yavorska","2019-02-20",{"slug":999,"externalUrl":-1},"start-using-pages-quickly",{"content":1001,"config":1007},{"title":1002,"heroImage":863,"category":696,"description":1003,"authors":1004,"date":1006},"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.",[1005],"Forrest Brazeal","2019-02-04",{"slug":1008,"externalUrl":-1},"multi-account-aws-sam-deployments-with-gitlab-ci",{"content":1010,"config":1016},{"title":1011,"heroImage":1012,"category":272,"description":1013,"authors":1014,"date":1015},"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.",[976],"2018-12-06",{"slug":1017,"externalUrl":-1},"aws-reinvent-recap",{"content":1019,"config":1026},{"title":1020,"heroImage":1021,"category":696,"description":1022,"authors":1023,"date":1025},"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!",[1024],"Jacob Schatz","2018-10-08",{"slug":1027,"externalUrl":-1},"meltano-functional-group-update-post",{"content":1029,"config":1036},{"title":1030,"heroImage":1031,"category":696,"description":1032,"authors":1033,"date":1035},"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.",[1034],"William Chia","2018-10-03",{"slug":1037,"externalUrl":-1},"working-on-two-git-branches-at-the-same-time",{"content":1039,"config":1046},{"title":1040,"heroImage":1041,"category":973,"description":1042,"authors":1043,"date":1045},"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.",[1044],"Lin Jen-Shin","2018-08-23",{"slug":1047,"externalUrl":-1},"contributing-to-gitlab-with-ease",{"content":1049,"config":1056},{"title":1050,"heroImage":1051,"category":696,"description":1052,"authors":1053,"date":1055},"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.",[1054],"Rebecca Dodd","2018-08-17",{"slug":1057,"externalUrl":-1},"gitlab-markdown-tutorial",{"content":1059,"config":1066},{"title":1060,"heroImage":1061,"category":272,"description":1062,"authors":1063,"date":1065},"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.",[1064],"Joel Krooswyk","2018-07-30",{"slug":1067,"externalUrl":-1},"gitlab-workflow-with-jira-jenkins",{"content":1069,"config":1076},{"title":1070,"heroImage":1071,"category":696,"description":1072,"authors":1073,"date":1075},"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.",[1074],"Suri Patel","2018-05-10",{"slug":1077,"externalUrl":-1},"gke-webcast-recap-post",{"content":1079,"config":1084},{"title":1080,"heroImage":1071,"category":696,"description":1081,"authors":1082,"date":1083},"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.",[986],"2018-04-24",{"slug":1085,"externalUrl":-1},"getting-started-gitlab-ci-gcp",{"content":1087,"config":1094},{"title":1088,"heroImage":1089,"category":696,"description":1090,"authors":1091,"date":1093},"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.",[1092],"Fatih Acet","2018-03-01",{"slug":1095,"externalUrl":-1},"gitlab-vscode-extension",1772652085159]