[{"data":1,"prerenderedAt":1020},["ShallowReactive",2],{"/blog/r2devops-open-source-hub-cicd":3,"navigation-en-us":239,"banner-en-us":665,"footer-en-us":675,"blog-post-authors-en-us-Sandra Salerno":919,"blog-related-posts-en-us-r2devops-open-source-hub-cicd":934,"blog-promotions-en-us":956,"next-steps-en-us":1010},{"id":4,"title":5,"authors":6,"body":8,"category":217,"date":218,"description":219,"extension":220,"externalUrl":221,"faq":221,"featured":222,"heroImage":223,"meta":224,"navigation":225,"path":226,"seo":227,"slug":231,"stem":232,"tags":233,"template":237,"updatedDate":221,"__hash__":238},"blogPosts/en-us/blog/r2devops-open-source-hub-cicd.md","How to create a hub of GitLab CI/CD jobs with R2Devops",[7],"Sandra Salerno",{"type":9,"value":10,"toc":206},"minimark",[11,15,20,30,33,36,40,47,56,59,62,65,74,77,80,86,91,105,108,114,117,123,130,134,140,148,154,169,173,192],[12,13,14],"p",{},"CI/CD has changed our development processes, but it hasn’t simplified them in every aspect. The amount of knowledge necessary to implement and maintain your first CI/CD pipelines is huge, and the time you need to invest in it is consequential. Partnering with GitLab, R2Devops aims to simplify CI/CD onboarding by creating a hub of CI/CD jobs. In this blog post I'll show you how to use R2DevOps with GitLab to add jobs to an open source hub.",[16,17,19],"h2",{"id":18},"a-collaborative-hub-of-open-source-jobs","A collaborative hub of open source jobs",[12,21,22,23,29],{},"Collaboration is core to our development processes. On a daily basis, we use open source software and code and ask our teammates for review. Working together to achieve common goals helps us to develop better products and improve continuously. With R2Devops, you’ll find a ",[24,25,28],"a",{"href":26,"rel":27},"https://r2devops.io/_/jobs",[],"collaborative library of open source CI/CD jobs",".",[12,31,32],{},"You can save a lot of time by using jobs from an open source library. You won’t have to write your pipeline from scratch for every new project, and you can focus on what you like doing, which is coding.",[12,34,35],{},"And, of course, working together is working smarter. R2Devops empowers collaboration by allowing developers to add their own jobs into the library directly from their GitLab account.",[16,37,39],{"id":38},"how-to-add-a-job-in-r2devops","How to add a job in R2Devops",[12,41,42],{},[43,44],"img",{"alt":45,"src":46},"Adding a job","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398896/blog/Content%20Images/r2devops2.gif",[12,48,49,50,55],{},"Link your GitLab account to ",[24,51,54],{"href":52,"rel":53},"https://r2devops.io",[],"R2Devops",", fill in the URL of your repository, the path of your job, and give it a name. Once you click on import, our crawler will check three files:",[12,57,58],{},"1.) the jobname.yml/jobname.yaml",[12,60,61],{},"2.) the changelog.md",[12,63,64],{},"3.) the readme.md.",[12,66,67,68,73],{},"The crawler process is explained in detail ",[24,69,72],{"href":70,"rel":71},"https://docs.r2devops.io/crawler/",[],"in our documentation",". In short, without a jobname.yml file, R2 won’t be able to import your job. The changelog.md allows R2 to check your job’s versions, and the readme.md is used to build the documentation for each version of your job.",[12,75,76],{},"Et voilà, anyone can see your job in R2Devops and easily use it in their pipeline.",[12,78,79],{},"Once your job is in R2Devops, you can add information such as the license, description, and specify labels. This helps other users understand what your job can be used for. That data and the job’s code appears in the documentation. 👇",[12,81,82],{},[43,83],{"alt":84,"src":85},"Data in the documentation","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398897/blog/Content%20Images/r2devops3.png",[87,88,90],"h3",{"id":89},"include-any-jobs-in-one-line-with-gitlab-include-keyword-feature","Include any jobs in one line with GitLab Include keyword feature",[12,92,93,98,99,104],{},[24,94,97],{"href":95,"rel":96},"https://docs.gitlab.com/releases/",[],"In January 2019, GitLab released a feature"," that simplifies the CI/CD keyword ",[24,100,103],{"href":101,"rel":102},"https://docs.gitlab.com/ci/yaml/#include",[],"Include"," process. Rather than copying the code of a job every time you need to create a new pipeline, you can instead indicate to your pipeline where the source is located.",[12,106,107],{},"For example, this:",[12,109,110],{},[43,111],{"alt":112,"src":113},"pre-include","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398897/blog/Content%20Images/r2devops4.png",[12,115,116],{},"can become the below:",[12,118,119],{},[43,120],{"alt":121,"src":122},"post-include","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398897/blog/Content%20Images/r2devops5.png",[12,124,125,126,129],{},"This feature is used in R2Devops. Every resource added in the library gets its own ",[127,128,103],"em",{}," link, so anyone can implement it in one line in their CI/CD. It also means that the file you are using is located in a unique place. Once you update it, you only have to update the include link by modifying the version of the job you want to use. You don’t have to update the whole code in every pipeline you own.",[87,131,133],{"id":132},"customize-the-job-you-need-using-gitlab-variables","Customize the job you need using GitLab variables",[12,135,136,137,139],{},"Most of R2Devops’ jobs are plug and play, meaning you can add the ",[127,138,103],{}," link of the job in your pipeline, launch it, and it will work. We understand every project is different and has its own requirements, which is why we defined variables for each job.",[12,141,142,147],{},[24,143,146],{"href":144,"rel":145},"https://docs.gitlab.com/ci/variables/",[],"GitLab CI/CD variables"," and YAML overrides allow you to customize the jobs and make them fit your project easily.",[12,149,150],{},[43,151],{"alt":152,"src":153},"How to customize","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398898/blog/Content%20Images/r2devops6.png",[12,155,156,157,162,163,168],{},"We have included two jobs from the hub as examples: ",[24,158,161],{"href":159,"rel":160},"https://r2devops.io/_/r2devops-bot/python_test",[],"python_test"," code and",[24,164,167],{"href":165,"rel":166},"https://r2devops.io/_/r2devops-bot/sls_scan",[],"sls-scan",". Using the variables defined in the documentation for each job, you can personalize the behavior of these jobs to fit our project requirements.",[16,170,172],{"id":171},"matching-gitlabs-values-of-open-source-and-transparency","Matching GitLab's values of open source and transparency",[12,174,175,176,181,182,186,187,191],{},"R2Devops joined the ",[24,177,180],{"href":178,"rel":179},"https://handbook.gitlab.com/handbook/alliances/",[],"GitLab Alliance Partner Program"," in March. Both solutions share the same goal – to simplify developer lives by improving development processes. If you want to take part in the development of the open source CI/CD community of GitLab or give feedback on the solution, please [join the R2Devops community on Discord.](",[24,183,184],{"href":184,"rel":185},"https://discord.r2devops.io?utm_medium=website&utm_source=r2devops&utm_campaign=button",[]," ",[24,188,189],{"href":189,"rel":190},"https://discord.r2devops.io?utm_medium=gitlab&utm_source=blog&utm_campaign=articleR2Devops",[],")",[12,193,194,195,200,201],{},"Cover image by ",[24,196,199],{"href":197,"rel":198},"https://unsplash.com/@miinyuii",[],"Duy Pham"," on ",[24,202,205],{"href":203,"rel":204},"https://unsplash.com",[],"Unsplash",{"title":207,"searchDepth":208,"depth":208,"links":209},"",2,[210,211,216],{"id":18,"depth":208,"text":19},{"id":38,"depth":208,"text":39,"children":212},[213,215],{"id":89,"depth":214,"text":90},3,{"id":132,"depth":214,"text":133},{"id":171,"depth":208,"text":172},"news","2022-07-27","Here's how R2Devops and GitLab can work together to streamline CI/CD.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682395/Blog/Hero%20Images/r2devops1.png",{},true,"/en-us/blog/r2devops-open-source-hub-cicd",{"title":5,"description":219,"ogTitle":5,"ogDescription":219,"noIndex":222,"ogImage":223,"ogUrl":228,"ogSiteName":229,"ogType":230,"canonicalUrls":228},"https://about.gitlab.com/blog/r2devops-open-source-hub-cicd","https://about.gitlab.com","article","r2devops-open-source-hub-cicd","en-us/blog/r2devops-open-source-hub-cicd",[234,235,236],"CI/CD","DevOps","partners","BlogPost","6Ovz1jp8SeuskmVmJjy3UCDA6Lru6cpn7Acn0Q8zl7Q",{"logo":240,"freeTrial":245,"sales":250,"login":255,"items":260,"search":585,"minimal":616,"duo":635,"switchNav":644,"pricingDeployment":655},{"config":241},{"href":242,"dataGaName":243,"dataGaLocation":244},"/","gitlab logo","header",{"text":246,"config":247},"Get free trial",{"href":248,"dataGaName":249,"dataGaLocation":244},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":251,"config":252},"Request a demo",{"href":253,"dataGaName":254,"dataGaLocation":244},"/sales/?contact-topic=request-demo","sales",{"text":256,"config":257},"Sign in",{"href":258,"dataGaName":259,"dataGaLocation":244},"https://gitlab.com/users/sign_in/","sign in",[261,290,389,394,507,563],{"text":262,"config":263,"menu":265},"Platform",{"dataNavLevelOne":264},"platform",{"type":266,"columns":267},"cards",[268,274,282],{"title":262,"description":269,"link":270},"The intelligent orchestration platform for DevSecOps",{"text":271,"config":272},"Explore our Platform",{"href":273,"dataGaName":264,"dataGaLocation":244},"/platform/",{"title":275,"description":276,"link":277},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":278,"config":279},"Meet GitLab Duo",{"href":280,"dataGaName":281,"dataGaLocation":244},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":283,"description":284,"link":285},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":286,"config":287},"Learn more",{"href":288,"dataGaName":289,"dataGaLocation":244},"/why-gitlab/","why gitlab",{"text":291,"left":225,"config":292,"menu":294},"Product",{"dataNavLevelOne":293},"solutions",{"type":295,"link":296,"columns":300,"feature":368},"lists",{"text":297,"config":298},"View all Solutions",{"href":299,"dataGaName":293,"dataGaLocation":244},"/solutions/",[301,324,347],{"title":302,"description":303,"link":304,"items":309},"Automation","CI/CD and automation to accelerate deployment",{"config":305},{"icon":306,"href":307,"dataGaName":308,"dataGaLocation":244},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[310,313,316,320],{"text":234,"config":311},{"href":312,"dataGaLocation":244,"dataGaName":234},"/solutions/continuous-integration/",{"text":275,"config":314},{"href":280,"dataGaLocation":244,"dataGaName":315},"gitlab duo agent platform - product menu",{"text":317,"config":318},"Source Code Management",{"href":319,"dataGaLocation":244,"dataGaName":317},"/solutions/source-code-management/",{"text":321,"config":322},"Automated Software Delivery",{"href":307,"dataGaLocation":244,"dataGaName":323},"Automated software delivery",{"title":325,"description":326,"link":327,"items":332},"Security","Deliver code faster without compromising security",{"config":328},{"href":329,"dataGaName":330,"dataGaLocation":244,"icon":331},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[333,337,342],{"text":334,"config":335},"Application Security Testing",{"href":329,"dataGaName":336,"dataGaLocation":244},"Application security testing",{"text":338,"config":339},"Software Supply Chain Security",{"href":340,"dataGaLocation":244,"dataGaName":341},"/solutions/supply-chain/","Software supply chain security",{"text":343,"config":344},"Software Compliance",{"href":345,"dataGaName":346,"dataGaLocation":244},"/solutions/software-compliance/","software compliance",{"title":348,"link":349,"items":354},"Measurement",{"config":350},{"icon":351,"href":352,"dataGaName":353,"dataGaLocation":244},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[355,359,363],{"text":356,"config":357},"Visibility & Measurement",{"href":352,"dataGaLocation":244,"dataGaName":358},"Visibility and Measurement",{"text":360,"config":361},"Value Stream Management",{"href":362,"dataGaLocation":244,"dataGaName":360},"/solutions/value-stream-management/",{"text":364,"config":365},"Analytics & Insights",{"href":366,"dataGaLocation":244,"dataGaName":367},"/solutions/analytics-and-insights/","Analytics and insights",{"title":369,"type":295,"items":370},"GitLab for",[371,377,383],{"text":372,"config":373},"Enterprise",{"icon":374,"href":375,"dataGaLocation":244,"dataGaName":376},"Building","/enterprise/","enterprise",{"text":378,"config":379},"Small Business",{"icon":380,"href":381,"dataGaLocation":244,"dataGaName":382},"Work","/small-business/","small business",{"text":384,"config":385},"Public Sector",{"icon":386,"href":387,"dataGaLocation":244,"dataGaName":388},"Organization","/solutions/public-sector/","public sector",{"text":390,"config":391},"Pricing",{"href":392,"dataGaName":393,"dataGaLocation":244,"dataNavLevelOne":393},"/pricing/","pricing",{"text":395,"config":396,"menu":398},"Resources",{"dataNavLevelOne":397},"resources",{"type":295,"link":399,"columns":403,"feature":496},{"text":400,"config":401},"View all resources",{"href":402,"dataGaName":397,"dataGaLocation":244},"/resources/",[404,437,464],{"title":405,"items":406},"Getting started",[407,412,417,422,427,432],{"text":408,"config":409},"Install",{"href":410,"dataGaName":411,"dataGaLocation":244},"/install/","install",{"text":413,"config":414},"Quick start guides",{"href":415,"dataGaName":416,"dataGaLocation":244},"/get-started/","quick setup checklists",{"text":418,"config":419},"Learn",{"href":420,"dataGaLocation":244,"dataGaName":421},"https://university.gitlab.com/","learn",{"text":423,"config":424},"Product documentation",{"href":425,"dataGaName":426,"dataGaLocation":244},"https://docs.gitlab.com/","product documentation",{"text":428,"config":429},"Best practice videos",{"href":430,"dataGaName":431,"dataGaLocation":244},"/getting-started-videos/","best practice videos",{"text":433,"config":434},"Integrations",{"href":435,"dataGaName":436,"dataGaLocation":244},"/integrations/","integrations",{"title":438,"items":439},"Discover",[440,445,450,455,459],{"text":441,"config":442},"Customer success stories",{"href":443,"dataGaName":444,"dataGaLocation":244},"/customers/","customer success stories",{"text":446,"config":447},"Blog",{"href":448,"dataGaName":449,"dataGaLocation":244},"/blog/","blog",{"text":451,"config":452},"Demo Hub",{"href":453,"dataGaName":454,"dataGaLocation":244},"/demo-hub/","demo hub",{"text":456,"config":457},"The Source",{"href":458,"dataGaName":449,"dataGaLocation":244},"/the-source/",{"text":460,"config":461},"Remote",{"href":462,"dataGaName":463,"dataGaLocation":244},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":465,"items":466},"Connect",[467,472,477,482,487,492],{"text":468,"config":469},"GitLab Services",{"href":470,"dataGaName":471,"dataGaLocation":244},"/services/","services",{"text":473,"config":474},"Contribute",{"href":475,"dataGaName":476,"dataGaLocation":244},"https://contributors.gitlab.com","contribute",{"text":478,"config":479},"Community",{"href":480,"dataGaName":481,"dataGaLocation":244},"/community/","community",{"text":483,"config":484},"Forum",{"href":485,"dataGaName":486,"dataGaLocation":244},"https://forum.gitlab.com/","forum",{"text":488,"config":489},"Events",{"href":490,"dataGaName":491,"dataGaLocation":244},"/events/","events",{"text":493,"config":494},"Partners",{"href":495,"dataGaName":236,"dataGaLocation":244},"/partners/",{"config":497,"title":500,"text":501,"link":502},{"background":498,"textColor":499},"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":503,"config":504},"Read the latest",{"href":505,"dataGaName":506,"dataGaLocation":244},"/whats-new/","whats new",{"text":508,"config":509,"menu":511},"Company",{"dataNavLevelOne":510},"company",{"type":295,"columns":512},[513],{"items":514},[515,520,526,528,533,538,543,548,553,558],{"text":516,"config":517},"About",{"href":518,"dataGaName":519,"dataGaLocation":244},"/company/","about",{"text":521,"config":522,"footerGa":525},"Jobs",{"href":523,"dataGaName":524,"dataGaLocation":244},"/jobs/","jobs",{"dataGaName":524},{"text":488,"config":527},{"href":490,"dataGaName":491,"dataGaLocation":244},{"text":529,"config":530},"Leadership",{"href":531,"dataGaName":532,"dataGaLocation":244},"/company/team/e-group/","leadership",{"text":534,"config":535},"Handbook",{"href":536,"dataGaName":537,"dataGaLocation":244},"https://handbook.gitlab.com/","handbook",{"text":539,"config":540},"Investor relations",{"href":541,"dataGaName":542,"dataGaLocation":244},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":544,"config":545},"Trust Center",{"href":546,"dataGaName":547,"dataGaLocation":244},"/security/","trust center",{"text":549,"config":550},"AI Transparency Center",{"href":551,"dataGaName":552,"dataGaLocation":244},"/ai-transparency-center/","ai transparency center",{"text":554,"config":555},"Newsletter",{"href":556,"dataGaName":557,"dataGaLocation":244},"/company/contact/#contact-forms","newsletter",{"text":559,"config":560},"Press",{"href":561,"dataGaName":562,"dataGaLocation":244},"/press/","press",{"text":564,"config":565,"menu":566},"Contact us",{"dataNavLevelOne":510},{"type":295,"columns":567},[568],{"items":569},[570,575,580],{"text":571,"config":572},"Talk to sales",{"href":573,"dataGaName":574,"dataGaLocation":244},"/sales/","talk to sales",{"text":576,"config":577},"Support portal",{"href":578,"dataGaName":579,"dataGaLocation":244},"https://support.gitlab.com/hc/en-us","support portal",{"text":581,"config":582},"Customer portal",{"href":583,"dataGaName":584,"dataGaLocation":244},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":586,"login":587,"suggestions":594},"Close",{"text":588,"link":589},"To search repositories and projects, login to",{"text":590,"config":591},"gitlab.com",{"href":258,"dataGaName":592,"dataGaLocation":593},"search login","search",{"text":595,"default":596},"Suggestions",[597,599,603,605,609,613],{"text":275,"config":598},{"href":280,"dataGaName":275,"dataGaLocation":593},{"text":600,"config":601},"Code Suggestions (AI)",{"href":602,"dataGaName":600,"dataGaLocation":593},"/solutions/code-suggestions/",{"text":234,"config":604},{"href":312,"dataGaName":234,"dataGaLocation":593},{"text":606,"config":607},"GitLab on AWS",{"href":608,"dataGaName":606,"dataGaLocation":593},"/partners/technology-partners/aws/",{"text":610,"config":611},"GitLab on Google Cloud",{"href":612,"dataGaName":610,"dataGaLocation":593},"/partners/technology-partners/google-cloud-platform/",{"text":614,"config":615},"Why GitLab?",{"href":288,"dataGaName":614,"dataGaLocation":593},{"freeTrial":617,"mobileIcon":622,"desktopIcon":627,"secondaryButton":630},{"text":618,"config":619},"Start free trial",{"href":620,"dataGaName":249,"dataGaLocation":621},"https://gitlab.com/-/trials/new/","nav",{"altText":623,"config":624},"Gitlab Icon",{"src":625,"dataGaName":626,"dataGaLocation":621},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":623,"config":628},{"src":629,"dataGaName":626,"dataGaLocation":621},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":631,"config":632},"Get Started",{"href":633,"dataGaName":634,"dataGaLocation":621},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":636,"mobileIcon":640,"desktopIcon":642},{"text":637,"config":638},"Learn more about GitLab Duo",{"href":280,"dataGaName":639,"dataGaLocation":621},"gitlab duo",{"altText":623,"config":641},{"src":625,"dataGaName":626,"dataGaLocation":621},{"altText":623,"config":643},{"src":629,"dataGaName":626,"dataGaLocation":621},{"button":645,"mobileIcon":650,"desktopIcon":652},{"text":646,"config":647},"/switch",{"href":648,"dataGaName":649,"dataGaLocation":621},"#contact","switch",{"altText":623,"config":651},{"src":625,"dataGaName":626,"dataGaLocation":621},{"altText":623,"config":653},{"src":654,"dataGaName":626,"dataGaLocation":621},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":656,"mobileIcon":661,"desktopIcon":663},{"text":657,"config":658},"Back to pricing",{"href":392,"dataGaName":659,"dataGaLocation":621,"icon":660},"back to pricing","GoBack",{"altText":623,"config":662},{"src":625,"dataGaName":626,"dataGaLocation":621},{"altText":623,"config":664},{"src":629,"dataGaName":626,"dataGaLocation":621},{"title":666,"titleMobile":667,"button":668,"config":673},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":286,"config":669},{"href":670,"dataGaName":671,"dataGaLocation":672},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":674,"disabled":222},"release",{"data":676},{"text":677,"source":678,"edit":684,"contribute":689,"config":694,"items":699,"minimal":908},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":679,"config":680},"View page source",{"href":681,"dataGaName":682,"dataGaLocation":683},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":685,"config":686},"Edit this page",{"href":687,"dataGaName":688,"dataGaLocation":683},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":690,"config":691},"Please contribute",{"href":692,"dataGaName":693,"dataGaLocation":683},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":695,"facebook":696,"youtube":697,"linkedin":698},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[700,747,800,844,876],{"title":390,"links":701,"subMenu":716},[702,706,711],{"text":703,"config":704},"View plans",{"href":392,"dataGaName":705,"dataGaLocation":683},"view plans",{"text":707,"config":708},"Why Premium?",{"href":709,"dataGaName":710,"dataGaLocation":683},"/pricing/premium/","why premium",{"text":712,"config":713},"Why Ultimate?",{"href":714,"dataGaName":715,"dataGaLocation":683},"/pricing/ultimate/","why ultimate",[717],{"title":718,"links":719},"Contact Us",[720,723,725,727,732,737,742],{"text":721,"config":722},"Contact sales",{"href":573,"dataGaName":254,"dataGaLocation":683},{"text":576,"config":724},{"href":578,"dataGaName":579,"dataGaLocation":683},{"text":581,"config":726},{"href":583,"dataGaName":584,"dataGaLocation":683},{"text":728,"config":729},"Status",{"href":730,"dataGaName":731,"dataGaLocation":683},"https://status.gitlab.com/","status",{"text":733,"config":734},"Terms of use",{"href":735,"dataGaName":736,"dataGaLocation":683},"/terms/","terms of use",{"text":738,"config":739},"Privacy statement",{"href":740,"dataGaName":741,"dataGaLocation":683},"/privacy/","privacy statement",{"text":743,"config":744},"Cookie preferences",{"dataGaName":745,"dataGaLocation":683,"id":746,"isOneTrustButton":225},"cookie preferences","ot-sdk-btn",{"title":291,"links":748,"subMenu":757},[749,753],{"text":750,"config":751},"DevSecOps platform",{"href":273,"dataGaName":752,"dataGaLocation":683},"devsecops platform",{"text":754,"config":755},"AI-Assisted Development",{"href":280,"dataGaName":756,"dataGaLocation":683},"ai-assisted development",[758],{"title":759,"links":760},"Topics",[761,766,771,775,780,785,790,795],{"text":762,"config":763},"CICD",{"href":764,"dataGaName":765,"dataGaLocation":683},"/topics/ci-cd/","cicd",{"text":767,"config":768},"GitOps",{"href":769,"dataGaName":770,"dataGaLocation":683},"/topics/gitops/","gitops",{"text":235,"config":772},{"href":773,"dataGaName":774,"dataGaLocation":683},"/topics/devops/","devops",{"text":776,"config":777},"Version Control",{"href":778,"dataGaName":779,"dataGaLocation":683},"/topics/version-control/","version control",{"text":781,"config":782},"DevSecOps",{"href":783,"dataGaName":784,"dataGaLocation":683},"/topics/devsecops/","devsecops",{"text":786,"config":787},"Cloud Native",{"href":788,"dataGaName":789,"dataGaLocation":683},"/topics/cloud-native/","cloud native",{"text":791,"config":792},"AI for Coding",{"href":793,"dataGaName":794,"dataGaLocation":683},"/topics/devops/ai-for-coding/","ai for coding",{"text":796,"config":797},"Agentic AI",{"href":798,"dataGaName":799,"dataGaLocation":683},"/topics/agentic-ai/","agentic ai",{"title":801,"links":802},"Solutions",[803,805,807,812,816,819,823,826,828,831,834,839],{"text":334,"config":804},{"href":329,"dataGaName":334,"dataGaLocation":683},{"text":323,"config":806},{"href":307,"dataGaName":308,"dataGaLocation":683},{"text":808,"config":809},"Agile development",{"href":810,"dataGaName":811,"dataGaLocation":683},"/solutions/agile-delivery/","agile delivery",{"text":813,"config":814},"SCM",{"href":319,"dataGaName":815,"dataGaLocation":683},"source code management",{"text":762,"config":817},{"href":312,"dataGaName":818,"dataGaLocation":683},"continuous integration & delivery",{"text":820,"config":821},"Value stream management",{"href":362,"dataGaName":822,"dataGaLocation":683},"value stream management",{"text":767,"config":824},{"href":825,"dataGaName":770,"dataGaLocation":683},"/solutions/gitops/",{"text":372,"config":827},{"href":375,"dataGaName":376,"dataGaLocation":683},{"text":829,"config":830},"Small business",{"href":381,"dataGaName":382,"dataGaLocation":683},{"text":832,"config":833},"Public sector",{"href":387,"dataGaName":388,"dataGaLocation":683},{"text":835,"config":836},"Education",{"href":837,"dataGaName":838,"dataGaLocation":683},"/solutions/education/","education",{"text":840,"config":841},"Financial services",{"href":842,"dataGaName":843,"dataGaLocation":683},"/solutions/finance/","financial services",{"title":395,"links":845},[846,848,850,852,855,857,860,862,864,866,868,870,872,874],{"text":408,"config":847},{"href":410,"dataGaName":411,"dataGaLocation":683},{"text":413,"config":849},{"href":415,"dataGaName":416,"dataGaLocation":683},{"text":418,"config":851},{"href":420,"dataGaName":421,"dataGaLocation":683},{"text":423,"config":853},{"href":425,"dataGaName":854,"dataGaLocation":683},"docs",{"text":446,"config":856},{"href":448,"dataGaName":449,"dataGaLocation":683},{"text":858,"config":859},"What's new",{"href":505,"dataGaName":506,"dataGaLocation":683},{"text":441,"config":861},{"href":443,"dataGaName":444,"dataGaLocation":683},{"text":460,"config":863},{"href":462,"dataGaName":463,"dataGaLocation":683},{"text":468,"config":865},{"href":470,"dataGaName":471,"dataGaLocation":683},{"text":473,"config":867},{"href":475,"dataGaName":476,"dataGaLocation":683},{"text":478,"config":869},{"href":480,"dataGaName":481,"dataGaLocation":683},{"text":483,"config":871},{"href":485,"dataGaName":486,"dataGaLocation":683},{"text":488,"config":873},{"href":490,"dataGaName":491,"dataGaLocation":683},{"text":493,"config":875},{"href":495,"dataGaName":236,"dataGaLocation":683},{"title":508,"links":877},[878,880,882,884,886,888,892,897,899,901,903],{"text":516,"config":879},{"href":518,"dataGaName":510,"dataGaLocation":683},{"text":521,"config":881},{"href":523,"dataGaName":524,"dataGaLocation":683},{"text":529,"config":883},{"href":531,"dataGaName":532,"dataGaLocation":683},{"text":534,"config":885},{"href":536,"dataGaName":537,"dataGaLocation":683},{"text":539,"config":887},{"href":541,"dataGaName":542,"dataGaLocation":683},{"text":889,"config":890},"Sustainability",{"href":891,"dataGaName":889,"dataGaLocation":683},"/sustainability/",{"text":893,"config":894},"Diversity, inclusion and belonging (DIB)",{"href":895,"dataGaName":896,"dataGaLocation":683},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":544,"config":898},{"href":546,"dataGaName":547,"dataGaLocation":683},{"text":554,"config":900},{"href":556,"dataGaName":557,"dataGaLocation":683},{"text":559,"config":902},{"href":561,"dataGaName":562,"dataGaLocation":683},{"text":904,"config":905},"Modern Slavery Transparency Statement",{"href":906,"dataGaName":907,"dataGaLocation":683},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":909},[910,913,916],{"text":911,"config":912},"Terms",{"href":735,"dataGaName":736,"dataGaLocation":683},{"text":914,"config":915},"Cookies",{"dataGaName":745,"dataGaLocation":683,"id":746,"isOneTrustButton":225},{"text":917,"config":918},"Privacy",{"href":740,"dataGaName":741,"dataGaLocation":683},[920],{"id":921,"title":7,"body":221,"config":922,"content":924,"description":221,"extension":928,"meta":929,"navigation":225,"path":930,"seo":931,"stem":932,"__hash__":933},"blogAuthors/en-us/blog/authors/sandra-salerno.yml",{"template":923},"BlogAuthor",{"name":7,"config":925},{"headshot":926,"ctfId":927},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Sandra-Salerno","yml",{},"/en-us/blog/authors/sandra-salerno",{},"en-us/blog/authors/sandra-salerno","e9qwTk0JTMCvf-LzRDpGAhEnfrrb8pXXDjF7qjU_gKw",[935,943,950],{"title":936,"description":937,"heroImage":938,"category":217,"date":939,"authors":940,"slug":942,"externalUrl":221},"GitLab named a Leader in the 2026 Gartner® Magic Quadrant™ for DevSecOps Platforms","Agents made coding fast. GitLab is the Intelligent Orchestration Platform for DevSecOps that brings speed with control for the rest of the software lifecycle.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","2026-06-17",[941],"Manav Khurana","gitlab-leader-2026-gartner-mq-devsecops-platforms",{"title":944,"description":945,"heroImage":946,"category":217,"date":939,"authors":947,"slug":949,"externalUrl":221},"GitLab and Capgemini accelerate DevSecOps transformation","The global alliance helps organizations modernize software delivery, secure their supply chain, and bring AI into development workflows.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781279411/n3pkmddd2eswa8qbu06z.png",[948],"Alex Picker","gitlab-and-capgemini-global-alliance-partnership",{"title":951,"description":952,"heroImage":953,"category":217,"date":939,"authors":954,"slug":955,"externalUrl":221},"Introducing the 2026 EMEA GitLab Partner Award winners","Learn about the EMEA partners who made an outstanding impact over the past year.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1781608381/biycl2ib2kpsbspjlac7.png",[948],"2026-emea-gitlab-partner-awards",{"promotions":957},[958,972,984,996],{"id":959,"categories":960,"header":962,"text":963,"button":964,"image":969},"ai-modernization",[961],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":965,"config":966},"Get your AI maturity score",{"href":967,"dataGaName":968,"dataGaLocation":449},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":970},{"src":971},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":973,"categories":974,"header":976,"text":963,"button":977,"image":981},"devops-modernization",[975,784],"product","Are you just managing tools or shipping innovation?",{"text":978,"config":979},"Get your DevOps maturity score",{"href":980,"dataGaName":968,"dataGaLocation":449},"/assessments/devops-modernization-assessment/",{"config":982},{"src":983},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":985,"categories":986,"header":988,"text":963,"button":989,"image":993},"security-modernization",[987],"security","Are you trading speed for security?",{"text":990,"config":991},"Get your security maturity score",{"href":992,"dataGaName":968,"dataGaLocation":449},"/assessments/security-modernization-assessment/",{"config":994},{"src":995},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":997,"paths":998,"header":1001,"text":1002,"button":1003,"image":1008},"github-azure-migration",[999,1000],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":1004,"config":1005},"See how GitLab compares to GitHub",{"href":1006,"dataGaName":1007,"dataGaLocation":449},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1009},{"src":983},{"header":1011,"blurb":1012,"button":1013,"secondaryButton":1018},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1014,"config":1015},"Get your free trial",{"href":1016,"dataGaName":249,"dataGaLocation":1017},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":721,"config":1019},{"href":573,"dataGaName":254,"dataGaLocation":1017},1786803774119]