[{"data":1,"prerenderedAt":879},["ShallowReactive",2],{"/en-us/blog/authors/brendan-oleary":3,"navigation-en-us":21,"banner-en-us":442,"footer-en-us":453,"blog-author-posts-en-us-brendan-oleary":695},{"id":4,"title":5,"body":6,"config":7,"content":9,"description":6,"extension":14,"meta":15,"navigation":16,"path":17,"seo":18,"stem":19,"__hash__":20},"blogAuthors/en-us/blog/authors/brendan-oleary.yml","Brendan Oleary",null,{"template":8},"BlogAuthor",{"name":10,"config":11},"Brendan O'Leary",{"headshot":12,"ctfId":13},"","brendan","yml",{},true,"/en-us/blog/authors/brendan-oleary",{},"en-us/blog/authors/brendan-oleary","IkXVLft77WlFK-Vgo210ZM3Io_PCcrXnYzkBCzx153k",{"logo":22,"freeTrial":27,"sales":32,"login":37,"items":42,"search":362,"minimal":393,"duo":412,"switchNav":421,"pricingDeployment":432},{"config":23},{"href":24,"dataGaName":25,"dataGaLocation":26},"/","gitlab logo","header",{"text":28,"config":29},"Get free trial",{"href":30,"dataGaName":31,"dataGaLocation":26},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":33,"config":34},"Talk to sales",{"href":35,"dataGaName":36,"dataGaLocation":26},"/sales/","sales",{"text":38,"config":39},"Sign in",{"href":40,"dataGaName":41,"dataGaLocation":26},"https://gitlab.com/users/sign_in/","sign in",[43,72,172,177,281,342],{"text":44,"config":45,"menu":47},"Platform",{"dataNavLevelOne":46},"platform",{"type":48,"columns":49},"cards",[50,56,64],{"title":44,"description":51,"link":52},"The intelligent orchestration platform for DevSecOps",{"text":53,"config":54},"Explore our Platform",{"href":55,"dataGaName":46,"dataGaLocation":26},"/platform/",{"title":57,"description":58,"link":59},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":60,"config":61},"Meet GitLab Duo",{"href":62,"dataGaName":63,"dataGaLocation":26},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":65,"description":66,"link":67},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":68,"config":69},"Learn more",{"href":70,"dataGaName":71,"dataGaLocation":26},"/why-gitlab/","why gitlab",{"text":73,"left":16,"config":74,"menu":76},"Product",{"dataNavLevelOne":75},"solutions",{"type":77,"link":78,"columns":82,"feature":151},"lists",{"text":79,"config":80},"View all Solutions",{"href":81,"dataGaName":75,"dataGaLocation":26},"/solutions/",[83,107,130],{"title":84,"description":85,"link":86,"items":91},"Automation","CI/CD and automation to accelerate deployment",{"config":87},{"icon":88,"href":89,"dataGaName":90,"dataGaLocation":26},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[92,96,99,103],{"text":93,"config":94},"CI/CD",{"href":95,"dataGaLocation":26,"dataGaName":93},"/solutions/continuous-integration/",{"text":57,"config":97},{"href":62,"dataGaLocation":26,"dataGaName":98},"gitlab duo agent platform - product menu",{"text":100,"config":101},"Source Code Management",{"href":102,"dataGaLocation":26,"dataGaName":100},"/solutions/source-code-management/",{"text":104,"config":105},"Automated Software Delivery",{"href":89,"dataGaLocation":26,"dataGaName":106},"Automated software delivery",{"title":108,"description":109,"link":110,"items":115},"Security","Deliver code faster without compromising security",{"config":111},{"href":112,"dataGaName":113,"dataGaLocation":26,"icon":114},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[116,120,125],{"text":117,"config":118},"Application Security Testing",{"href":112,"dataGaName":119,"dataGaLocation":26},"Application security testing",{"text":121,"config":122},"Software Supply Chain Security",{"href":123,"dataGaLocation":26,"dataGaName":124},"/solutions/supply-chain/","Software supply chain security",{"text":126,"config":127},"Software Compliance",{"href":128,"dataGaName":129,"dataGaLocation":26},"/solutions/software-compliance/","software compliance",{"title":131,"link":132,"items":137},"Measurement",{"config":133},{"icon":134,"href":135,"dataGaName":136,"dataGaLocation":26},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[138,142,146],{"text":139,"config":140},"Visibility & Measurement",{"href":135,"dataGaLocation":26,"dataGaName":141},"Visibility and Measurement",{"text":143,"config":144},"Value Stream Management",{"href":145,"dataGaLocation":26,"dataGaName":143},"/solutions/value-stream-management/",{"text":147,"config":148},"Analytics & Insights",{"href":149,"dataGaLocation":26,"dataGaName":150},"/solutions/analytics-and-insights/","Analytics and insights",{"title":152,"type":77,"items":153},"GitLab for",[154,160,166],{"text":155,"config":156},"Enterprise",{"icon":157,"href":158,"dataGaLocation":26,"dataGaName":159},"Building","/enterprise/","enterprise",{"text":161,"config":162},"Small Business",{"icon":163,"href":164,"dataGaLocation":26,"dataGaName":165},"Work","/small-business/","small business",{"text":167,"config":168},"Public Sector",{"icon":169,"href":170,"dataGaLocation":26,"dataGaName":171},"Organization","/solutions/public-sector/","public sector",{"text":173,"config":174},"Pricing",{"href":175,"dataGaName":176,"dataGaLocation":26,"dataNavLevelOne":176},"/pricing/","pricing",{"text":178,"config":179,"menu":181},"Resources",{"dataNavLevelOne":180},"resources",{"type":77,"link":182,"columns":186,"feature":270},{"text":183,"config":184},"View all resources",{"href":185,"dataGaName":180,"dataGaLocation":26},"/resources/",[187,220,242],{"title":188,"items":189},"Getting started",[190,195,200,205,210,215],{"text":191,"config":192},"Install",{"href":193,"dataGaName":194,"dataGaLocation":26},"/install/","install",{"text":196,"config":197},"Quick start guides",{"href":198,"dataGaName":199,"dataGaLocation":26},"/get-started/","quick setup checklists",{"text":201,"config":202},"Learn",{"href":203,"dataGaLocation":26,"dataGaName":204},"https://university.gitlab.com/","learn",{"text":206,"config":207},"Product documentation",{"href":208,"dataGaName":209,"dataGaLocation":26},"https://docs.gitlab.com/","product documentation",{"text":211,"config":212},"Best practice videos",{"href":213,"dataGaName":214,"dataGaLocation":26},"/getting-started-videos/","best practice videos",{"text":216,"config":217},"Integrations",{"href":218,"dataGaName":219,"dataGaLocation":26},"/integrations/","integrations",{"title":221,"items":222},"Discover",[223,228,233,237],{"text":224,"config":225},"Customer success stories",{"href":226,"dataGaName":227,"dataGaLocation":26},"/customers/","customer success stories",{"text":229,"config":230},"Blog",{"href":231,"dataGaName":232,"dataGaLocation":26},"/blog/","blog",{"text":234,"config":235},"The Source",{"href":236,"dataGaName":232,"dataGaLocation":26},"/the-source/",{"text":238,"config":239},"Remote",{"href":240,"dataGaName":241,"dataGaLocation":26},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":243,"items":244},"Connect",[245,250,255,260,265],{"text":246,"config":247},"GitLab Services",{"href":248,"dataGaName":249,"dataGaLocation":26},"/services/","services",{"text":251,"config":252},"Community",{"href":253,"dataGaName":254,"dataGaLocation":26},"/community/","community",{"text":256,"config":257},"Forum",{"href":258,"dataGaName":259,"dataGaLocation":26},"https://forum.gitlab.com/","forum",{"text":261,"config":262},"Events",{"href":263,"dataGaName":264,"dataGaLocation":26},"/events/","events",{"text":266,"config":267},"Partners",{"href":268,"dataGaName":269,"dataGaLocation":26},"/partners/","partners",{"config":271,"title":274,"text":275,"link":276},{"background":272,"textColor":273},"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":277,"config":278},"Read the latest",{"href":279,"dataGaName":280,"dataGaLocation":26},"/releases/whats-new/","whats new",{"text":282,"config":283,"menu":285},"Company",{"dataNavLevelOne":284},"company",{"type":77,"columns":286},[287],{"items":288},[289,294,300,302,307,312,317,322,327,332,337],{"text":290,"config":291},"About",{"href":292,"dataGaName":293,"dataGaLocation":26},"/company/","about",{"text":295,"config":296,"footerGa":299},"Jobs",{"href":297,"dataGaName":298,"dataGaLocation":26},"/jobs/","jobs",{"dataGaName":298},{"text":261,"config":301},{"href":263,"dataGaName":264,"dataGaLocation":26},{"text":303,"config":304},"Leadership",{"href":305,"dataGaName":306,"dataGaLocation":26},"/company/team/e-group/","leadership",{"text":308,"config":309},"Team",{"href":310,"dataGaName":311,"dataGaLocation":26},"/company/team/","team",{"text":313,"config":314},"Handbook",{"href":315,"dataGaName":316,"dataGaLocation":26},"https://handbook.gitlab.com/","handbook",{"text":318,"config":319},"Investor relations",{"href":320,"dataGaName":321,"dataGaLocation":26},"https://ir.gitlab.com/","investor relations",{"text":323,"config":324},"Trust Center",{"href":325,"dataGaName":326,"dataGaLocation":26},"/security/","trust center",{"text":328,"config":329},"AI Transparency Center",{"href":330,"dataGaName":331,"dataGaLocation":26},"/ai-transparency-center/","ai transparency center",{"text":333,"config":334},"Newsletter",{"href":335,"dataGaName":336,"dataGaLocation":26},"/company/contact/#contact-forms","newsletter",{"text":338,"config":339},"Press",{"href":340,"dataGaName":341,"dataGaLocation":26},"/press/","press",{"text":343,"config":344,"menu":345},"Contact us",{"dataNavLevelOne":284},{"type":77,"columns":346},[347],{"items":348},[349,352,357],{"text":33,"config":350},{"href":35,"dataGaName":351,"dataGaLocation":26},"talk to sales",{"text":353,"config":354},"Support portal",{"href":355,"dataGaName":356,"dataGaLocation":26},"https://support.gitlab.com","support portal",{"text":358,"config":359},"Customer portal",{"href":360,"dataGaName":361,"dataGaLocation":26},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":363,"login":364,"suggestions":371},"Close",{"text":365,"link":366},"To search repositories and projects, login to",{"text":367,"config":368},"gitlab.com",{"href":40,"dataGaName":369,"dataGaLocation":370},"search login","search",{"text":372,"default":373},"Suggestions",[374,376,380,382,386,390],{"text":57,"config":375},{"href":62,"dataGaName":57,"dataGaLocation":370},{"text":377,"config":378},"Code Suggestions (AI)",{"href":379,"dataGaName":377,"dataGaLocation":370},"/solutions/code-suggestions/",{"text":93,"config":381},{"href":95,"dataGaName":93,"dataGaLocation":370},{"text":383,"config":384},"GitLab on AWS",{"href":385,"dataGaName":383,"dataGaLocation":370},"/partners/technology-partners/aws/",{"text":387,"config":388},"GitLab on Google Cloud",{"href":389,"dataGaName":387,"dataGaLocation":370},"/partners/technology-partners/google-cloud-platform/",{"text":391,"config":392},"Why GitLab?",{"href":70,"dataGaName":391,"dataGaLocation":370},{"freeTrial":394,"mobileIcon":399,"desktopIcon":404,"secondaryButton":407},{"text":395,"config":396},"Start free trial",{"href":397,"dataGaName":31,"dataGaLocation":398},"https://gitlab.com/-/trials/new/","nav",{"altText":400,"config":401},"Gitlab Icon",{"src":402,"dataGaName":403,"dataGaLocation":398},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":400,"config":405},{"src":406,"dataGaName":403,"dataGaLocation":398},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":408,"config":409},"Get Started",{"href":410,"dataGaName":411,"dataGaLocation":398},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":413,"mobileIcon":417,"desktopIcon":419},{"text":414,"config":415},"Learn more about GitLab Duo",{"href":62,"dataGaName":416,"dataGaLocation":398},"gitlab duo",{"altText":400,"config":418},{"src":402,"dataGaName":403,"dataGaLocation":398},{"altText":400,"config":420},{"src":406,"dataGaName":403,"dataGaLocation":398},{"button":422,"mobileIcon":427,"desktopIcon":429},{"text":423,"config":424},"/switch",{"href":425,"dataGaName":426,"dataGaLocation":398},"#contact","switch",{"altText":400,"config":428},{"src":402,"dataGaName":403,"dataGaLocation":398},{"altText":400,"config":430},{"src":431,"dataGaName":403,"dataGaLocation":398},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":433,"mobileIcon":438,"desktopIcon":440},{"text":434,"config":435},"Back to pricing",{"href":175,"dataGaName":436,"dataGaLocation":398,"icon":437},"back to pricing","GoBack",{"altText":400,"config":439},{"src":402,"dataGaName":403,"dataGaLocation":398},{"altText":400,"config":441},{"src":406,"dataGaName":403,"dataGaLocation":398},{"title":443,"button":444,"config":449},"See how agentic AI transforms software delivery",{"text":445,"config":446},"Sign up for GitLab Transcend on June 10",{"href":447,"dataGaName":448,"dataGaLocation":26},"/releases/whats-new/#sign-up","transcend event",{"layout":450,"icon":451,"disabled":452},"release","AiStar",false,{"data":454},{"text":455,"source":456,"edit":462,"contribute":467,"config":472,"items":477,"minimal":684},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":457,"config":458},"View page source",{"href":459,"dataGaName":460,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":463,"config":464},"Edit this page",{"href":465,"dataGaName":466,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":468,"config":469},"Please contribute",{"href":470,"dataGaName":471,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":473,"facebook":474,"youtube":475,"linkedin":476},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[478,525,579,623,650],{"title":173,"links":479,"subMenu":494},[480,484,489],{"text":481,"config":482},"View plans",{"href":175,"dataGaName":483,"dataGaLocation":461},"view plans",{"text":485,"config":486},"Why Premium?",{"href":487,"dataGaName":488,"dataGaLocation":461},"/pricing/premium/","why premium",{"text":490,"config":491},"Why Ultimate?",{"href":492,"dataGaName":493,"dataGaLocation":461},"/pricing/ultimate/","why ultimate",[495],{"title":496,"links":497},"Contact Us",[498,501,503,505,510,515,520],{"text":499,"config":500},"Contact sales",{"href":35,"dataGaName":36,"dataGaLocation":461},{"text":353,"config":502},{"href":355,"dataGaName":356,"dataGaLocation":461},{"text":358,"config":504},{"href":360,"dataGaName":361,"dataGaLocation":461},{"text":506,"config":507},"Status",{"href":508,"dataGaName":509,"dataGaLocation":461},"https://status.gitlab.com/","status",{"text":511,"config":512},"Terms of use",{"href":513,"dataGaName":514,"dataGaLocation":461},"/terms/","terms of use",{"text":516,"config":517},"Privacy statement",{"href":518,"dataGaName":519,"dataGaLocation":461},"/privacy/","privacy statement",{"text":521,"config":522},"Cookie preferences",{"dataGaName":523,"dataGaLocation":461,"id":524,"isOneTrustButton":16},"cookie preferences","ot-sdk-btn",{"title":73,"links":526,"subMenu":535},[527,531],{"text":528,"config":529},"DevSecOps platform",{"href":55,"dataGaName":530,"dataGaLocation":461},"devsecops platform",{"text":532,"config":533},"AI-Assisted Development",{"href":62,"dataGaName":534,"dataGaLocation":461},"ai-assisted development",[536],{"title":537,"links":538},"Topics",[539,544,549,554,559,564,569,574],{"text":540,"config":541},"CICD",{"href":542,"dataGaName":543,"dataGaLocation":461},"/topics/ci-cd/","cicd",{"text":545,"config":546},"GitOps",{"href":547,"dataGaName":548,"dataGaLocation":461},"/topics/gitops/","gitops",{"text":550,"config":551},"DevOps",{"href":552,"dataGaName":553,"dataGaLocation":461},"/topics/devops/","devops",{"text":555,"config":556},"Version Control",{"href":557,"dataGaName":558,"dataGaLocation":461},"/topics/version-control/","version control",{"text":560,"config":561},"DevSecOps",{"href":562,"dataGaName":563,"dataGaLocation":461},"/topics/devsecops/","devsecops",{"text":565,"config":566},"Cloud Native",{"href":567,"dataGaName":568,"dataGaLocation":461},"/topics/cloud-native/","cloud native",{"text":570,"config":571},"AI for Coding",{"href":572,"dataGaName":573,"dataGaLocation":461},"/topics/devops/ai-for-coding/","ai for coding",{"text":575,"config":576},"Agentic AI",{"href":577,"dataGaName":578,"dataGaLocation":461},"/topics/agentic-ai/","agentic ai",{"title":580,"links":581},"Solutions",[582,584,586,591,595,598,602,605,607,610,613,618],{"text":117,"config":583},{"href":112,"dataGaName":117,"dataGaLocation":461},{"text":106,"config":585},{"href":89,"dataGaName":90,"dataGaLocation":461},{"text":587,"config":588},"Agile development",{"href":589,"dataGaName":590,"dataGaLocation":461},"/solutions/agile-delivery/","agile delivery",{"text":592,"config":593},"SCM",{"href":102,"dataGaName":594,"dataGaLocation":461},"source code management",{"text":540,"config":596},{"href":95,"dataGaName":597,"dataGaLocation":461},"continuous integration & delivery",{"text":599,"config":600},"Value stream management",{"href":145,"dataGaName":601,"dataGaLocation":461},"value stream management",{"text":545,"config":603},{"href":604,"dataGaName":548,"dataGaLocation":461},"/solutions/gitops/",{"text":155,"config":606},{"href":158,"dataGaName":159,"dataGaLocation":461},{"text":608,"config":609},"Small business",{"href":164,"dataGaName":165,"dataGaLocation":461},{"text":611,"config":612},"Public sector",{"href":170,"dataGaName":171,"dataGaLocation":461},{"text":614,"config":615},"Education",{"href":616,"dataGaName":617,"dataGaLocation":461},"/solutions/education/","education",{"text":619,"config":620},"Financial services",{"href":621,"dataGaName":622,"dataGaLocation":461},"/solutions/finance/","financial services",{"title":178,"links":624},[625,627,629,631,634,636,638,640,642,644,646,648],{"text":191,"config":626},{"href":193,"dataGaName":194,"dataGaLocation":461},{"text":196,"config":628},{"href":198,"dataGaName":199,"dataGaLocation":461},{"text":201,"config":630},{"href":203,"dataGaName":204,"dataGaLocation":461},{"text":206,"config":632},{"href":208,"dataGaName":633,"dataGaLocation":461},"docs",{"text":229,"config":635},{"href":231,"dataGaName":232,"dataGaLocation":461},{"text":224,"config":637},{"href":226,"dataGaName":227,"dataGaLocation":461},{"text":238,"config":639},{"href":240,"dataGaName":241,"dataGaLocation":461},{"text":246,"config":641},{"href":248,"dataGaName":249,"dataGaLocation":461},{"text":251,"config":643},{"href":253,"dataGaName":254,"dataGaLocation":461},{"text":256,"config":645},{"href":258,"dataGaName":259,"dataGaLocation":461},{"text":261,"config":647},{"href":263,"dataGaName":264,"dataGaLocation":461},{"text":266,"config":649},{"href":268,"dataGaName":269,"dataGaLocation":461},{"title":282,"links":651},[652,654,656,658,660,662,664,668,673,675,677,679],{"text":290,"config":653},{"href":292,"dataGaName":284,"dataGaLocation":461},{"text":295,"config":655},{"href":297,"dataGaName":298,"dataGaLocation":461},{"text":303,"config":657},{"href":305,"dataGaName":306,"dataGaLocation":461},{"text":308,"config":659},{"href":310,"dataGaName":311,"dataGaLocation":461},{"text":313,"config":661},{"href":315,"dataGaName":316,"dataGaLocation":461},{"text":318,"config":663},{"href":320,"dataGaName":321,"dataGaLocation":461},{"text":665,"config":666},"Sustainability",{"href":667,"dataGaName":665,"dataGaLocation":461},"/sustainability/",{"text":669,"config":670},"Diversity, inclusion and belonging (DIB)",{"href":671,"dataGaName":672,"dataGaLocation":461},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":323,"config":674},{"href":325,"dataGaName":326,"dataGaLocation":461},{"text":333,"config":676},{"href":335,"dataGaName":336,"dataGaLocation":461},{"text":338,"config":678},{"href":340,"dataGaName":341,"dataGaLocation":461},{"text":680,"config":681},"Modern Slavery Transparency Statement",{"href":682,"dataGaName":683,"dataGaLocation":461},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":685},[686,689,692],{"text":687,"config":688},"Terms",{"href":513,"dataGaName":514,"dataGaLocation":461},{"text":690,"config":691},"Cookies",{"dataGaName":523,"dataGaLocation":461,"id":524,"isOneTrustButton":16},{"text":693,"config":694},"Privacy",{"href":518,"dataGaName":519,"dataGaLocation":461},[696,706,715,725,734,743,752,761,770,779,788,797,807,816,825,834,843,852,861,870],{"content":697,"config":704},{"title":698,"heroImage":699,"category":700,"description":701,"authors":702,"date":703},"How is AI/ML changing DevOps?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667540/Blog/Hero%20Images/devops-team-structure.jpg","insights","Can DevOps help AI/ML find maturity? Here are questions to consider.",[10],"2022-11-16",{"slug":705,"externalUrl":-1},"how-is-ai-ml-changing-devops",{"content":707,"config":713},{"title":708,"heroImage":709,"category":700,"description":710,"authors":711,"date":712},"What makes a great tech talk?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670658/Blog/Hero%20Images/data-startup-cognitive-logic-talks-migrating-to-gitlab.jpg","I've compiled some of my favorite tech talks to find out what makes them great.",[10],"2022-10-04",{"slug":714,"externalUrl":-1},"what-makes-a-great-tech-talk",{"content":716,"config":723},{"title":717,"heroImage":718,"category":719,"description":720,"authors":721,"date":722},"How to access GitLab on a private network with Tailscale","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679348/Blog/Hero%20Images/locks.jpg","engineering","If issues around a private network were preventing a permanent GitLab installation, Brendan O'Leary has the solution with Tailscale.",[10],"2022-07-21",{"slug":724,"externalUrl":-1},"how-to-access-gitlab-on-a-private-network-with-tailscale",{"content":726,"config":732},{"title":727,"heroImage":728,"category":563,"description":729,"authors":730,"date":731},"GitLab 15: The retrospective","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667845/Blog/Hero%20Images/gl15.jpg","GitLab was founded in 2011 but that was a world nearly unrecognizable today. Here's a look back at what life was like then.",[10],"2022-06-13",{"slug":733,"externalUrl":-1},"gitlab-15-the-retrospective",{"content":735,"config":741},{"title":736,"heroImage":737,"category":719,"description":738,"authors":739,"date":740},"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","A Raspberry Pi enthusiast tries to run GitLab on the new 64-bit OS...and here's what happened.",[10],"2022-03-14",{"slug":742,"externalUrl":-1},"installing-gitlab-on-raspberry-pi-64-bit-os",{"content":744,"config":750},{"title":745,"heroImage":746,"category":719,"description":747,"authors":748,"date":749},"How to protect GitLab-connected SSH key with Yubikey","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667202/Blog/Hero%20Images/gitlabultimatesecurity.jpg","Add a layer of security to SSH keys by restricting physical access to YubiKey.",[10],"2022-03-03",{"slug":751,"externalUrl":-1},"how-to-protect-gitlab-connected-ssh-key-with-yubikey",{"content":753,"config":759},{"title":754,"heroImage":755,"category":563,"description":756,"authors":757,"date":758},"The best of GitLab's DevOps Platform 2021","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667509/Blog/Hero%20Images/continuous-integration-from-jenkins-to-gitlab-using-docker.jpg","Some highlights from last year, and what to expect from 2022.",[10],"2022-02-18",{"slug":760,"externalUrl":-1},"the-best-of-gitlabs-devops-platform-2021",{"content":762,"config":768},{"title":763,"heroImage":764,"category":719,"description":765,"authors":766,"date":767},"How to code, build, and deploy from an iPad using GitLab and Gitpod","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670178/Blog/Hero%20Images/GitLab-Ops.png","Senior Developer Evangelist Brendan O'Leary tackles the challenge of doing DevOps from a tablet.",[10],"2022-02-10",{"slug":769,"externalUrl":-1},"how-to-code-build-and-deploy-from-an-ipad-using-gitlab-and-gitpod",{"content":771,"config":777},{"title":772,"heroImage":773,"category":700,"description":774,"authors":775,"date":776},"How ten steps over ten years led to the DevOps Platform","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg","It's been ten years since the first commit to GitLab! Here's a look at ten critical choices that shaped us.",[10],"2021-10-11",{"slug":778,"externalUrl":-1},"how-ten-steps-over-ten-years-led-to-the-devops-platform",{"content":780,"config":786},{"title":781,"heroImage":782,"category":563,"description":783,"authors":784,"date":785},"How GitLab's 5 new code review features will make life easier","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667400/Blog/Hero%20Images/lagos-techie-unsplash.jpg","Code reviews are hard to get right. Here are five new features in our DevOps Platform designed to streamline code reviews and provide vital context.",[10],"2021-09-09",{"slug":787,"externalUrl":-1},"5-code-review-features",{"content":789,"config":795},{"title":790,"heroImage":791,"category":700,"description":792,"authors":793,"date":794},"CNCF's 5 technologies to watch in 2021","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680997/Blog/Hero%20Images/clouds-cover.jpg","We predict how CNCF's five tech trends to watch will impact cloud native and the tech industry over the next year and beyond.",[10],"2020-11-24",{"slug":796,"externalUrl":-1},"cncf-five-technologies-to-watch-in-2021",{"content":798,"config":805},{"title":799,"heroImage":800,"category":801,"description":802,"authors":803,"date":804},"How to use HashiCorp Waypoint to deploy with GitLab CI/CD","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679260/Blog/Hero%20Images/using-hashicorp-waypoint-deploy-gitlab-cicd.jpg","news","Learn how to use Waypoint using GitLab CI/CD by following this step-by-step demo.",[10],"2020-10-15",{"slug":806,"externalUrl":-1},"use-waypoint-to-deploy-with-gitlab-cicd",{"content":808,"config":814},{"title":809,"heroImage":810,"category":700,"description":811,"authors":812,"date":813},"The developer-security divide: frank talk from both sides","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681492/Blog/Hero%20Images/puzzle.jpg","Data from our 2020 DevSecOps Survey shows dev and sec remain at odds over test, bug finding, fixes, and more. Can we be friends? Maybe.",[10],"2020-08-13",{"slug":815,"externalUrl":-1},"developer-security-divide",{"content":817,"config":823},{"title":818,"heroImage":819,"category":719,"description":820,"authors":821,"date":822},"Why GitOps should be the workflow of choice","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681239/Blog/Hero%20Images/shiro-hatori-WR-ifjFy4CI-unsplash.jpg","What is GitOps and how do you apply it in real-world applications?",[10],"2020-04-17",{"slug":824,"externalUrl":-1},"why-gitops-should-be-workflow-of-choice",{"content":826,"config":832},{"title":827,"heroImage":828,"category":700,"description":829,"authors":830,"date":831},"A guide to Git for beginners","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681222/Blog/Hero%20Images/git-15th-anniversary-cover.png","Our senior developer evangelist answers newbie questions about Git.",[10],"2020-04-13",{"slug":833,"externalUrl":-1},"beginner-git-guide",{"content":835,"config":841},{"title":836,"heroImage":837,"category":719,"description":838,"authors":839,"date":840},"How to leverage GitLab CI/CD for Google Firebase","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png","Firebase is a powerful backend-as-a-service tool and when combined with GitLab it can be easy to enable continuous deployment of database, serverless and apps.",[10],"2020-03-16",{"slug":842,"externalUrl":-1},"gitlab-ci-cd-with-firebase",{"content":844,"config":850},{"title":845,"heroImage":846,"category":284,"description":847,"authors":848,"date":849},"Why I'm so excited to go to GitLab Commit","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683818/Blog/Hero%20Images/in-new-york.jpg","Spoiler alert: It's that I'm going to get to see GitLabbers who I don't work with",[10],"2019-09-02",{"slug":851,"externalUrl":-1},"why-i-am-excited-about-gitlab-commit",{"content":853,"config":859},{"title":854,"heroImage":855,"category":719,"description":856,"authors":857,"date":858},"Getting [meta] with GitLab CI/CD: Building build images","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678567/Blog/Hero%20Images/building-blocks.jpg","Let's talk about building build images with GitLab CI/CD. The power of Docker as a build platform is unleashed when you get meta.",[10],"2019-08-28",{"slug":860,"externalUrl":-1},"building-build-images",{"content":862,"config":868},{"title":863,"heroImage":864,"category":719,"description":865,"authors":866,"date":867},"Introducing Auto Breakfast from GitLab (sort of)","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680054/Blog/Hero%20Images/auto-breakfast.jpg","GitLab can't make you breakfast? This is what happens when you tell a GitLab team member whose favorite catchphrase is \"Challenge accepted.\"",[10],"2018-06-29",{"slug":869,"externalUrl":-1},"introducing-auto-breakfast-from-gitlab",{"content":871,"config":877},{"title":872,"heroImage":873,"category":284,"description":874,"authors":875,"date":876},"Using GitLab to project manage home renovation priorities","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680235/Blog/Hero%20Images/home-improvement.jpg","Solutions Architect Brendan O'Leary shares how he and his family use GitLab Issue Boards for an unconventional purpose: home improvement prioritization!",[10],"2018-02-08",{"slug":878,"externalUrl":-1},"using-gitlab-to-manage-house-renovation-priorities",1777934797003]