[{"data":1,"prerenderedAt":976},["ShallowReactive",2],{"/blog/gitlab-composer-packages-migration-path":3,"navigation-en-us":194,"banner-en-us":619,"footer-en-us":629,"blog-post-authors-en-us-Jochen Roth":874,"blog-related-posts-en-us-gitlab-composer-packages-migration-path":888,"blog-promotions-en-us":912,"next-steps-en-us":966},{"id":4,"title":5,"authors":6,"body":8,"category":172,"date":173,"description":174,"extension":175,"externalUrl":176,"faq":176,"featured":177,"heroImage":178,"meta":179,"navigation":180,"path":181,"seo":182,"slug":186,"stem":187,"tags":188,"template":192,"updatedDate":176,"__hash__":193},"blogPosts/en-us/blog/gitlab-composer-packages-migration-path.md","Migrate composer packages to GitLab",[7],"Jochen Roth",{"type":9,"value":10,"toc":162},"minimark",[11,16,20,25,33,45,49,52,55,103,107,110,113,116,131,135,158],[12,13,15],"h2",{"id":14},"manage-composer-packages-in-gitlab","Manage Composer Packages in Gitlab",[17,18,19],"p",{},"With Gitlab 13.3, a repository for composer packages was introduced. This allows you to store and manage your private and public composer packages in your Gitlab instance.",[21,22,24],"h3",{"id":23},"create-packages","Create Packages",[17,26,27,28,32],{},"Creating packages is only a matter of adding the composer template to your ",[29,30,31],"code",{},".gitlab-ci.yml",". Gitlab will automatically create a package when a git tag was created or a commit was pushed to a branch.",[17,34,35],{},[36,37,40],"a",{"href":38,"rel":39},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399006/blog/Content%20Images/select-template.png",[],[41,42],"img",{"src":38,"width":43,"height":44},500,"auto",[21,46,48],{"id":47},"migrate-your-packages-to-gitlab","Migrate your Packages to Gitlab",[17,50,51],{},"You might wonder how to create packages for your existing tags of each repository.",[17,53,54],{},"You have 2 options:",[56,57,58,94],"ol",{},[59,60,61,62],"li",{},"Use curl to create packages manually, for example:",[63,64,69],"pre",{"className":65,"code":66,"language":67,"meta":68,"style":68},"language-shell shiki shiki-themes github-light","curl --data tag=1.0.0 'https://__token__:\u003Cpersonal-access-token>@gitlab.com/api/v4/projects/\u003Cproject_id>/packages/composer'\n","shell","",[29,70,71],{"__ignoreMap":68},[72,73,76,80,84,88,91],"span",{"class":74,"line":75},"line",1,[72,77,79],{"class":78},"s7eDp","curl",[72,81,83],{"class":82},"sYu0t"," --data",[72,85,87],{"class":86},"sYBdl"," tag=",[72,89,90],{"class":82},"1.0.0",[72,92,93],{"class":86}," 'https://__token__:\u003Cpersonal-access-token>@gitlab.com/api/v4/projects/\u003Cproject_id>/packages/composer'\n",[59,95,96,97,102],{},"Use ",[36,98,101],{"href":99,"rel":100},"https://gitlab.com/ochorocho/gitlab-create-package-versions",[],"this package",", which will create all packages and their versions for you using the Gitlab API.",[12,104,106],{"id":105},"conclusion","Conclusion",[17,108,109],{},"So far it is working pretty well. Publish and install packages works flawlessly. Managing permissions for a package is a breeze.",[17,111,112],{},"Currently there is only a group endpoint. I could imagine others may require an instance endpoint to be able to access all packages of a Gitlab instance using a single endpoint/repository.\nFor now you have to add multiple endpoints/repositories to your composer.json for each group.",[17,114,115],{},"In my company, one group contains all shared projects and we were able circumvent adding multiple endpoints/repositories.",[17,117,118,119,124,125,130],{},"There is always room for improvement. For example, the GUI should show more ",[36,120,123],{"href":121,"rel":122},"https://gitlab.com/gitlab-org/gitlab/-/issues/254385",[],"details about the size of packages and how it was published (manually or via CI)"," and ",[36,126,129],{"href":127,"rel":128},"https://gitlab.com/gitlab-org/gitlab/-/issues/240887",[],"semantic versioning is not fully supported",".\nIf you are interested in GitLab or Composer, both issues are great ways to contribute, so that we can continue to improve this product together.",[12,132,134],{"id":133},"resources","Resources",[136,137,138,145,152],"ul",{},[59,139,140],{},[36,141,144],{"href":142,"rel":143},"https://docs.gitlab.com/user/packages/composer_repository/",[],"GitLab Packages Docs",[59,146,147],{},[36,148,151],{"href":149,"rel":150},"https://getcomposer.org/doc/",[],"Composer Docs",[59,153,154],{},[36,155,157],{"href":99,"rel":156},[],"Migrate to Gitlab Packages",[159,160,161],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":68,"searchDepth":163,"depth":163,"links":164},2,[165,170,171],{"id":14,"depth":163,"text":15,"children":166},[167,169],{"id":23,"depth":168,"text":24},3,{"id":47,"depth":168,"text":48},{"id":105,"depth":163,"text":106},{"id":133,"depth":163,"text":134},"unfiltered","2020-09-22","GitLab Packages now ships with a composer registry","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681586/Blog/Hero%20Images/gitlab-composer-package-migration.jpg",{},true,"/en-us/blog/gitlab-composer-packages-migration-path",{"title":5,"description":174,"ogTitle":5,"ogDescription":174,"noIndex":177,"ogImage":178,"ogUrl":183,"ogSiteName":184,"ogType":185,"canonicalUrls":183},"https://about.gitlab.com/blog/gitlab-composer-packages-migration-path","https://about.gitlab.com","article","gitlab-composer-packages-migration-path","en-us/blog/gitlab-composer-packages-migration-path",[189,190,191],"open source","workflow","integrations","BlogPost","RYnF8CuHyxlmNktb6FbdCvcB8VDxKAZZUGAl4tLZgZs",{"logo":195,"freeTrial":200,"sales":205,"login":210,"items":215,"search":539,"minimal":570,"duo":589,"switchNav":598,"pricingDeployment":609},{"config":196},{"href":197,"dataGaName":198,"dataGaLocation":199},"/","gitlab logo","header",{"text":201,"config":202},"Get free trial",{"href":203,"dataGaName":204,"dataGaLocation":199},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":206,"config":207},"Request a demo",{"href":208,"dataGaName":209,"dataGaLocation":199},"/sales/?contact-topic=request-demo","sales",{"text":211,"config":212},"Sign in",{"href":213,"dataGaName":214,"dataGaLocation":199},"https://gitlab.com/users/sign_in/","sign in",[216,245,345,350,461,517],{"text":217,"config":218,"menu":220},"Platform",{"dataNavLevelOne":219},"platform",{"type":221,"columns":222},"cards",[223,229,237],{"title":217,"description":224,"link":225},"The intelligent orchestration platform for DevSecOps",{"text":226,"config":227},"Explore our Platform",{"href":228,"dataGaName":219,"dataGaLocation":199},"/platform/",{"title":230,"description":231,"link":232},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":233,"config":234},"Meet GitLab Duo",{"href":235,"dataGaName":236,"dataGaLocation":199},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":238,"description":239,"link":240},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":241,"config":242},"Learn more",{"href":243,"dataGaName":244,"dataGaLocation":199},"/why-gitlab/","why gitlab",{"text":246,"left":180,"config":247,"menu":249},"Product",{"dataNavLevelOne":248},"solutions",{"type":250,"link":251,"columns":255,"feature":324},"lists",{"text":252,"config":253},"View all Solutions",{"href":254,"dataGaName":248,"dataGaLocation":199},"/solutions/",[256,280,303],{"title":257,"description":258,"link":259,"items":264},"Automation","CI/CD and automation to accelerate deployment",{"config":260},{"icon":261,"href":262,"dataGaName":263,"dataGaLocation":199},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[265,269,272,276],{"text":266,"config":267},"CI/CD",{"href":268,"dataGaLocation":199,"dataGaName":266},"/solutions/continuous-integration/",{"text":230,"config":270},{"href":235,"dataGaLocation":199,"dataGaName":271},"gitlab duo agent platform - product menu",{"text":273,"config":274},"Source Code Management",{"href":275,"dataGaLocation":199,"dataGaName":273},"/solutions/source-code-management/",{"text":277,"config":278},"Automated Software Delivery",{"href":262,"dataGaLocation":199,"dataGaName":279},"Automated software delivery",{"title":281,"description":282,"link":283,"items":288},"Security","Deliver code faster without compromising security",{"config":284},{"href":285,"dataGaName":286,"dataGaLocation":199,"icon":287},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[289,293,298],{"text":290,"config":291},"Application Security Testing",{"href":285,"dataGaName":292,"dataGaLocation":199},"Application security testing",{"text":294,"config":295},"Software Supply Chain Security",{"href":296,"dataGaLocation":199,"dataGaName":297},"/solutions/supply-chain/","Software supply chain security",{"text":299,"config":300},"Software Compliance",{"href":301,"dataGaName":302,"dataGaLocation":199},"/solutions/software-compliance/","software compliance",{"title":304,"link":305,"items":310},"Measurement",{"config":306},{"icon":307,"href":308,"dataGaName":309,"dataGaLocation":199},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[311,315,319],{"text":312,"config":313},"Visibility & Measurement",{"href":308,"dataGaLocation":199,"dataGaName":314},"Visibility and Measurement",{"text":316,"config":317},"Value Stream Management",{"href":318,"dataGaLocation":199,"dataGaName":316},"/solutions/value-stream-management/",{"text":320,"config":321},"Analytics & Insights",{"href":322,"dataGaLocation":199,"dataGaName":323},"/solutions/analytics-and-insights/","Analytics and insights",{"title":325,"type":250,"items":326},"GitLab for",[327,333,339],{"text":328,"config":329},"Enterprise",{"icon":330,"href":331,"dataGaLocation":199,"dataGaName":332},"Building","/enterprise/","enterprise",{"text":334,"config":335},"Small Business",{"icon":336,"href":337,"dataGaLocation":199,"dataGaName":338},"Work","/small-business/","small business",{"text":340,"config":341},"Public Sector",{"icon":342,"href":343,"dataGaLocation":199,"dataGaName":344},"Organization","/solutions/public-sector/","public sector",{"text":346,"config":347},"Pricing",{"href":348,"dataGaName":349,"dataGaLocation":199,"dataNavLevelOne":349},"/pricing/","pricing",{"text":134,"config":351,"menu":352},{"dataNavLevelOne":133},{"type":250,"link":353,"columns":357,"feature":450},{"text":354,"config":355},"View all resources",{"href":356,"dataGaName":133,"dataGaLocation":199},"/resources/",[358,390,417],{"title":359,"items":360},"Getting started",[361,366,371,376,381,386],{"text":362,"config":363},"Install",{"href":364,"dataGaName":365,"dataGaLocation":199},"/install/","install",{"text":367,"config":368},"Quick start guides",{"href":369,"dataGaName":370,"dataGaLocation":199},"/get-started/","quick setup checklists",{"text":372,"config":373},"Learn",{"href":374,"dataGaLocation":199,"dataGaName":375},"https://university.gitlab.com/","learn",{"text":377,"config":378},"Product documentation",{"href":379,"dataGaName":380,"dataGaLocation":199},"https://docs.gitlab.com/","product documentation",{"text":382,"config":383},"Best practice videos",{"href":384,"dataGaName":385,"dataGaLocation":199},"/getting-started-videos/","best practice videos",{"text":387,"config":388},"Integrations",{"href":389,"dataGaName":191,"dataGaLocation":199},"/integrations/",{"title":391,"items":392},"Discover",[393,398,403,408,412],{"text":394,"config":395},"Customer success stories",{"href":396,"dataGaName":397,"dataGaLocation":199},"/customers/","customer success stories",{"text":399,"config":400},"Blog",{"href":401,"dataGaName":402,"dataGaLocation":199},"/blog/","blog",{"text":404,"config":405},"Demo Hub",{"href":406,"dataGaName":407,"dataGaLocation":199},"/demo-hub/","demo hub",{"text":409,"config":410},"The Source",{"href":411,"dataGaName":402,"dataGaLocation":199},"/the-source/",{"text":413,"config":414},"Remote",{"href":415,"dataGaName":416,"dataGaLocation":199},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":418,"items":419},"Connect",[420,425,430,435,440,445],{"text":421,"config":422},"GitLab Services",{"href":423,"dataGaName":424,"dataGaLocation":199},"/services/","services",{"text":426,"config":427},"Contribute",{"href":428,"dataGaName":429,"dataGaLocation":199},"https://contributors.gitlab.com","contribute",{"text":431,"config":432},"Community",{"href":433,"dataGaName":434,"dataGaLocation":199},"/community/","community",{"text":436,"config":437},"Forum",{"href":438,"dataGaName":439,"dataGaLocation":199},"https://forum.gitlab.com/","forum",{"text":441,"config":442},"Events",{"href":443,"dataGaName":444,"dataGaLocation":199},"/events/","events",{"text":446,"config":447},"Partners",{"href":448,"dataGaName":449,"dataGaLocation":199},"/partners/","partners",{"config":451,"title":454,"text":455,"link":456},{"background":452,"textColor":453},"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":457,"config":458},"Read the latest",{"href":459,"dataGaName":460,"dataGaLocation":199},"/whats-new/","whats new",{"text":462,"config":463,"menu":465},"Company",{"dataNavLevelOne":464},"company",{"type":250,"columns":466},[467],{"items":468},[469,474,480,482,487,492,497,502,507,512],{"text":470,"config":471},"About",{"href":472,"dataGaName":473,"dataGaLocation":199},"/company/","about",{"text":475,"config":476,"footerGa":479},"Jobs",{"href":477,"dataGaName":478,"dataGaLocation":199},"/jobs/","jobs",{"dataGaName":478},{"text":441,"config":481},{"href":443,"dataGaName":444,"dataGaLocation":199},{"text":483,"config":484},"Leadership",{"href":485,"dataGaName":486,"dataGaLocation":199},"/company/team/e-group/","leadership",{"text":488,"config":489},"Handbook",{"href":490,"dataGaName":491,"dataGaLocation":199},"https://handbook.gitlab.com/","handbook",{"text":493,"config":494},"Investor relations",{"href":495,"dataGaName":496,"dataGaLocation":199},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":498,"config":499},"Trust Center",{"href":500,"dataGaName":501,"dataGaLocation":199},"/security/","trust center",{"text":503,"config":504},"AI Transparency Center",{"href":505,"dataGaName":506,"dataGaLocation":199},"/ai-transparency-center/","ai transparency center",{"text":508,"config":509},"Newsletter",{"href":510,"dataGaName":511,"dataGaLocation":199},"/company/contact/#contact-forms","newsletter",{"text":513,"config":514},"Press",{"href":515,"dataGaName":516,"dataGaLocation":199},"/press/","press",{"text":518,"config":519,"menu":520},"Contact us",{"dataNavLevelOne":464},{"type":250,"columns":521},[522],{"items":523},[524,529,534],{"text":525,"config":526},"Talk to sales",{"href":527,"dataGaName":528,"dataGaLocation":199},"/sales/","talk to sales",{"text":530,"config":531},"Support portal",{"href":532,"dataGaName":533,"dataGaLocation":199},"https://support.gitlab.com/hc/en-us","support portal",{"text":535,"config":536},"Customer portal",{"href":537,"dataGaName":538,"dataGaLocation":199},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":540,"login":541,"suggestions":548},"Close",{"text":542,"link":543},"To search repositories and projects, login to",{"text":544,"config":545},"gitlab.com",{"href":213,"dataGaName":546,"dataGaLocation":547},"search login","search",{"text":549,"default":550},"Suggestions",[551,553,557,559,563,567],{"text":230,"config":552},{"href":235,"dataGaName":230,"dataGaLocation":547},{"text":554,"config":555},"Code Suggestions (AI)",{"href":556,"dataGaName":554,"dataGaLocation":547},"/solutions/code-suggestions/",{"text":266,"config":558},{"href":268,"dataGaName":266,"dataGaLocation":547},{"text":560,"config":561},"GitLab on AWS",{"href":562,"dataGaName":560,"dataGaLocation":547},"/partners/technology-partners/aws/",{"text":564,"config":565},"GitLab on Google Cloud",{"href":566,"dataGaName":564,"dataGaLocation":547},"/partners/technology-partners/google-cloud-platform/",{"text":568,"config":569},"Why GitLab?",{"href":243,"dataGaName":568,"dataGaLocation":547},{"freeTrial":571,"mobileIcon":576,"desktopIcon":581,"secondaryButton":584},{"text":572,"config":573},"Start free trial",{"href":574,"dataGaName":204,"dataGaLocation":575},"https://gitlab.com/-/trials/new/","nav",{"altText":577,"config":578},"Gitlab Icon",{"src":579,"dataGaName":580,"dataGaLocation":575},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":577,"config":582},{"src":583,"dataGaName":580,"dataGaLocation":575},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":585,"config":586},"Get Started",{"href":587,"dataGaName":588,"dataGaLocation":575},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":590,"mobileIcon":594,"desktopIcon":596},{"text":591,"config":592},"Learn more about GitLab Duo",{"href":235,"dataGaName":593,"dataGaLocation":575},"gitlab duo",{"altText":577,"config":595},{"src":579,"dataGaName":580,"dataGaLocation":575},{"altText":577,"config":597},{"src":583,"dataGaName":580,"dataGaLocation":575},{"button":599,"mobileIcon":604,"desktopIcon":606},{"text":600,"config":601},"/switch",{"href":602,"dataGaName":603,"dataGaLocation":575},"#contact","switch",{"altText":577,"config":605},{"src":579,"dataGaName":580,"dataGaLocation":575},{"altText":577,"config":607},{"src":608,"dataGaName":580,"dataGaLocation":575},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":610,"mobileIcon":615,"desktopIcon":617},{"text":611,"config":612},"Back to pricing",{"href":348,"dataGaName":613,"dataGaLocation":575,"icon":614},"back to pricing","GoBack",{"altText":577,"config":616},{"src":579,"dataGaName":580,"dataGaLocation":575},{"altText":577,"config":618},{"src":583,"dataGaName":580,"dataGaLocation":575},{"title":620,"titleMobile":621,"button":622,"config":627},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":241,"config":623},{"href":624,"dataGaName":625,"dataGaLocation":626},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":628,"disabled":177},"release",{"data":630},{"text":631,"source":632,"edit":638,"contribute":643,"config":648,"items":653,"minimal":863},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":633,"config":634},"View page source",{"href":635,"dataGaName":636,"dataGaLocation":637},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":639,"config":640},"Edit this page",{"href":641,"dataGaName":642,"dataGaLocation":637},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":644,"config":645},"Please contribute",{"href":646,"dataGaName":647,"dataGaLocation":637},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":649,"facebook":650,"youtube":651,"linkedin":652},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[654,701,755,799,831],{"title":346,"links":655,"subMenu":670},[656,660,665],{"text":657,"config":658},"View plans",{"href":348,"dataGaName":659,"dataGaLocation":637},"view plans",{"text":661,"config":662},"Why Premium?",{"href":663,"dataGaName":664,"dataGaLocation":637},"/pricing/premium/","why premium",{"text":666,"config":667},"Why Ultimate?",{"href":668,"dataGaName":669,"dataGaLocation":637},"/pricing/ultimate/","why ultimate",[671],{"title":672,"links":673},"Contact Us",[674,677,679,681,686,691,696],{"text":675,"config":676},"Contact sales",{"href":527,"dataGaName":209,"dataGaLocation":637},{"text":530,"config":678},{"href":532,"dataGaName":533,"dataGaLocation":637},{"text":535,"config":680},{"href":537,"dataGaName":538,"dataGaLocation":637},{"text":682,"config":683},"Status",{"href":684,"dataGaName":685,"dataGaLocation":637},"https://status.gitlab.com/","status",{"text":687,"config":688},"Terms of use",{"href":689,"dataGaName":690,"dataGaLocation":637},"/terms/","terms of use",{"text":692,"config":693},"Privacy statement",{"href":694,"dataGaName":695,"dataGaLocation":637},"/privacy/","privacy statement",{"text":697,"config":698},"Cookie preferences",{"dataGaName":699,"dataGaLocation":637,"id":700,"isOneTrustButton":180},"cookie preferences","ot-sdk-btn",{"title":246,"links":702,"subMenu":711},[703,707],{"text":704,"config":705},"DevSecOps platform",{"href":228,"dataGaName":706,"dataGaLocation":637},"devsecops platform",{"text":708,"config":709},"AI-Assisted Development",{"href":235,"dataGaName":710,"dataGaLocation":637},"ai-assisted development",[712],{"title":713,"links":714},"Topics",[715,720,725,730,735,740,745,750],{"text":716,"config":717},"CICD",{"href":718,"dataGaName":719,"dataGaLocation":637},"/topics/ci-cd/","cicd",{"text":721,"config":722},"GitOps",{"href":723,"dataGaName":724,"dataGaLocation":637},"/topics/gitops/","gitops",{"text":726,"config":727},"DevOps",{"href":728,"dataGaName":729,"dataGaLocation":637},"/topics/devops/","devops",{"text":731,"config":732},"Version Control",{"href":733,"dataGaName":734,"dataGaLocation":637},"/topics/version-control/","version control",{"text":736,"config":737},"DevSecOps",{"href":738,"dataGaName":739,"dataGaLocation":637},"/topics/devsecops/","devsecops",{"text":741,"config":742},"Cloud Native",{"href":743,"dataGaName":744,"dataGaLocation":637},"/topics/cloud-native/","cloud native",{"text":746,"config":747},"AI for Coding",{"href":748,"dataGaName":749,"dataGaLocation":637},"/topics/devops/ai-for-coding/","ai for coding",{"text":751,"config":752},"Agentic AI",{"href":753,"dataGaName":754,"dataGaLocation":637},"/topics/agentic-ai/","agentic ai",{"title":756,"links":757},"Solutions",[758,760,762,767,771,774,778,781,783,786,789,794],{"text":290,"config":759},{"href":285,"dataGaName":290,"dataGaLocation":637},{"text":279,"config":761},{"href":262,"dataGaName":263,"dataGaLocation":637},{"text":763,"config":764},"Agile development",{"href":765,"dataGaName":766,"dataGaLocation":637},"/solutions/agile-delivery/","agile delivery",{"text":768,"config":769},"SCM",{"href":275,"dataGaName":770,"dataGaLocation":637},"source code management",{"text":716,"config":772},{"href":268,"dataGaName":773,"dataGaLocation":637},"continuous integration & delivery",{"text":775,"config":776},"Value stream management",{"href":318,"dataGaName":777,"dataGaLocation":637},"value stream management",{"text":721,"config":779},{"href":780,"dataGaName":724,"dataGaLocation":637},"/solutions/gitops/",{"text":328,"config":782},{"href":331,"dataGaName":332,"dataGaLocation":637},{"text":784,"config":785},"Small business",{"href":337,"dataGaName":338,"dataGaLocation":637},{"text":787,"config":788},"Public sector",{"href":343,"dataGaName":344,"dataGaLocation":637},{"text":790,"config":791},"Education",{"href":792,"dataGaName":793,"dataGaLocation":637},"/solutions/education/","education",{"text":795,"config":796},"Financial services",{"href":797,"dataGaName":798,"dataGaLocation":637},"/solutions/finance/","financial services",{"title":134,"links":800},[801,803,805,807,810,812,815,817,819,821,823,825,827,829],{"text":362,"config":802},{"href":364,"dataGaName":365,"dataGaLocation":637},{"text":367,"config":804},{"href":369,"dataGaName":370,"dataGaLocation":637},{"text":372,"config":806},{"href":374,"dataGaName":375,"dataGaLocation":637},{"text":377,"config":808},{"href":379,"dataGaName":809,"dataGaLocation":637},"docs",{"text":399,"config":811},{"href":401,"dataGaName":402,"dataGaLocation":637},{"text":813,"config":814},"What's new",{"href":459,"dataGaName":460,"dataGaLocation":637},{"text":394,"config":816},{"href":396,"dataGaName":397,"dataGaLocation":637},{"text":413,"config":818},{"href":415,"dataGaName":416,"dataGaLocation":637},{"text":421,"config":820},{"href":423,"dataGaName":424,"dataGaLocation":637},{"text":426,"config":822},{"href":428,"dataGaName":429,"dataGaLocation":637},{"text":431,"config":824},{"href":433,"dataGaName":434,"dataGaLocation":637},{"text":436,"config":826},{"href":438,"dataGaName":439,"dataGaLocation":637},{"text":441,"config":828},{"href":443,"dataGaName":444,"dataGaLocation":637},{"text":446,"config":830},{"href":448,"dataGaName":449,"dataGaLocation":637},{"title":462,"links":832},[833,835,837,839,841,843,847,852,854,856,858],{"text":470,"config":834},{"href":472,"dataGaName":464,"dataGaLocation":637},{"text":475,"config":836},{"href":477,"dataGaName":478,"dataGaLocation":637},{"text":483,"config":838},{"href":485,"dataGaName":486,"dataGaLocation":637},{"text":488,"config":840},{"href":490,"dataGaName":491,"dataGaLocation":637},{"text":493,"config":842},{"href":495,"dataGaName":496,"dataGaLocation":637},{"text":844,"config":845},"Sustainability",{"href":846,"dataGaName":844,"dataGaLocation":637},"/sustainability/",{"text":848,"config":849},"Diversity, inclusion and belonging (DIB)",{"href":850,"dataGaName":851,"dataGaLocation":637},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":498,"config":853},{"href":500,"dataGaName":501,"dataGaLocation":637},{"text":508,"config":855},{"href":510,"dataGaName":511,"dataGaLocation":637},{"text":513,"config":857},{"href":515,"dataGaName":516,"dataGaLocation":637},{"text":859,"config":860},"Modern Slavery Transparency Statement",{"href":861,"dataGaName":862,"dataGaLocation":637},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":864},[865,868,871],{"text":866,"config":867},"Terms",{"href":689,"dataGaName":690,"dataGaLocation":637},{"text":869,"config":870},"Cookies",{"dataGaName":699,"dataGaLocation":637,"id":700,"isOneTrustButton":180},{"text":872,"config":873},"Privacy",{"href":694,"dataGaName":695,"dataGaLocation":637},[875],{"id":876,"title":7,"body":176,"config":877,"content":879,"description":176,"extension":882,"meta":883,"navigation":180,"path":884,"seo":885,"stem":886,"__hash__":887},"blogAuthors/en-us/blog/authors/jochen-roth.yml",{"template":878},"BlogAuthor",{"name":7,"config":880},{"headshot":68,"ctfId":881},"ochorocho","yml",{},"/en-us/blog/authors/jochen-roth",{},"en-us/blog/authors/jochen-roth","bpDTYB-OEMvg0mrECcj6t5JiTVNch0muXfjJhxtxce8",[889,897,905],{"title":890,"description":891,"heroImage":892,"category":172,"date":893,"authors":894,"slug":896,"externalUrl":176},"CEO Shadow Takeaways from Jacie","Recap of my experience in the CEO Shadow Program.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664102/Blog/Hero%20Images/gitlab-values-cover.png","2021-05-18",[895],"Jacie Bandur","ceo-shadow-recap",{"title":898,"description":899,"heroImage":900,"category":172,"date":901,"authors":902,"slug":904,"externalUrl":176},"Why I love contributing to GitLab","Making small meaningful changes is what it's all about.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679501/Blog/Hero%20Images/new-feature.png","2021-05-11",[903],"Austin Regnery","why-i-love-contributing-to-gitlab",{"title":906,"description":907,"heroImage":908,"category":172,"date":901,"authors":909,"slug":911,"externalUrl":176},"Placebo Lines on the Pipeline Graph","Have you noticed the connecting lines missing on your pipelines lately? Here's why","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749679507/Blog/Hero%20Images/ci-cd.png",[910],"Sam Beckham","placebo-lines-on-the-pipeline-graph",{"promotions":913},[914,928,940,952],{"id":915,"categories":916,"header":918,"text":919,"button":920,"image":925},"ai-modernization",[917],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":921,"config":922},"Get your AI maturity score",{"href":923,"dataGaName":924,"dataGaLocation":402},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":926},{"src":927},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":929,"categories":930,"header":932,"text":919,"button":933,"image":937},"devops-modernization",[931,739],"product","Are you just managing tools or shipping innovation?",{"text":934,"config":935},"Get your DevOps maturity score",{"href":936,"dataGaName":924,"dataGaLocation":402},"/assessments/devops-modernization-assessment/",{"config":938},{"src":939},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":941,"categories":942,"header":944,"text":919,"button":945,"image":949},"security-modernization",[943],"security","Are you trading speed for security?",{"text":946,"config":947},"Get your security maturity score",{"href":948,"dataGaName":924,"dataGaLocation":402},"/assessments/security-modernization-assessment/",{"config":950},{"src":951},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":953,"paths":954,"header":957,"text":958,"button":959,"image":964},"github-azure-migration",[955,956],"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":960,"config":961},"See how GitLab compares to GitHub",{"href":962,"dataGaName":963,"dataGaLocation":402},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":965},{"src":939},{"header":967,"blurb":968,"button":969,"secondaryButton":974},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":970,"config":971},"Get your free trial",{"href":972,"dataGaName":204,"dataGaLocation":973},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":675,"config":975},{"href":527,"dataGaName":209,"dataGaLocation":973},1786803767776]