[{"data":1,"prerenderedAt":1733},["ShallowReactive",2],{"/en-us/blog/tags/ci":3,"navigation-en-us":19,"banner-en-us":419,"footer-en-us":429,"CI-tag-posts-en-us":671},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":9,"description":6,"extension":12,"meta":13,"navigation":14,"path":15,"seo":16,"slug":6,"stem":17,"testContent":6,"type":6,"__hash__":18},"blogTags/en-us/blog/tags/ci.yml","Ci",null,{"template":8},"BlogTag",{"tag":10,"tagSlug":11},"CI","ci","yml",{},true,"/en-us/blog/tags/ci",{},"en-us/blog/tags/ci","LKJjHW0AsbZCnTGpG9olwWVSQ3vUg4Vg1ndHl56r5Fc",{"data":20},{"logo":21,"freeTrial":26,"sales":31,"login":36,"items":41,"search":349,"minimal":380,"duo":399,"pricingDeployment":409},{"config":22},{"href":23,"dataGaName":24,"dataGaLocation":25},"/","gitlab logo","header",{"text":27,"config":28},"Get free trial",{"href":29,"dataGaName":30,"dataGaLocation":25},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":32,"config":33},"Talk to sales",{"href":34,"dataGaName":35,"dataGaLocation":25},"/sales/","sales",{"text":37,"config":38},"Sign in",{"href":39,"dataGaName":40,"dataGaLocation":25},"https://gitlab.com/users/sign_in/","sign in",[42,69,164,169,270,330],{"text":43,"config":44,"cards":46},"Platform",{"dataNavLevelOne":45},"platform",[47,53,61],{"title":43,"description":48,"link":49},"The intelligent orchestration platform for DevSecOps",{"text":50,"config":51},"Explore our Platform",{"href":52,"dataGaName":45,"dataGaLocation":25},"/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":25},"/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":25},"/why-gitlab/","why gitlab",{"text":70,"left":14,"config":71,"link":73,"lists":77,"footer":146},"Product",{"dataNavLevelOne":72},"solutions",{"text":74,"config":75},"View all Solutions",{"href":76,"dataGaName":72,"dataGaLocation":25},"/solutions/",[78,102,125],{"title":79,"description":80,"link":81,"items":86},"Automation","CI/CD and automation to accelerate deployment",{"config":82},{"icon":83,"href":84,"dataGaName":85,"dataGaLocation":25},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[87,91,94,98],{"text":88,"config":89},"CI/CD",{"href":90,"dataGaLocation":25,"dataGaName":88},"/solutions/continuous-integration/",{"text":54,"config":92},{"href":59,"dataGaLocation":25,"dataGaName":93},"gitlab duo agent platform - product menu",{"text":95,"config":96},"Source Code Management",{"href":97,"dataGaLocation":25,"dataGaName":95},"/solutions/source-code-management/",{"text":99,"config":100},"Automated Software Delivery",{"href":84,"dataGaLocation":25,"dataGaName":101},"Automated software delivery",{"title":103,"description":104,"link":105,"items":110},"Security","Deliver code faster without compromising security",{"config":106},{"href":107,"dataGaName":108,"dataGaLocation":25,"icon":109},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[111,115,120],{"text":112,"config":113},"Application Security Testing",{"href":107,"dataGaName":114,"dataGaLocation":25},"Application security testing",{"text":116,"config":117},"Software Supply Chain Security",{"href":118,"dataGaLocation":25,"dataGaName":119},"/solutions/supply-chain/","Software supply chain security",{"text":121,"config":122},"Software Compliance",{"href":123,"dataGaName":124,"dataGaLocation":25},"/solutions/software-compliance/","software compliance",{"title":126,"link":127,"items":132},"Measurement",{"config":128},{"icon":129,"href":130,"dataGaName":131,"dataGaLocation":25},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[133,137,141],{"text":134,"config":135},"Visibility & Measurement",{"href":130,"dataGaLocation":25,"dataGaName":136},"Visibility and Measurement",{"text":138,"config":139},"Value Stream Management",{"href":140,"dataGaLocation":25,"dataGaName":138},"/solutions/value-stream-management/",{"text":142,"config":143},"Analytics & Insights",{"href":144,"dataGaLocation":25,"dataGaName":145},"/solutions/analytics-and-insights/","Analytics and insights",{"title":147,"items":148},"GitLab for",[149,154,159],{"text":150,"config":151},"Enterprise",{"href":152,"dataGaLocation":25,"dataGaName":153},"/enterprise/","enterprise",{"text":155,"config":156},"Small Business",{"href":157,"dataGaLocation":25,"dataGaName":158},"/small-business/","small business",{"text":160,"config":161},"Public Sector",{"href":162,"dataGaLocation":25,"dataGaName":163},"/solutions/public-sector/","public sector",{"text":165,"config":166},"Pricing",{"href":167,"dataGaName":168,"dataGaLocation":25,"dataNavLevelOne":168},"/pricing/","pricing",{"text":170,"config":171,"link":173,"lists":177,"feature":257},"Resources",{"dataNavLevelOne":172},"resources",{"text":174,"config":175},"View all resources",{"href":176,"dataGaName":172,"dataGaLocation":25},"/resources/",[178,211,229],{"title":179,"items":180},"Getting started",[181,186,191,196,201,206],{"text":182,"config":183},"Install",{"href":184,"dataGaName":185,"dataGaLocation":25},"/install/","install",{"text":187,"config":188},"Quick start guides",{"href":189,"dataGaName":190,"dataGaLocation":25},"/get-started/","quick setup checklists",{"text":192,"config":193},"Learn",{"href":194,"dataGaLocation":25,"dataGaName":195},"https://university.gitlab.com/","learn",{"text":197,"config":198},"Product documentation",{"href":199,"dataGaName":200,"dataGaLocation":25},"https://docs.gitlab.com/","product documentation",{"text":202,"config":203},"Best practice videos",{"href":204,"dataGaName":205,"dataGaLocation":25},"/getting-started-videos/","best practice videos",{"text":207,"config":208},"Integrations",{"href":209,"dataGaName":210,"dataGaLocation":25},"/integrations/","integrations",{"title":212,"items":213},"Discover",[214,219,224],{"text":215,"config":216},"Customer success stories",{"href":217,"dataGaName":218,"dataGaLocation":25},"/customers/","customer success stories",{"text":220,"config":221},"Blog",{"href":222,"dataGaName":223,"dataGaLocation":25},"/blog/","blog",{"text":225,"config":226},"Remote",{"href":227,"dataGaName":228,"dataGaLocation":25},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":230,"items":231},"Connect",[232,237,242,247,252],{"text":233,"config":234},"GitLab Services",{"href":235,"dataGaName":236,"dataGaLocation":25},"/services/","services",{"text":238,"config":239},"Community",{"href":240,"dataGaName":241,"dataGaLocation":25},"/community/","community",{"text":243,"config":244},"Forum",{"href":245,"dataGaName":246,"dataGaLocation":25},"https://forum.gitlab.com/","forum",{"text":248,"config":249},"Events",{"href":250,"dataGaName":251,"dataGaLocation":25},"/events/","events",{"text":253,"config":254},"Partners",{"href":255,"dataGaName":256,"dataGaLocation":25},"/partners/","partners",{"backgroundColor":258,"textColor":259,"text":260,"image":261,"link":265},"#2f2a6b","#fff","Insights for the future of software development",{"altText":262,"config":263},"the source promo card",{"src":264},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":266,"config":267},"Read the latest",{"href":268,"dataGaName":269,"dataGaLocation":25},"/the-source/","the source",{"text":271,"config":272,"lists":274},"Company",{"dataNavLevelOne":273},"company",[275],{"items":276},[277,282,288,290,295,300,305,310,315,320,325],{"text":278,"config":279},"About",{"href":280,"dataGaName":281,"dataGaLocation":25},"/company/","about",{"text":283,"config":284,"footerGa":287},"Jobs",{"href":285,"dataGaName":286,"dataGaLocation":25},"/jobs/","jobs",{"dataGaName":286},{"text":248,"config":289},{"href":250,"dataGaName":251,"dataGaLocation":25},{"text":291,"config":292},"Leadership",{"href":293,"dataGaName":294,"dataGaLocation":25},"/company/team/e-group/","leadership",{"text":296,"config":297},"Team",{"href":298,"dataGaName":299,"dataGaLocation":25},"/company/team/","team",{"text":301,"config":302},"Handbook",{"href":303,"dataGaName":304,"dataGaLocation":25},"https://handbook.gitlab.com/","handbook",{"text":306,"config":307},"Investor relations",{"href":308,"dataGaName":309,"dataGaLocation":25},"https://ir.gitlab.com/","investor relations",{"text":311,"config":312},"Trust Center",{"href":313,"dataGaName":314,"dataGaLocation":25},"/security/","trust center",{"text":316,"config":317},"AI Transparency Center",{"href":318,"dataGaName":319,"dataGaLocation":25},"/ai-transparency-center/","ai transparency center",{"text":321,"config":322},"Newsletter",{"href":323,"dataGaName":324,"dataGaLocation":25},"/company/contact/#contact-forms","newsletter",{"text":326,"config":327},"Press",{"href":328,"dataGaName":329,"dataGaLocation":25},"/press/","press",{"text":331,"config":332,"lists":333},"Contact us",{"dataNavLevelOne":273},[334],{"items":335},[336,339,344],{"text":32,"config":337},{"href":34,"dataGaName":338,"dataGaLocation":25},"talk to sales",{"text":340,"config":341},"Support portal",{"href":342,"dataGaName":343,"dataGaLocation":25},"https://support.gitlab.com","support portal",{"text":345,"config":346},"Customer portal",{"href":347,"dataGaName":348,"dataGaLocation":25},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":350,"login":351,"suggestions":358},"Close",{"text":352,"link":353},"To search repositories and projects, login to",{"text":354,"config":355},"gitlab.com",{"href":39,"dataGaName":356,"dataGaLocation":357},"search login","search",{"text":359,"default":360},"Suggestions",[361,363,367,369,373,377],{"text":54,"config":362},{"href":59,"dataGaName":54,"dataGaLocation":357},{"text":364,"config":365},"Code Suggestions (AI)",{"href":366,"dataGaName":364,"dataGaLocation":357},"/solutions/code-suggestions/",{"text":88,"config":368},{"href":90,"dataGaName":88,"dataGaLocation":357},{"text":370,"config":371},"GitLab on AWS",{"href":372,"dataGaName":370,"dataGaLocation":357},"/partners/technology-partners/aws/",{"text":374,"config":375},"GitLab on Google Cloud",{"href":376,"dataGaName":374,"dataGaLocation":357},"/partners/technology-partners/google-cloud-platform/",{"text":378,"config":379},"Why GitLab?",{"href":67,"dataGaName":378,"dataGaLocation":357},{"freeTrial":381,"mobileIcon":386,"desktopIcon":391,"secondaryButton":394},{"text":382,"config":383},"Start free trial",{"href":384,"dataGaName":30,"dataGaLocation":385},"https://gitlab.com/-/trials/new/","nav",{"altText":387,"config":388},"Gitlab Icon",{"src":389,"dataGaName":390,"dataGaLocation":385},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":387,"config":392},{"src":393,"dataGaName":390,"dataGaLocation":385},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":395,"config":396},"Get Started",{"href":397,"dataGaName":398,"dataGaLocation":385},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":400,"mobileIcon":405,"desktopIcon":407},{"text":401,"config":402},"Learn more about GitLab Duo",{"href":403,"dataGaName":404,"dataGaLocation":385},"/gitlab-duo/","gitlab duo",{"altText":387,"config":406},{"src":389,"dataGaName":390,"dataGaLocation":385},{"altText":387,"config":408},{"src":393,"dataGaName":390,"dataGaLocation":385},{"freeTrial":410,"mobileIcon":415,"desktopIcon":417},{"text":411,"config":412},"Back to pricing",{"href":167,"dataGaName":413,"dataGaLocation":385,"icon":414},"back to pricing","GoBack",{"altText":387,"config":416},{"src":389,"dataGaName":390,"dataGaLocation":385},{"altText":387,"config":418},{"src":393,"dataGaName":390,"dataGaLocation":385},{"title":420,"button":421,"config":426},"See how agentic AI transforms software delivery",{"text":422,"config":423},"Watch GitLab Transcend now",{"href":424,"dataGaName":425,"dataGaLocation":25},"/events/transcend/virtual/","transcend event",{"layout":427,"icon":428},"release","AiStar",{"data":430},{"text":431,"source":432,"edit":438,"contribute":443,"config":448,"items":453,"minimal":660},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":433,"config":434},"View page source",{"href":435,"dataGaName":436,"dataGaLocation":437},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":439,"config":440},"Edit this page",{"href":441,"dataGaName":442,"dataGaLocation":437},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":444,"config":445},"Please contribute",{"href":446,"dataGaName":447,"dataGaLocation":437},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":449,"facebook":450,"youtube":451,"linkedin":452},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[454,501,555,599,626],{"title":165,"links":455,"subMenu":470},[456,460,465],{"text":457,"config":458},"View plans",{"href":167,"dataGaName":459,"dataGaLocation":437},"view plans",{"text":461,"config":462},"Why Premium?",{"href":463,"dataGaName":464,"dataGaLocation":437},"/pricing/premium/","why premium",{"text":466,"config":467},"Why Ultimate?",{"href":468,"dataGaName":469,"dataGaLocation":437},"/pricing/ultimate/","why ultimate",[471],{"title":472,"links":473},"Contact Us",[474,477,479,481,486,491,496],{"text":475,"config":476},"Contact sales",{"href":34,"dataGaName":35,"dataGaLocation":437},{"text":340,"config":478},{"href":342,"dataGaName":343,"dataGaLocation":437},{"text":345,"config":480},{"href":347,"dataGaName":348,"dataGaLocation":437},{"text":482,"config":483},"Status",{"href":484,"dataGaName":485,"dataGaLocation":437},"https://status.gitlab.com/","status",{"text":487,"config":488},"Terms of use",{"href":489,"dataGaName":490,"dataGaLocation":437},"/terms/","terms of use",{"text":492,"config":493},"Privacy statement",{"href":494,"dataGaName":495,"dataGaLocation":437},"/privacy/","privacy statement",{"text":497,"config":498},"Cookie preferences",{"dataGaName":499,"dataGaLocation":437,"id":500,"isOneTrustButton":14},"cookie preferences","ot-sdk-btn",{"title":70,"links":502,"subMenu":511},[503,507],{"text":504,"config":505},"DevSecOps platform",{"href":52,"dataGaName":506,"dataGaLocation":437},"devsecops platform",{"text":508,"config":509},"AI-Assisted Development",{"href":403,"dataGaName":510,"dataGaLocation":437},"ai-assisted development",[512],{"title":513,"links":514},"Topics",[515,520,525,530,535,540,545,550],{"text":516,"config":517},"CICD",{"href":518,"dataGaName":519,"dataGaLocation":437},"/topics/ci-cd/","cicd",{"text":521,"config":522},"GitOps",{"href":523,"dataGaName":524,"dataGaLocation":437},"/topics/gitops/","gitops",{"text":526,"config":527},"DevOps",{"href":528,"dataGaName":529,"dataGaLocation":437},"/topics/devops/","devops",{"text":531,"config":532},"Version Control",{"href":533,"dataGaName":534,"dataGaLocation":437},"/topics/version-control/","version control",{"text":536,"config":537},"DevSecOps",{"href":538,"dataGaName":539,"dataGaLocation":437},"/topics/devsecops/","devsecops",{"text":541,"config":542},"Cloud Native",{"href":543,"dataGaName":544,"dataGaLocation":437},"/topics/cloud-native/","cloud native",{"text":546,"config":547},"AI for Coding",{"href":548,"dataGaName":549,"dataGaLocation":437},"/topics/devops/ai-for-coding/","ai for coding",{"text":551,"config":552},"Agentic AI",{"href":553,"dataGaName":554,"dataGaLocation":437},"/topics/agentic-ai/","agentic ai",{"title":556,"links":557},"Solutions",[558,560,562,567,571,574,578,581,583,586,589,594],{"text":112,"config":559},{"href":107,"dataGaName":112,"dataGaLocation":437},{"text":101,"config":561},{"href":84,"dataGaName":85,"dataGaLocation":437},{"text":563,"config":564},"Agile development",{"href":565,"dataGaName":566,"dataGaLocation":437},"/solutions/agile-delivery/","agile delivery",{"text":568,"config":569},"SCM",{"href":97,"dataGaName":570,"dataGaLocation":437},"source code management",{"text":516,"config":572},{"href":90,"dataGaName":573,"dataGaLocation":437},"continuous integration & delivery",{"text":575,"config":576},"Value stream management",{"href":140,"dataGaName":577,"dataGaLocation":437},"value stream management",{"text":521,"config":579},{"href":580,"dataGaName":524,"dataGaLocation":437},"/solutions/gitops/",{"text":150,"config":582},{"href":152,"dataGaName":153,"dataGaLocation":437},{"text":584,"config":585},"Small business",{"href":157,"dataGaName":158,"dataGaLocation":437},{"text":587,"config":588},"Public sector",{"href":162,"dataGaName":163,"dataGaLocation":437},{"text":590,"config":591},"Education",{"href":592,"dataGaName":593,"dataGaLocation":437},"/solutions/education/","education",{"text":595,"config":596},"Financial services",{"href":597,"dataGaName":598,"dataGaLocation":437},"/solutions/finance/","financial services",{"title":170,"links":600},[601,603,605,607,610,612,614,616,618,620,622,624],{"text":182,"config":602},{"href":184,"dataGaName":185,"dataGaLocation":437},{"text":187,"config":604},{"href":189,"dataGaName":190,"dataGaLocation":437},{"text":192,"config":606},{"href":194,"dataGaName":195,"dataGaLocation":437},{"text":197,"config":608},{"href":199,"dataGaName":609,"dataGaLocation":437},"docs",{"text":220,"config":611},{"href":222,"dataGaName":223,"dataGaLocation":437},{"text":215,"config":613},{"href":217,"dataGaName":218,"dataGaLocation":437},{"text":225,"config":615},{"href":227,"dataGaName":228,"dataGaLocation":437},{"text":233,"config":617},{"href":235,"dataGaName":236,"dataGaLocation":437},{"text":238,"config":619},{"href":240,"dataGaName":241,"dataGaLocation":437},{"text":243,"config":621},{"href":245,"dataGaName":246,"dataGaLocation":437},{"text":248,"config":623},{"href":250,"dataGaName":251,"dataGaLocation":437},{"text":253,"config":625},{"href":255,"dataGaName":256,"dataGaLocation":437},{"title":271,"links":627},[628,630,632,634,636,638,640,644,649,651,653,655],{"text":278,"config":629},{"href":280,"dataGaName":273,"dataGaLocation":437},{"text":283,"config":631},{"href":285,"dataGaName":286,"dataGaLocation":437},{"text":291,"config":633},{"href":293,"dataGaName":294,"dataGaLocation":437},{"text":296,"config":635},{"href":298,"dataGaName":299,"dataGaLocation":437},{"text":301,"config":637},{"href":303,"dataGaName":304,"dataGaLocation":437},{"text":306,"config":639},{"href":308,"dataGaName":309,"dataGaLocation":437},{"text":641,"config":642},"Sustainability",{"href":643,"dataGaName":641,"dataGaLocation":437},"/sustainability/",{"text":645,"config":646},"Diversity, inclusion and belonging (DIB)",{"href":647,"dataGaName":648,"dataGaLocation":437},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":311,"config":650},{"href":313,"dataGaName":314,"dataGaLocation":437},{"text":321,"config":652},{"href":323,"dataGaName":324,"dataGaLocation":437},{"text":326,"config":654},{"href":328,"dataGaName":329,"dataGaLocation":437},{"text":656,"config":657},"Modern Slavery Transparency Statement",{"href":658,"dataGaName":659,"dataGaLocation":437},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":661},[662,665,668],{"text":663,"config":664},"Terms",{"href":489,"dataGaName":490,"dataGaLocation":437},{"text":666,"config":667},"Cookies",{"dataGaName":499,"dataGaLocation":437,"id":500,"isOneTrustButton":14},{"text":669,"config":670},"Privacy",{"href":494,"dataGaName":495,"dataGaLocation":437},[672,683,692,703,713,725,735,745,756,766,776,787,797,807,817,827,837,847,856,865,875,885,895,906,916,926,936,945,953,964,974,982,991,1000,1009,1019,1028,1038,1048,1058,1067,1077,1087,1096,1105,1117,1126,1137,1147,1157,1168,1178,1188,1198,1207,1216,1226,1235,1244,1254,1264,1273,1282,1292,1300,1309,1317,1327,1336,1345,1355,1364,1373,1381,1390,1400,1410,1419,1429,1437,1446,1455,1465,1475,1475,1484,1492,1501,1501,1510,1520,1529,1537,1547,1557,1566,1577,1586,1596,1606,1616,1626,1636,1646,1656,1666,1676,1685,1695,1705,1714,1723],{"content":673,"config":681},{"title":674,"heroImage":675,"category":676,"description":677,"authors":678,"date":680},"Getting started with GitLab: Working with CI/CD variables","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659525/Blog/Hero%20Images/blog-getting-started-with-gitlab-banner-0497-option4-fy25.png","product","Learn what CI/CD variables are, why they are important in DevSecOps, and best practices for utilizing them.",[679],"GitLab Team","2025-05-27",{"slug":682,"externalUrl":-1},"getting-started-with-gitlab-working-with-ci-cd-variables",{"content":684,"config":690},{"title":685,"heroImage":675,"category":676,"description":686,"authors":687,"date":689},"Getting started with GitLab: Understanding CI/CD","Learn the basics of continuous integration/continuous delivery in this beginner's guide, including what CI/CD components are and how to create them.",[688],"GitLab","2025-04-25",{"slug":691,"externalUrl":-1},"getting-started-with-gitlab-understanding-ci-cd",{"content":693,"config":701},{"title":694,"heroImage":695,"category":696,"description":697,"authors":698,"date":700},"Secure and publish Python packages: A guide to CI integration","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662080/Blog/Hero%20Images/AdobeStock_1097303277.jpg","security","Learn how to implement a secure CI/CD pipeline across five stages with the GitLab DevSecOps platform.",[699],"Tim Rizzi","2025-01-21",{"slug":702,"externalUrl":-1},"secure-and-publish-python-packages-a-guide-to-ci-integration",{"content":704,"config":711},{"title":705,"heroImage":706,"category":676,"description":707,"authors":708,"date":710},"Transform code quality and compliance with automated processes","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660151/Blog/Hero%20Images/blog-image-template-1800x945__26_.png","Learn how GitLab Premium features address the technical debt and security vulnerability challenges that plague traditional approaches.",[709],"Jessica Hurwitz","2024-12-13",{"slug":712,"externalUrl":-1},"transform-code-quality-and-compliance-with-automated-processes",{"content":714,"config":723},{"title":715,"heroImage":716,"category":717,"description":718,"authors":719,"date":722},"Provision group runners with Google Cloud Platform and GitLab CI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098300/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_623844718_4E5Fx1Q0DHikigzCsQWhOG_1750098300048.jpg","engineering","This tutorial will teach you how to set up a new group runner on GitLab.com using Google Cloud Platform in less than 10 minutes.",[720,721],"Sarah Matthies","Noah Ing","2024-11-19",{"slug":724,"externalUrl":-1},"provision-group-runners-with-google-cloud-platform-and-gitlab-ci",{"content":726,"config":733},{"title":727,"heroImage":728,"category":717,"description":729,"authors":730,"date":732},"How we designed the GitLab Reference Architectures","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098651/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%282%29_52vS9ne2Hu3TElOeHep0AF_1750098651525.png","Take a look back with us as we dive into our Reference Architectures design journey to help users easily deploy GitLab at scale. Learn our goals, process, and what's happened in the five years since.",[731],"Grant Young","2024-10-02",{"slug":734,"externalUrl":-1},"how-we-designed-the-gitlab-reference-architectures",{"content":736,"config":743},{"title":737,"heroImage":738,"category":717,"description":739,"authors":740,"date":742},"Using child pipelines to continuously deploy to five environments","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097012/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_397632156_3Ldy1urjMStQCl4qnOBvE0_1750097011626.jpg","Learn how to manage continuous deployment to multiple environments, including temporary, on-the-fly sandboxes, with a minimalist GitLab workflow.",[741],"Olivier Dupré","2024-09-26",{"slug":744,"externalUrl":-1},"using-child-pipelines-to-continuously-deploy-to-five-environments",{"content":746,"config":754},{"title":747,"heroImage":748,"category":717,"description":749,"authors":750,"date":753},"Building GitLab with GitLab: A multi-region service to deliver AI features","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098664/Blog/Hero%20Images/Blog/Hero%20Images/building-gitlab-with-gitlab-no-type_building-gitlab-with-gitlab-no-type.png_1750098663794.png","Discover how we built our first multi-region deployment for teams at GitLab using the platform's many features, helping create a frictionless developer experience for GitLab Duo users.",[751,752],"Chance Feick","Sam Wiskow","2024-09-12",{"slug":755,"externalUrl":-1},"building-gitlab-with-gitlab-a-multi-region-service-to-deliver-ai-features",{"content":757,"config":764},{"title":758,"heroImage":759,"category":676,"description":760,"authors":761,"date":763},"Introducing CI/CD Steps, a programming language for DevSecOps automation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665151/Blog/Hero%20Images/blog-image-template-1800x945__27_.png","Inside GitLab’s vision for CI/CD programmability and a look at how we simplified workflow automation.",[762],"Darren Eastman","2024-08-06",{"slug":765,"externalUrl":-1},"introducing-ci-cd-steps-a-programming-language-for-devsecops-automation",{"content":767,"config":774},{"title":768,"heroImage":769,"category":539,"description":770,"authors":771,"date":773},"Develop C++ unit testing with Catch2, JUnit, and GitLab CI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659684/Blog/Hero%20Images/AdobeStock_479904468__1_.jpg","Learn how to set up, write, and automate C++ unit tests using Catch2 with GitLab CI/CD. See examples from a working air quality app project and AI-powered help from GitLab Duo.",[772],"Fatima Sarah Khalid","2024-07-02",{"slug":775,"externalUrl":-1},"develop-c-unit-testing-with-catch2-junit-and-gitlab-ci",{"content":777,"config":785},{"title":778,"heroImage":779,"category":780,"description":781,"authors":782,"date":784},"A CI/CD component builder's journey","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663857/Blog/Hero%20Images/blog-image-template-1800x945__12_.png","open-source","Learn how a creator of shared, includable templates upskilled by migrating the templates to GitLab CI/CD components and the CI/CD Catalog.",[783],"Darwin Sanoy","2024-06-04",{"slug":786,"externalUrl":-1},"a-ci-component-builders-journey",{"content":788,"config":795},{"title":789,"heroImage":790,"category":780,"description":791,"authors":792,"date":794},"GitLab's contributions to Git 2.44.0","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666069/Blog/Hero%20Images/AdobeStock_639935439.jpg","Find out the topics that GitLab’s Git team – as well as the wider community – contributed to the latest Git release, including fast scripted rebases via git-replay.",[793],"Patrick Steinhardt","2024-02-26",{"slug":796,"externalUrl":-1},"gitlabs-contributions-to-git-2-44-0",{"content":798,"config":805},{"title":799,"heroImage":800,"category":717,"description":801,"authors":802,"date":804},"How to translate Bamboo agent capabilities to GitLab Runner tags  ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663019/Blog/Hero%20Images/AdobeStock_519147119.jpg","This tutorial demonstrates how to use tags to organize GitLab Runners when building complex CI/CD pipelines.",[803],"Abubakar Siddiq Ango","2024-02-22",{"slug":806,"externalUrl":-1},"how-to-translate-bamboo-agent-capabilities-to-gitlab-runner-tags",{"content":808,"config":815},{"title":809,"heroImage":810,"category":717,"description":811,"authors":812,"date":814},"Inside the improved CI logs management experience for multi-line commands","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099499/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_639935439_3oqldo5Yt5wPonEJYZOLTM_1750099498739.jpg","Reviewing log output for CI/CD jobs with multi-line commands is now easier than ever. Find out why, how to configure your pipelines, and what's ahead.\n\n",[813],"Romuald Atchadé","2024-01-25",{"slug":816,"externalUrl":-1},"inside-the-improved-ci-logs-management-experience-for-multi-line-commands",{"content":818,"config":825},{"title":819,"heroImage":820,"category":676,"description":821,"authors":822,"date":824},"Tutorial: Automate releases and release notes with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659978/Blog/Hero%20Images/automation.png","With the GitLab Changelog API, you can automate the generation of release artifacts, release notes, and a comprehensive changelog detailing all user-centric software modifications.",[823],"Ben Ridley","2023-11-01",{"slug":826,"externalUrl":-1},"tutorial-automated-release-and-release-notes-with-gitlab",{"content":828,"config":835},{"title":829,"heroImage":830,"category":717,"description":831,"authors":832,"date":834},"How to host VueJS apps using GitLab Pages","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683489/Blog/Hero%20Images/hosting.png","Follow this tutorial, including detailed configuration guidance, to quickly get your application up and running for free.",[833,721],"Sophia Manicor","2023-09-13",{"slug":836,"externalUrl":-1},"hosting-vuejs-apps-using-gitlab-pages",{"content":838,"config":845},{"title":839,"heroImage":840,"category":539,"description":841,"authors":842,"date":844},"5 ways to streamline your cloud adoption","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663930/Blog/Hero%20Images/daytime-clouds_1800x945.png","As companies migrate to the cloud, consider these helpful tips for making the move smoother and more efficient.",[843],"Sharon Gaudin","2023-09-05",{"slug":846,"externalUrl":-1},"five-ways-to-streamline-cloud-adoption",{"content":848,"config":854},{"title":849,"heroImage":850,"category":717,"description":851,"authors":852,"date":853},"How to create efficient DevSecOps workflows with rules for conditional CI/CD pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669673/Blog/Hero%20Images/engineering.png","CI/CD pipelines can be simple or complex, what makes them efficient are CI rules that define when and how they run.",[803],"2023-06-27",{"slug":855,"externalUrl":-1},"efficient-devsecops-workflows-with-rules-for-conditional-pipelines",{"content":857,"config":863},{"title":858,"heroImage":859,"category":696,"description":860,"authors":861,"date":862},"Managing multiple environments with Terraform and GitLab CI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663779/Blog/Hero%20Images/cicd-2018_blogimage.jpg","This tutorial shows how to set up and manage three different environments in one project using GitLab CI and Terraform.",[833,721],"2023-06-14",{"slug":864,"externalUrl":-1},"managing-multiple-environments-with-terraform-and-gitlab-ci",{"content":866,"config":873},{"title":867,"heroImage":868,"category":869,"description":870,"authors":871,"date":872},"Guide to pre_clone_script changes on GitLab SaaS Linux Runners","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664087/Blog/Hero%20Images/tanukicover.jpg","news","Learn about the change from CI_PRE_CLONE_SCRIPT to pre_get_sources_script on GitLab SaaS Linux Runners.",[762],"2023-03-27",{"slug":874,"externalUrl":-1},"changes-to-the-preclonescript",{"content":876,"config":883},{"title":877,"heroImage":878,"category":717,"description":879,"authors":880,"date":882},"How to automate a Twitter bot using GitLab CI/CD","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749661856/Blog/Hero%20Images/ci-cd-demo.jpg","This tutorial shows how to use the DevSecOps platform to create a set-and-forget Twitter bot.",[881],"Siddharth Mathur","2023-03-21",{"slug":884,"externalUrl":-1},"automating-a-twitter-bot-using-gitlab-cicd",{"content":886,"config":893},{"title":887,"heroImage":888,"category":717,"description":889,"authors":890,"date":892},"How GitLab can help mitigate deletion of open source container images on Docker Hub","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659883/Blog/Hero%20Images/post-cover-image.jpg","CI/CD and Kubernetes deployments can be affected by Docker Hub tier changes. This tutorial walks through analysis, mitigations, and long-term solutions.",[891],"Michael Friedrich","2023-03-16",{"slug":894,"externalUrl":-1},"how-gitlab-can-help-mitigate-deletion-open-source-images-docker-hub",{"content":896,"config":904},{"title":897,"heroImage":898,"category":717,"description":899,"authors":900,"date":903},"Getting started with GitLab application security","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663993/Blog/Hero%20Images/2018-developer-report-cover.jpg","This tutorial shows how to incorporate GitLab security scan templates into a .gitlab-ci.yml file and view scan results.",[901,902],"Victor Hernandez","Julie Byrne","2023-03-15",{"slug":905,"externalUrl":-1},"getting-started-with-gitlab-application-security",{"content":907,"config":914},{"title":908,"heroImage":909,"category":696,"description":910,"authors":911,"date":913},"How to action security vulnerabilities in GitLab Premium","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099637/Blog/Hero%20Images/Blog/Hero%20Images/security-pipelines_security-pipelines.jpg_1750099637178.jpg","Learn step-by-step how to process detected vulnerabilities and spawn merge request approval rules from critical vulnerabilities.",[912,721],"Sam Morris","2023-03-13",{"slug":915,"externalUrl":-1},"actioning-security-vulnerabilities-in-gitlab-premium",{"content":917,"config":924},{"title":918,"heroImage":919,"category":539,"description":920,"authors":921,"date":923},"How GitLab and Google Cloud drive innovation and efficiency for retailers","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667457/Blog/Hero%20Images/open_source_program_blog_image.jpg","Learn how pairing DevSecOps with multicloud environments eases the development burden on retailers.",[922],"Regnard Raquedan","2023-03-08",{"slug":925,"externalUrl":-1},"gitlab-and-google-cloud",{"content":927,"config":934},{"title":928,"heroImage":929,"category":539,"description":930,"authors":931,"date":933},"Secure GitLab CI/CD workflows using OIDC JWT on a DevSecOps platform","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667094/Blog/Hero%20Images/container-security.jpg","Learn a new method to authenticate using JWT to increase the security of CI/CD workflows.",[932],"Dov Hershkovitch","2023-02-28",{"slug":935,"externalUrl":-1},"oidc",{"content":937,"config":943},{"title":938,"heroImage":939,"category":717,"description":940,"authors":941,"date":942},"Lightning fast code counting for better code management intelligence","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682614/Blog/Hero%20Images/noaa-PkHsrwNOfBE-unsplash.jpg","Knowledge of your code composition can come through simple counting of lines of code per language.",[783],"2023-02-15",{"slug":944,"externalUrl":-1},"code-counting-in-gitlab",{"content":946,"config":951},{"title":947,"heroImage":868,"category":869,"description":948,"authors":949,"date":950},"Understanding the file type variable expansion change in GitLab 15.7","Learn how the change to file type variable expansion can impact CI jobs that rely on the file contents and what to do.",[762],"2023-02-13",{"slug":952,"externalUrl":-1},"impact-of-the-file-type-variable-change-15-7",{"content":954,"config":962},{"title":955,"heroImage":956,"category":957,"description":958,"authors":959,"date":961},"Vestiaire Collective VP shares wins, insights, and what's next with DevSecOps migration","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670278/Blog/Hero%20Images/fasttrack.jpg","customer-stories","Support for container registries and integrations with existing tools were the top reasons for the ecommerce company's migration to GitLab.",[960],"Chandler Gibbons","2023-01-05",{"slug":963,"externalUrl":-1},"vestiaire-collective-on-moving-to-a-devsecops-platform",{"content":965,"config":972},{"title":966,"heroImage":967,"category":717,"description":968,"authors":969,"date":971},"DRY development: A cheatsheet on reusability throughout GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683555/Blog/Hero%20Images/drylights.jpg","How to follow the DevOps principle of 'don't repeat yourself' to optimize CI/CD.",[721,970],"Joe Randazzo","2023-01-03",{"slug":973,"externalUrl":-1},"keeping-your-development-dry",{"content":975,"config":980},{"title":976,"heroImage":888,"category":717,"description":977,"authors":978,"date":979},"How to continuously test web apps and APIs with Hurl and GitLab CI/CD","Hurl as a CLI tool can be integrated into the DevSecOps platform to continuously verify, test, and monitor targets. It also offers integrated unit test reports in GitLab CI/CD.",[891],"2022-12-14",{"slug":981,"externalUrl":-1},"how-to-continously-test-web-apps-apis-with-hurl-and-gitlab-ci-cd",{"content":983,"config":989},{"title":984,"heroImage":985,"category":717,"description":986,"authors":987,"date":988},"How to use Ruby 3.1 as the default container image on GitLab SaaS Runners on Linux","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670766/Blog/Hero%20Images/container-reg-cdn-blog.jpg","Learn about the new image and how to ensure CI job compatibility.",[762],"2022-12-13",{"slug":990,"externalUrl":-1},"new-default-container-image-gitlab-saas-linux-runnners",{"content":992,"config":998},{"title":993,"heroImage":994,"category":539,"description":995,"authors":996,"date":997},"How automation is making DevOps pros’ jobs easier","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662504/Blog/Hero%20Images/devsecops-automated-security.jpg","Six ways automation in a DevSecOps platform aids security, monitoring, compliance, and CI/CD.",[843],"2022-12-12",{"slug":999,"externalUrl":-1},"how-automation-is-making-devops-pros-jobs-easier",{"content":1001,"config":1007},{"title":1002,"heroImage":1003,"category":717,"description":1004,"authors":1005,"date":1006},"Simple Kubernetes management with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670037/Blog/Hero%20Images/auto-deploy-google-cloud.jpg","Follow our tutorial to provision a Kubernetes cluster and manage it with IAC using Terraform and Helm in 20 minutes or less.",[721],"2022-11-15",{"slug":1008,"externalUrl":-1},"simple-kubernetes-management-with-gitlab",{"content":1010,"config":1017},{"title":1011,"heroImage":1012,"category":869,"description":1013,"authors":1014,"date":1016},"GitLab.com CI artifacts to use Google Cloud CDN","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663009/Blog/Hero%20Images/ESA_case_study_image.jpg","GitLab CI users might benefit from faster downloads from edge caches closest to the user's location.",[1015],"Stan Hu","2022-10-25",{"slug":1018,"externalUrl":-1},"gitlab-com-artifacts-cdn-change",{"content":1020,"config":1026},{"title":1021,"heroImage":1022,"category":676,"description":1023,"authors":1024,"date":1025},"GitLab introduces new machine types for GitLab SaaS Linux Runners","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672836/Blog/Hero%20Images/multiple-machine-types-cover.png","GitLab SaaS now offers larger machine types for running CI jobs on Linux.",[762],"2022-09-22",{"slug":1027,"externalUrl":-1},"new-machine-types-for-gitlab-saas-runners",{"content":1029,"config":1036},{"title":1030,"heroImage":1031,"category":717,"description":1032,"authors":1033,"date":1035},"A visual guide to GitLab CI/CD caching","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682443/Blog/Hero%20Images/cover.jpg","Learn cache types, as well as when and how to use them.",[1034],"Matthieu Fronton","2022-09-12",{"slug":1037,"externalUrl":-1},"a-visual-guide-to-gitlab-ci-caching",{"content":1039,"config":1046},{"title":1040,"heroImage":1041,"category":273,"description":1042,"authors":1043,"date":1045},"What we learned during an internal Hackathon Week","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682399/Blog/Hero%20Images/marvin-meyer-SYTO3xs06fU-unsplash.jpg","The Verify team spent a week on Hackathon projects building new features, Proof of Concepts and cleaning up “dead code”",[1044],"James Heimbuck","2022-07-28",{"slug":1047,"externalUrl":-1},"verify-week-hackathon",{"content":1049,"config":1056},{"title":1050,"heroImage":1051,"category":717,"description":1052,"authors":1053,"date":1055},"An SA story about hyperscaling GitLab Runner workloads using Kubernetes","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669897/Blog/Hero%20Images/kaleidico-26MJGnCM0Wc-unsplash.jpg","It is important to have the complete picture of scaled effects in view when designing automation.",[783,1054],"Brian Wald","2022-06-29",{"slug":1057,"externalUrl":-1},"a-story-of-runner-scaling",{"content":1059,"config":1065},{"title":1060,"heroImage":1061,"category":539,"description":1062,"authors":1063,"date":1064},"GitLab is the single source of truth for eCommerce provider","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668755/Blog/Hero%20Images/swelllogo3.png","Swell uses GitLab company-wide and says the biggest advantage so far is the review operations capability.",[688],"2022-06-23",{"slug":1066,"externalUrl":-1},"gitlab-is-the-single-source-of-truth-for-ecommerce-provider",{"content":1068,"config":1075},{"title":1069,"heroImage":1070,"category":539,"description":1071,"authors":1072,"date":1074},"UnReview a year later: How GitLab is transforming DevOps code review with ML-powered functionality","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668002/Blog/Hero%20Images/pg-gear.jpg","Learn how last year's acquisition has resulted in impactful features for the One DevOps Platform.",[1073],"Taylor McCaslin","2022-06-02",{"slug":1076,"externalUrl":-1},"unreview-a-year-later-how-gitlab-is-being-transformed-by-ml-powered-code-review",{"content":1078,"config":1085},{"title":1079,"heroImage":1080,"category":539,"description":1081,"authors":1082,"date":1084},"How what we learned at KubeCon EU 2022 will impact our product roadmaps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097776/Blog/Hero%20Images/Blog/Hero%20Images/2_2.png_1750097776369.png","Platform integrations and secrets management are among our product team's primary takeaways. Find out why.",[1083],"Viktor Nagy","2022-05-31",{"slug":1086,"externalUrl":-1},"the-kubecon-summary-from-a-product-perspective",{"content":1088,"config":1094},{"title":1089,"heroImage":1090,"category":717,"description":1091,"authors":1092,"date":1093},"When the pursuit of simplicity creates complexity in container-based CI pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663397/Blog/Hero%20Images/logoforblogpost.jpg","Simplicity always has a certain player in mind - learn how to avoid antipatterns by ensuring simplicity themes do not compromise your productivity by over-focusing on machine efficiencies.",[783],"2022-05-24",{"slug":1095,"externalUrl":-1},"second-law-of-complexity-dynamics",{"content":1097,"config":1103},{"title":1098,"heroImage":1099,"category":539,"description":1100,"authors":1101,"date":1102},"Manager of France's .fr domain selects GitLab for its DevSecOps capabilities","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667869/Blog/Hero%20Images/afniclogo.png","Afnic looks to The One DevOps Platform to modernize its software development with automation, security and compliance, and support for multi-cloud environments.",[688],"2022-05-19",{"slug":1104,"externalUrl":-1},"manager-of-frances-fr-domain-selects-gitlab",{"content":1106,"config":1115},{"title":1107,"heroImage":1108,"category":869,"description":1109,"authors":1110,"date":1114},"Enable SLO-as-Code with Nobl9 and GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669455/Blog/Hero%20Images/nobl9_1.jpg","Learn how to take advantage of a streamlined SLO process and maintain a single source of truth for SLO definitions within your DevOps platform.",[1111,1112,1113],"Quan To","Jeremy Cooper","Ian Bartholomew","2022-05-09",{"slug":1116,"externalUrl":-1},"enable-slos-as-code",{"content":1118,"config":1124},{"title":1119,"heroImage":1120,"category":869,"description":1121,"authors":1122,"date":1123},"Amazon Linux 2 support and distro-specific packages for GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682299/Blog/Hero%20Images/gitlab-blog-banner.png","Learn how to do early testing as well as how to peg your automation to the EL 7 packages until you are able to properly integrate the changes into your automation.",[783],"2022-05-02",{"slug":1125,"externalUrl":-1},"amazon-linux-2-support-and-distro-specific-packages",{"content":1127,"config":1135},{"title":1128,"heroImage":1129,"category":696,"description":1130,"authors":1131,"date":1134},"How to ensure separation of duties and enforce compliance with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098232/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_479904468%20%281%29_4lmOEVlaXP0YC3hSFmOw6i_1750098232241.jpg","Use your DevSecOps platform to help maintain compliance without compromising on development speed.",[1132,1133],"Beatriz Barbosa","Fernando Diaz","2022-04-04",{"slug":1136,"externalUrl":-1},"ensuring-compliance",{"content":1138,"config":1145},{"title":1139,"heroImage":1140,"category":717,"description":1141,"authors":1142,"date":1144},"Extract greater efficiency from your CI pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667534/Blog/Hero%20Images/ci-pipeline.jpg","Learn some techniques to find the balance between pipeline performance and resource utilization.",[1143],"Vlad Budica","2022-03-09",{"slug":1146,"externalUrl":-1},"efficient-pipelines",{"content":1148,"config":1155},{"title":1149,"heroImage":1150,"category":717,"description":1151,"authors":1152,"date":1154},"Breaking down CI/CD complexity with parent-child and multi-project pipelines","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659961/Blog/Hero%20Images/parent-child-multi-project-pipelines-unsplash.jpg","Parent-child pipelines inherit a lot of the design from multi-project pipelines, but they also have differences that make them unique.",[1153],"Fabio Pitino","2022-02-22",{"slug":1156,"externalUrl":-1},"parent-child-vs-multi-project-pipelines",{"content":1158,"config":1166},{"title":1159,"heroImage":1160,"category":1161,"description":1162,"authors":1163,"date":1165},"How to keep up with CI/CD best practices","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756989645/fojzxakmfdea6jfqjkrl.png","insights","In this post, we look at continuous integration/continuous delivery (CI/CD), how to implement some best practices, and why it is important.",[1164],"Itzik Gan Baruch","2022-02-03",{"slug":1167,"externalUrl":-1},"how-to-keep-up-with-ci-cd-best-practices",{"content":1169,"config":1176},{"title":1170,"heroImage":1171,"category":717,"description":1172,"authors":1173,"date":1175},"How to use fine-grained permissions via generic impersonation in CI/CD Tunnel","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667435/Blog/Hero%20Images/tunnel.jpg","Learn how to use use fine-grained permissions via generic impersonation in CI/CD Tunnel",[1174],"Cesar Saavedra","2022-02-01",{"slug":1177,"externalUrl":-1},"cicd-tunnel-impersonation",{"content":1179,"config":1186},{"title":1180,"heroImage":1181,"category":717,"description":1182,"authors":1183,"date":1185},"How to bring DevOps to the database with GitLab and Liquibase","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672677/Blog/Hero%20Images/metalgears_databasecasestudy.jpg","Learn how to build a continuous delivery pipeline for database code changes with this tutorial.",[1184],"Tsvi Zandany","2022-01-05",{"slug":1187,"externalUrl":-1},"how-to-bring-devops-to-the-database-with-gitlab-and-liquibase",{"content":1189,"config":1196},{"title":1190,"heroImage":1191,"category":869,"description":1192,"authors":1193,"date":1195},"Changes to GitLab.com public project CI/CD minute quotas","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666275/Blog/Hero%20Images/ci_minutes.jpg","How cryptomining has shaped our pipeline consumption visibility approach and our forward-looking changes.",[1194],"Jackie Porter","2021-11-11",{"slug":1197,"externalUrl":-1},"public-project-minute-limits",{"content":1199,"config":1205},{"title":1200,"heroImage":1201,"category":539,"description":1202,"authors":1203,"date":1204},"How QPage achieved automatic deployment and efficiency using the GitLab DevOps Platform","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664472/Blog/Hero%20Images/gitlabflatlogomap.png","QPage went from a homegrown CI/CD solution to the GitLab DevOps Platform and found more benefits than expected.",[688],"2021-09-15",{"slug":1206,"externalUrl":-1},"qpage-on-the-devops-platform",{"content":1208,"config":1214},{"title":1209,"heroImage":1210,"category":717,"description":1211,"authors":1212,"date":1213},"Write a stageless CI/CD pipeline using GitLab 14.2","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679507/Blog/Hero%20Images/ci-cd.png","With GitLab 14.2, you can write a complete CI/CD pipeline without defining any stages.",[932],"2021-08-24",{"slug":1215,"externalUrl":-1},"stageless-pipelines",{"content":1217,"config":1224},{"title":1218,"heroImage":1219,"category":717,"description":1220,"authors":1221,"date":1223},"How to provision 100 AWS Graviton GitLab Spot Runners in 10 Minutes for $2/hour","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669882/Blog/Hero%20Images/hundredgitlabspotrunner.png","Utilizing the GitLab HA Scaling Runner Vending Machine for AWS Automation to setup 100 GitLab runners on AWS Spot.",[783,1222],"Nupur Sharma","2021-08-17",{"slug":1225,"externalUrl":-1},"100-runners-in-less-than-10mins-and-less-than-10-clicks",{"content":1227,"config":1233},{"title":1228,"heroImage":1229,"category":273,"description":1230,"authors":1231,"date":1232},"5 Great Phabricator features that inspired GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667482/Blog/Hero%20Images/cover-image-unsplash.jpg","Take a deep dive into the Phabricator features that prompted GitLab to build new tooling around automation, integrated CI, and better code reviews.",[891],"2021-08-13",{"slug":1234,"externalUrl":-1},"five-great-phabricator-features-inspired-gitlab",{"content":1236,"config":1242},{"title":1237,"heroImage":850,"category":717,"description":1238,"authors":1239,"date":1241},"23% Cost savings and 36% performance gain by deploying GitLab on Arm-based AWS Graviton2","GitLab and GitLab Runner Performance Gains on Arm based AWS Graviton2",[1240],"Pranay Bakre","2021-08-05",{"slug":1243,"externalUrl":-1},"achieving-23-cost-savings-and-36-performance-gain-using-gitlab-and-gitlab-runner-on-arm-neoverse-based-aws-graviton2-processor",{"content":1245,"config":1252},{"title":1246,"heroImage":1247,"category":717,"description":1248,"authors":1249,"date":1251},"How UBS created their own DevOps platform using GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665839/Blog/Hero%20Images/devops.png","How GitLab helped power more than a million builds in six months on UBS DevCloud.",[1250],"Sara Kassabian","2021-08-04",{"slug":1253,"externalUrl":-1},"ubs-gitlab-devops-platform",{"content":1255,"config":1262},{"title":1256,"heroImage":1257,"category":780,"description":1258,"authors":1259,"date":1261},"How Orange made a first step toward CI/CD standardization with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682084/Blog/Hero%20Images/oranges.jpg","Find out how Orange made a first step toward CI/CD standardization with GitLab",[1260],"Pierre Smeyers","2021-07-29",{"slug":1263,"externalUrl":-1},"how-orange-uses-gitlab-ci-cd-for-modern-devops",{"content":1265,"config":1271},{"title":1266,"heroImage":1267,"category":717,"description":1268,"authors":1269,"date":1261},"How GitLab 14 satisfies the need for speed with modern DevOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682089/Blog/Hero%20Images/racecar_devops.jpg","GitLab 14: Ship with velocity, ship with confidence",[1270],"Parker Ennis",{"slug":1272,"externalUrl":-1},"velocity-with-confidence",{"content":1274,"config":1280},{"title":1275,"heroImage":1276,"category":717,"description":1277,"authors":1278,"date":1279},"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",[1174],"2021-06-23",{"slug":1281,"externalUrl":-1},"how-to-use-agent-based-gitops",{"content":1283,"config":1290},{"title":1284,"heroImage":1285,"category":717,"description":1286,"authors":1287,"date":1289},"How to become more productive with Gitlab CI","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667358/Blog/Hero%20Images/gitlab-productivity.jpg","Explore some CI/CD strategies that can make your team more efficient and productive.",[1288],"Veethika Mishra","2021-06-21",{"slug":1291,"externalUrl":-1},"how-to-become-more-productive-with-gitlab-ci",{"content":1293,"config":1298},{"title":1294,"heroImage":1210,"category":869,"description":1295,"authors":1296,"date":1297},"How to use GitLab with OCI ARM-based compute instances","We explain two ways to set up GitLab on Oracle ARM-based instances.",[803],"2021-05-25",{"slug":1299,"externalUrl":-1},"gitlab-oracle-cloud-arm-based",{"content":1301,"config":1307},{"title":1302,"heroImage":1303,"category":717,"description":1304,"authors":1305,"date":1306},"How to use manual jobs with `needs:` relationships","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683170/Blog/Hero%20Images/blog_cover2.png","Are you using manual jobs and needs relationship in your CI/CD pipeline? Learn more about the fix that might cause your pipeline to behave differently.",[932],"2021-05-20",{"slug":1308,"externalUrl":-1},"dag-manual-fix",{"content":1310,"config":1315},{"title":1311,"heroImage":1090,"category":869,"description":1312,"authors":1313,"date":1314},"How to prevent crypto mining abuse on GitLab.com SaaS","GitLab now requires new users to provide a valid credit or debit card in order to use free pipeline minutes on GitLab.com SaaS.",[688],"2021-05-17",{"slug":1316,"externalUrl":-1},"prevent-crypto-mining-abuse",{"content":1318,"config":1325},{"title":1319,"heroImage":1210,"category":1320,"description":1321,"authors":1322,"date":1324},"Placebo Lines on the Pipeline Graph","unfiltered","Have you noticed the connecting lines missing on your pipelines lately? Here's why",[1323],"Sam Beckham","2021-05-11",{"slug":1326,"externalUrl":-1},"placebo-lines-on-the-pipeline-graph",{"content":1328,"config":1334},{"title":1329,"heroImage":1330,"category":717,"description":1331,"authors":1332,"date":1333},"Tips for productive DevOps workflows: JSON formatting with jq and CI/CD linting automation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681979/Blog/Hero%20Images/gert-boers-unsplash.jpg","Learn how to filter in JSON data structures and interact with the REST API. Use the GitLab API to lint your CI/CD configuration and dive into Git hooks speeding up your workflows.",[891],"2021-04-21",{"slug":1335,"externalUrl":-1},"devops-workflows-json-format-jq-ci-cd-lint",{"content":1337,"config":1343},{"title":1338,"heroImage":1339,"category":717,"description":1340,"authors":1341,"date":1342},"GitLab environment variables demystified","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664679/Blog/Hero%20Images/blog-image-template-1800x945__24_.png","CI/CD variables are useful (and flexible) tools to control jobs and pipelines. We unpack everything you need to know about GitLab environment variables.",[1288],"2021-04-09",{"slug":1344,"externalUrl":-1},"demystifying-ci-cd-variables",{"content":1346,"config":1353},{"title":1347,"heroImage":1348,"category":539,"description":1349,"authors":1350,"date":1352},"Create and Deploy Custom Actions Containers to Rasa X using Gitlab DevOps Platform","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668410/Blog/Hero%20Images/vablog.jpg","Using the GitLab DevOps Platform together with Rasa X can make it easier for stakeholders to deliver a virtual assistant by automating potentially time-consuming, error-prone steps. In this case, we’ve shown how you can build Rasa custom action servers and deploy them to Kubernetes.",[1351],"William Arias","2021-04-06",{"slug":1354,"externalUrl":-1},"custom-actions-rasa-gitlab-devops",{"content":1356,"config":1362},{"title":1357,"heroImage":1247,"category":717,"description":1358,"authors":1359,"date":1361},"Production-grade infrastructure, GitOps convergence, and DevSecOps in under 5 minutes","Unlock production-grade infrastructure and development workflows in under five minutes with Five Minute Production App: a blend of solutions offered by AWS, Hashicorp Terraform, and GitLab.",[1360],"Sri Rangan","2021-02-24",{"slug":1363,"externalUrl":-1},"production-grade-infra-devsecops-with-five-minute-production",{"content":1365,"config":1371},{"title":1366,"heroImage":1367,"category":1320,"description":1368,"authors":1369,"date":1370},"Continuously Improving CI to Lovable...again!","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681907/Blog/Hero%20Images/CI-lovable.jpg","A transparent commentary on our Verify:Continuous Integration offering, covering how the landscape has changed and the product strategy that will carry us to Lovable.",[1194],"2021-02-22",{"slug":1372,"externalUrl":-1},"continuously-improving-ci-lovability",{"content":1374,"config":1379},{"title":1375,"heroImage":1376,"category":717,"description":1377,"authors":1378,"date":1370},"Meet Pipeline Editor, your one-stop shop for building a CI/CD pipeline","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665961/Blog/Hero%20Images/image_cover.jpg","The Pipeline Editor reduces the complexity of configuring your CI/CD pipelines.",[932],{"slug":1380,"externalUrl":-1},"pipeline-editor-overview",{"content":1382,"config":1388},{"title":1383,"heroImage":850,"category":1320,"description":1384,"authors":1385,"date":1387},"Little things make a difference","Let's celebrate the small UI refinements that add up to create a big impact",[1386],"Christie Lenneville","2021-02-12",{"slug":1389,"externalUrl":-1},"little-things-make-a-difference",{"content":1391,"config":1398},{"title":1392,"heroImage":1393,"category":717,"description":1394,"authors":1395,"date":1397},"How to use GitLab CI to deploy to multiple environments","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662033/Blog/Hero%20Images/intro.jpg","We walk you through different scenarios to demonstrate the versatility and power of GitLab CI.",[1396,1174],"Ivan Nemytchenko","2021-02-05",{"slug":1399,"externalUrl":-1},"ci-deployment-and-environments",{"content":1401,"config":1408},{"title":1402,"heroImage":1403,"category":717,"description":1404,"authors":1405,"date":1407},"How we used parallel CI/CD jobs to increase our productivity","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666717/Blog/Hero%20Images/cover-image.jpg","GitLab uses parallel jobs to help long-running jobs run faster.",[1406],"Miguel Rincon","2021-01-20",{"slug":1409,"externalUrl":-1},"using-run-parallel-jobs",{"content":1411,"config":1417},{"title":1412,"heroImage":1413,"category":717,"description":1414,"authors":1415,"date":1416},"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.",[1250],"2020-12-17",{"slug":1418,"externalUrl":-1},"gitlab-for-cicd-agile-gitops-cloudnative",{"content":1420,"config":1427},{"title":1421,"heroImage":1422,"category":717,"description":1423,"authors":1424,"date":1426},"How to deploy to AWS with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672124/Blog/Hero%20Images/aws_rocket.jpg","We believe deploying to the cloud should be easy and boring. The deployment process is the same regardless of what tech stack you're using so why not automate it?",[1425],"Orit Golowinski","2020-12-15",{"slug":1428,"externalUrl":-1},"deploy-aws",{"content":1430,"config":1435},{"title":1431,"heroImage":1432,"category":1320,"description":1433,"authors":1434,"date":1426},"A journey from the first code to CI/CD deployments in 5 minutes?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665823/Blog/Hero%20Images/snow-speed-unsplash.jpg","From writing, building, and testing code to reviewing, releasing, and deploying in 5 minutes. Is this possible? Learn which hurdles you might encounter and how to solve them. Spoiler: Without Kubernetes.",[891],{"slug":1436,"externalUrl":-1},"first-code-to-ci-cd-deployments-in-5-minutes",{"content":1438,"config":1444},{"title":1439,"heroImage":1440,"category":717,"description":1441,"authors":1442,"date":1443},"How to use merge train pipelines with GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667210/Blog/Hero%20Images/merge-train-explained-banner.jpg","Read here an introduction on what merge trains are, how to use them and how to incorporate them to your GitLab project.",[1288],"2020-12-14",{"slug":1445,"externalUrl":-1},"merge-trains-explained",{"content":1447,"config":1453},{"title":1448,"heroImage":1449,"category":717,"description":1450,"authors":1451,"date":1452},"The basics of CI: How to run jobs sequentially, in parallel, or out of order","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662061/Blog/Hero%20Images/cicdcover.png","New to continuous integration? Learn how to build your first CI pipeline with GitLab.",[1164],"2020-12-10",{"slug":1454,"externalUrl":-1},"basics-of-gitlab-ci-updated",{"content":1456,"config":1463},{"title":1457,"heroImage":1458,"category":1161,"description":1459,"authors":1460,"date":1462},"How we're improving migrations from Jenkins to GitLab CI/CD","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679556/Blog/Hero%20Images/insights.png","Learn more about our Jenkins Importer category and see what's in the works for easier Jenkins migrations.",[1461],"Chrissie Buchanan","2020-12-08",{"slug":1464,"externalUrl":-1},"migrate-from-jenkins-update",{"content":1466,"config":1473},{"title":1467,"heroImage":1468,"category":780,"description":1469,"authors":1470,"date":1472},"Inside the collaboration between GitLab and The Last Mile","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681743/Blog/Hero%20Images/tlm-blogpost-banner.png","GitLab teamed up with The Last Mile to bring open source DevOps and tech mentorship to incarcerated populations across the United States.",[1471],"Christina Hupy, Ph.D.","2020-11-13",{"slug":1474,"externalUrl":-1},"thelastmile-gitlab",{"content":1476,"config":1482},{"title":1477,"heroImage":1478,"category":1320,"description":1479,"authors":1480,"date":1481},"Distributed Version Control & Collaboration","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749668242/Blog/Hero%20Images/assembly-3830652.jpg","Developers can collaborate and work together in distributed environments. Adopt diverse integration patterns for branching, merging and code reviews along with granular permissions schemes ensuring code quality and safety.",[1351],"2020-10-02",{"slug":1483,"externalUrl":-1},"distributed-version-control",{"content":1485,"config":1490},{"title":1486,"heroImage":1487,"category":1320,"description":1488,"authors":1489,"date":1481},"Version control and collaborating for product development management","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681632/Blog/Hero%20Images/blog-pdm-image.png","Gitlab provides collaboration functionalities to product teams that work not only with source code but also graphic assets.",[1351],{"slug":1491,"externalUrl":-1},"product-development-management",{"content":1493,"config":1499},{"title":1494,"heroImage":1495,"category":1320,"description":1496,"authors":1497,"date":1498},"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",[1351],"2020-01-22",{"slug":1500,"externalUrl":-1},"gitlab-apis-ci",{"content":1502,"config":1508},{"title":1503,"heroImage":1504,"category":717,"description":1505,"authors":1506,"date":1507},"What tracking down missing TCP Keepalives taught me about Docker, Golang, and GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680874/Blog/Hero%20Images/network.jpg","An in-depth recap of debugging a bug in the Docker client library.",[1015],"2019-11-15",{"slug":1509,"externalUrl":-1},"tracking-down-missing-tcp-keepalives",{"content":1511,"config":1518},{"title":1512,"heroImage":1513,"category":717,"description":1514,"authors":1515,"date":1517},"Progressive Delivery: How to get started with Review Apps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666841/Blog/Hero%20Images/progressive-delivery-review-apps.jpg","Progressive Delivery is the next evolution of continuous delivery, and Review Apps are a key enabler.",[1516],"Jason Yavorska","2019-04-19",{"slug":1519,"externalUrl":-1},"progressive-delivery-using-review-apps",{"content":1521,"config":1527},{"title":1522,"heroImage":1523,"category":717,"description":1524,"authors":1525,"date":1526},"7 Best practices for application modernization","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671258/Blog/Hero%20Images/just-commit-blog-cover.png","Use these best practices to avoid common pitfalls on the application modernization journey.",[1461],"2019-03-27",{"slug":1528,"externalUrl":-1},"application-modernization-best-practices",{"content":1530,"config":1535},{"title":1531,"heroImage":859,"category":273,"description":1532,"authors":1533,"date":1534},"GitLab CI/CD's 2018 highlights","We move quickly, always with an eye to the future, but let's take a moment to look back on how GitLab CI/CD has evolved in the past six months.",[1516],"2019-01-21",{"slug":1536,"externalUrl":-1},"gitlab-ci-cd-features-improvements",{"content":1538,"config":1545},{"title":1539,"heroImage":1540,"category":780,"description":1541,"authors":1542,"date":1544},"How Wag! cut their release process from 40 minutes to just 6","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678923/Blog/Hero%20Images/dog-walking.jpg","The popular dog-walking app is rolling out new features faster and with more confidence as they adopt GitLab for more of their DevOps workflows.",[1543],"Aricka Flowers","2019-01-16",{"slug":1546,"externalUrl":-1},"wag-labs-blog-post",{"content":1548,"config":1555},{"title":1549,"heroImage":1550,"category":273,"description":1551,"authors":1552,"date":1554},"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.",[1553],"Priyanka Sharma","2018-12-06",{"slug":1556,"externalUrl":-1},"aws-reinvent-recap",{"content":1558,"config":1564},{"title":1559,"heroImage":1560,"category":717,"description":1561,"authors":1562,"date":1554},"GitLab Runner update required to use SAST in Auto DevOps","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666262/Blog/Hero%20Images/default-blog-image.png","Make sure you upgrade GitLab Runner to 11.5+ to coninue using SAST in Auto DevOps.",[1563],"Fabio Busatto",{"slug":1565,"externalUrl":-1},"gitlab-runner-update-required-to-use-auto-devops-and-sast",{"content":1567,"config":1575},{"title":1568,"heroImage":1569,"category":273,"description":1570,"authors":1571,"date":1574},"GitLab achieves AWS DevOps Competency certification","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749666959/Blog/Hero%20Images/gitlab-aws-cover.png","GitLab has been certified with AWS DevOps Competency, affirming our further commitment as a technology partner with Amazon Web Services.",[1572,1573],"Tina Sturgis","Eliran Mesika","2018-11-28",{"slug":1576,"externalUrl":-1},"gitlab-achieves-aws-devops-competency-certification",{"content":1578,"config":1584},{"title":1579,"heroImage":1580,"category":717,"description":1581,"authors":1582,"date":1583},"It's raining repos: The microservices repo explosion, and what we're doing about it","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662898/Blog/Hero%20Images/microservices-explosion.jpg","Microservices have spawned an explosion of dependent projects with multiple repos, creating the need for an integrated solution – we're working on it right now.",[1543],"2018-11-26",{"slug":1585,"externalUrl":-1},"microservices-integrated-solution",{"content":1587,"config":1594},{"title":1588,"heroImage":1589,"category":273,"description":1590,"authors":1591,"date":1593},"GitHub Actions affirms all-in-one is eating the marketplace model","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678806/Blog/Hero%20Images/single-application.png","GitHub announces GitHub Actions, a continuous integration tool, affirming the need for single application for the entire DevOps lifecycle.",[1592],"Sid Sijbrandij","2018-10-16",{"slug":1595,"externalUrl":-1},"github-launch-continuous-integration",{"content":1597,"config":1604},{"title":1598,"heroImage":1599,"category":717,"description":1600,"authors":1601,"date":1603},"How DevOps and GitLab CI/CD enhance a frontend workflow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679026/Blog/Hero%20Images/frontendworkflow.jpg","The GitLab frontend team uses DevOps and CI/CD to ensure code consistency, fast delivery, and simple automation.",[1602],"José Iván Vargas","2018-08-09",{"slug":1605,"externalUrl":-1},"how-devops-and-gitlab-cicd-enhance-a-frontend-workflow",{"content":1607,"config":1614},{"title":1608,"heroImage":1609,"category":717,"description":1610,"authors":1611,"date":1613},"How to simplify your smart home configuration with GitLab CI/CD","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678717/Blog/Hero%20Images/ci-smart-home-configuration.jpg","How to use GitLab pipelines to automatically test and deploy new home-assistant configurations, wherever you are.",[1612],"Mario de la Ossa","2018-08-02",{"slug":1615,"externalUrl":-1},"using-the-gitlab-ci-slash-cd-for-smart-home-configuration-management",{"content":1617,"config":1624},{"title":1618,"heroImage":1619,"category":273,"description":1620,"authors":1621,"date":1623},"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.",[1622],"Joel Krooswyk","2018-07-30",{"slug":1625,"externalUrl":-1},"gitlab-workflow-with-jira-jenkins",{"content":1627,"config":1634},{"title":1628,"heroImage":1629,"category":957,"description":1630,"authors":1631,"date":1633},"How Jaguar Land Rover embraced CI to speed up their software lifecycle","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667619/Blog/Hero%20Images/chris-hill-jlr-does.jpg","Inspiration, persistence, an attitude of continuous improvement – how adopting CI helped this vehicle company implement software over the air.",[1632],"Rebecca Dodd","2018-07-23",{"slug":1635,"externalUrl":-1},"chris-hill-devops-enterprise-summit-talk",{"content":1637,"config":1644},{"title":1638,"heroImage":1639,"category":717,"description":1640,"authors":1641,"date":1643},"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.\"",[1642],"Brendan O'Leary","2018-06-29",{"slug":1645,"externalUrl":-1},"introducing-auto-breakfast-from-gitlab",{"content":1647,"config":1654},{"title":1648,"heroImage":1649,"category":717,"description":1650,"authors":1651,"date":1653},"How to autoscale continuous deployment with GitLab Runner on DigitalOcean","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680042/Blog/Hero%20Images/gitlab-digitalocean-cover.jpg","Our friends over at DigitalOcean share how to configure a highly scalable, responsive and cost-effective GitLab infrastructure.",[1652],"Owen Williams","2018-06-19",{"slug":1655,"externalUrl":-1},"autoscale-continuous-deployment-gitlab-runner-digital-ocean",{"content":1657,"config":1664},{"title":1658,"heroImage":1659,"category":717,"description":1660,"authors":1661,"date":1663},"How we used GitLab CI to build GitLab faster","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665440/Blog/Hero%20Images/automate-ce-ee-merges.jpg","Here's how we went from a daily manual merge of GitLab Core into GitLab Enterprise to automated merges every three hours.",[1662],"Rémy Coutable","2018-05-02",{"slug":1665,"externalUrl":-1},"using-gitlab-ci-to-build-gitlab-faster",{"content":1667,"config":1674},{"title":1668,"heroImage":1669,"category":1161,"description":1670,"authors":1671,"date":1673},"A Craftsman looks at continuous integration","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663786/Blog/Hero%20Images/craftsman-looks-at-continuous-integration.jpg","Guest author Steve Ropa shares his ideal continuous integration processes for catching errors early and shipping the best software possible.",[1672],"Steve Ropa","2018-01-17",{"slug":1675,"externalUrl":-1},"craftsman-looks-at-continuous-integration",{"content":1677,"config":1683},{"title":1678,"heroImage":1679,"category":1161,"description":1680,"authors":1681,"date":1682},"Automate to accelerate: What you need to know about test and release automation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671288/Blog/Hero%20Images/gitlab-live-event.png","If you’re not using automated testing, your competitors almost certainly are – catch up on our recent webcast to get started.",[1632],"2017-12-08",{"slug":1684,"externalUrl":-1},"automate-to-accelerate-webcast-recap",{"content":1686,"config":1693},{"title":1687,"heroImage":1688,"category":717,"description":1689,"authors":1690,"date":1692},"HumanGeo switched from Jenkins to GitLab and cut costs by 1/3","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749680315/Blog/Hero%20Images/humangeo-switches-jenkins-to-gitlab.jpg","Management overhead was bogging down the team at HumanGeo. GitLab freed up more than just cash.",[1691],"William Chia","2017-11-14",{"slug":1694,"externalUrl":-1},"humangeo-switches-jenkins-gitlab-ci",{"content":1696,"config":1703},{"title":1697,"heroImage":1698,"category":273,"description":1699,"authors":1700,"date":1702},"Beyond CI/CD: GitLab's DevOps vision","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670214/Blog/Hero%20Images/devops-nova-scotia-cover.jpg","How we're building GitLab into the complete DevOps toolchain.",[1701],"Mark Pundsack","2017-10-04",{"slug":1704,"externalUrl":-1},"devops-strategy",{"content":1706,"config":1712},{"title":1707,"heroImage":1708,"category":273,"description":1709,"authors":1710,"date":1711},"GitLab Continuous Integration named a Leader in the Forrester Wave™","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683243/Blog/Hero%20Images/gitlab-ci-wave-cover.png","GitLab cited as a Leader in The Forrester Wave™&#58; Continuous Integration Tools, Q3 2017 report released today.",[688],"2017-09-27",{"slug":1713,"externalUrl":-1},"gitlab-leader-continuous-integration-forrester-wave",{"content":1715,"config":1721},{"title":1716,"heroImage":1201,"category":717,"description":1717,"authors":1718,"date":1720},"How to create a CI/CD pipeline with Auto Deploy to Kubernetes using GitLab and Helm","One user walks through how he tried GitLab caching and split the job into multiple steps to get better feedback.",[1719],"Sergey Nuzhdin","2017-09-21",{"slug":1722,"externalUrl":-1},"how-to-create-a-ci-cd-pipeline-with-auto-deploy-to-kubernetes-using-gitlab",{"content":1724,"config":1731},{"title":1725,"heroImage":1726,"category":780,"description":1727,"authors":1728,"date":1730},"Continuous integration: From Jenkins to GitLab using Docker","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667509/Blog/Hero%20Images/continuous-integration-from-jenkins-to-gitlab-using-docker.jpg","We're migrating all of our working tools to open source ones, and moving to GitLab has made all the difference.",[1729],"Abdulkader Benchi","2017-07-27",{"slug":1732,"externalUrl":-1},"docker-my-precious",1772652085111]