[{"data":1,"prerenderedAt":971},["ShallowReactive",2],{"/blog/meltano-functional-group-update-post":3,"navigation-en-us":184,"banner-en-us":612,"footer-en-us":622,"blog-post-authors-en-us-Jacob Schatz":867,"blog-related-posts-en-us-meltano-functional-group-update-post":881,"blog-promotions-en-us":907,"next-steps-en-us":961},{"id":4,"title":5,"authors":6,"body":8,"category":160,"date":161,"description":162,"extension":163,"externalUrl":164,"faq":164,"featured":165,"heroImage":166,"meta":167,"navigation":168,"path":169,"seo":170,"slug":174,"stem":175,"tags":176,"template":182,"updatedDate":164,"__hash__":183},"blogPosts/en-us/blog/meltano-functional-group-update-post.md","New Meltano personas, priorities, and updates from the team",[7],"Jacob Schatz",{"type":9,"value":10,"toc":152},"minimark",[11,22,30,35,38,48,63,66,75,79,88,97,101,104,109,112,116,119,134,149],[12,13,14,15,21],"p",{},"Jacob Schatz here, Staff Engineer for ",[16,17,20],"a",{"href":18,"rel":19},"https://gitlab.com/meltano",[],"Meltano","! We've been heads down working on improving Meltano, and figured it was time for an update. We've had some great conversations that have helped us identify two general personas. Our team is also growing, and we're ready for frontend contributions, but more on that later.",[12,23,24,25,29],{},"We've been conducting interviews to zero in on what our users will want, what they're currently doing, and what tools they're using. Over the course of those conversations, we saw two main scenarios emerge. People either wanted a command line interface (CLI) or a graphical user interface (GUI). The GUIs that exist are painful to use, and not very intuitive. In both scenarios, people we spoke with are frustrated. This goes back to the original reason ",[16,26,28],{"href":27},"/blog/hey-data-teams-we-are-working-on-a-tool-just-for-you/","we decided to create Meltano"," — our data team members were relying on frustrating and expensive toolsets with poor UIs.",[31,32,34],"h3",{"id":33},"what-are-the-meltano-personas","What are the Meltano personas?",[12,36,37],{},"Our conversations revealed two general types of users:",[39,40,41,45],"ul",{},[42,43,44],"li",{},"Users who have engineers on staff",[42,46,47],{},"Users who do not have engineers on staff, or their engineers do not have bandwidth to help them",[12,49,50,51,56,57,62],{},"The Data team at GitLab, for example, has data engineers on staff who are willing, able, and happy to write Python. We won't be able to write every extractor and loader, so our users can follow our ",[16,52,55],{"href":53,"rel":54},"https://gitlab.com/meltano/specifications",[],"specifications",", which are based off of the ",[16,58,61],{"href":59,"rel":60},"https://github.com/singer-io/getting-started",[],"Singer specifications",". We want to make that as easy as possible, so Meltano can be the glue between all these different pieces.",[12,64,65],{},"For the other teams who don’t have the technical resources, we want to make it as if they had engineers on staff. Ideally, they'll just need to click a couple of buttons, run extract, load and transform with the extractors and loaders that we already have. Hopefully in the future the community can contribute more to these types of different extractors and loaders.",[12,67,68,69,74],{},"You can check out our updated ",[16,70,73],{"href":71,"rel":72},"https://gitlab.com/meltano/meltano/blob/master/README.md",[],"readme"," with more info about Meltano and our personas. We're working iteratively, so if you have a different setup or scenario to share, we want to hear from you about your experience! Get in touch with us and tell us about your struggles or successes with your data team.",[31,76,78],{"id":77},"whats-next","What’s next?",[12,80,81,82,87],{},"We're focused on our own CLI and GUI, and continuing to build more extractors and loaders (or ",[16,83,86],{"href":84,"rel":85},"https://www.singer.io/",[],"\"taps and targets\"","). We will be the glue that ties everything together. While current Singer taps and targets support extracting and loading, we'll be supporting much more, like removal of PII. Our CLI will support all of this from one configuration. We also want the CLI to have a really nice user experience, so I'm working with GitLab UX to help make it happen.",[12,89,90,91,96],{},"As always, we’re looking for contributors! In the ",[16,92,95],{"href":93,"rel":94},"https://gitlab.com/meltano/dashboard",[],"Dashboard project"," you’ll see the Chart.js library that I’m building to make really nice dashboards for Meltano. Although we've had a ton of great Python contributions, we haven’t had as many contributors to the frontend, so we’d love your help there.",[31,98,100],{"id":99},"in-other-news","In other news",[12,102,103],{},"There's a lot going on, here are some of the highlights!",[105,106,108],"h4",{"id":107},"dogfooding","Dogfooding",[12,110,111],{},"In my experience, unless one experiences the direct results of the code they write, and feel the pain their users feel when they hit a bug, one might not correctly solve the problem. Currently, we fulfill the data team's requests, but if something doesn't work they merely report back to us, without us experiencing the pain ourselves. We're changing how we work in order to imprint the idea that if something is broken, it's the Meltano team's responsibility. We’re all investigating every single pipeline failure, regardless of whose “fault” it is, because these suggest that it may be a poor user experience.",[105,113,115],{"id":114},"embedded-engineers","Embedded engineers",[12,117,118],{},"In order to dogfood better, we've taken a data engineer from the data team, and an engineer from the Meltano team. They split their work 50/50 so each does half of their usual work and half of each other's work. It's already made a huge difference by giving us more eyes and ears on lots of issues, and allowing the engineers to approach problems from a different angle. Another added benefit is that every Meltano engineer gets direct exposure and experience from the data team, to make them better data scientists as well product engineers.",[12,120,121,122,127,128,133],{},"That's all for now, get in touch with us in our ",[16,123,126],{"href":124,"rel":125},"https://gitlab.com/groups/meltano/-/boards",[],"issue tracker",", and tweet us ",[16,129,132],{"href":130,"rel":131},"https://twitter.com/meltanodata",[],"@meltanodata","!",[12,135,136,137,142,143,148],{},"Cover ",[16,138,141],{"href":139,"rel":140},"https://unsplash.com/photos/2FPjlAyMQTA",[],"image"," by ",[16,144,147],{"href":145,"rel":146},"https://unsplash.com/@johnschno",[],"John Schnobrich"," on Unsplash",[12,150,151],{},"Emily von Hoffmann contributed to this post.",{"title":153,"searchDepth":154,"depth":154,"links":155},"",2,[156,158,159],{"id":33,"depth":157,"text":34},3,{"id":77,"depth":157,"text":78},{"id":99,"depth":157,"text":100},"engineering","2018-10-08","There's a lot going on — here are some of the highlights on user research, dogfooding Meltano, embedding engineers, and hiring!","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749678847/Blog/Hero%20Images/meltano-fgu.jpg",{},true,"/en-us/blog/meltano-functional-group-update-post",{"title":5,"description":162,"ogTitle":5,"ogDescription":162,"noIndex":165,"ogImage":166,"ogUrl":171,"ogSiteName":172,"ogType":173,"canonicalUrls":171},"https://about.gitlab.com/blog/meltano-functional-group-update-post","https://about.gitlab.com","article","meltano-functional-group-update-post","en-us/blog/meltano-functional-group-update-post",[177,178,179,180,181],"demo","features","git","inside GitLab","workflow","BlogPost","1joQSNyX9Pl907P5M0s01SZgy-aK7lLVmLHZeCeDphE",{"logo":185,"freeTrial":190,"sales":195,"login":200,"items":205,"search":532,"minimal":563,"duo":582,"switchNav":591,"pricingDeployment":602},{"config":186},{"href":187,"dataGaName":188,"dataGaLocation":189},"/","gitlab logo","header",{"text":191,"config":192},"Get free trial",{"href":193,"dataGaName":194,"dataGaLocation":189},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":196,"config":197},"Request a demo",{"href":198,"dataGaName":199,"dataGaLocation":189},"/sales/?contact-topic=request-demo","sales",{"text":201,"config":202},"Sign in",{"href":203,"dataGaName":204,"dataGaLocation":189},"https://gitlab.com/users/sign_in/","sign in",[206,235,335,340,454,510],{"text":207,"config":208,"menu":210},"Platform",{"dataNavLevelOne":209},"platform",{"type":211,"columns":212},"cards",[213,219,227],{"title":207,"description":214,"link":215},"The intelligent orchestration platform for DevSecOps",{"text":216,"config":217},"Explore our Platform",{"href":218,"dataGaName":209,"dataGaLocation":189},"/platform/",{"title":220,"description":221,"link":222},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":223,"config":224},"Meet GitLab Duo",{"href":225,"dataGaName":226,"dataGaLocation":189},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":228,"description":229,"link":230},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":231,"config":232},"Learn more",{"href":233,"dataGaName":234,"dataGaLocation":189},"/why-gitlab/","why gitlab",{"text":236,"left":168,"config":237,"menu":239},"Product",{"dataNavLevelOne":238},"solutions",{"type":240,"link":241,"columns":245,"feature":314},"lists",{"text":242,"config":243},"View all Solutions",{"href":244,"dataGaName":238,"dataGaLocation":189},"/solutions/",[246,270,293],{"title":247,"description":248,"link":249,"items":254},"Automation","CI/CD and automation to accelerate deployment",{"config":250},{"icon":251,"href":252,"dataGaName":253,"dataGaLocation":189},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[255,259,262,266],{"text":256,"config":257},"CI/CD",{"href":258,"dataGaLocation":189,"dataGaName":256},"/solutions/continuous-integration/",{"text":220,"config":260},{"href":225,"dataGaLocation":189,"dataGaName":261},"gitlab duo agent platform - product menu",{"text":263,"config":264},"Source Code Management",{"href":265,"dataGaLocation":189,"dataGaName":263},"/solutions/source-code-management/",{"text":267,"config":268},"Automated Software Delivery",{"href":252,"dataGaLocation":189,"dataGaName":269},"Automated software delivery",{"title":271,"description":272,"link":273,"items":278},"Security","Deliver code faster without compromising security",{"config":274},{"href":275,"dataGaName":276,"dataGaLocation":189,"icon":277},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[279,283,288],{"text":280,"config":281},"Application Security Testing",{"href":275,"dataGaName":282,"dataGaLocation":189},"Application security testing",{"text":284,"config":285},"Software Supply Chain Security",{"href":286,"dataGaLocation":189,"dataGaName":287},"/solutions/supply-chain/","Software supply chain security",{"text":289,"config":290},"Software Compliance",{"href":291,"dataGaName":292,"dataGaLocation":189},"/solutions/software-compliance/","software compliance",{"title":294,"link":295,"items":300},"Measurement",{"config":296},{"icon":297,"href":298,"dataGaName":299,"dataGaLocation":189},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[301,305,309],{"text":302,"config":303},"Visibility & Measurement",{"href":298,"dataGaLocation":189,"dataGaName":304},"Visibility and Measurement",{"text":306,"config":307},"Value Stream Management",{"href":308,"dataGaLocation":189,"dataGaName":306},"/solutions/value-stream-management/",{"text":310,"config":311},"Analytics & Insights",{"href":312,"dataGaLocation":189,"dataGaName":313},"/solutions/analytics-and-insights/","Analytics and insights",{"title":315,"type":240,"items":316},"GitLab for",[317,323,329],{"text":318,"config":319},"Enterprise",{"icon":320,"href":321,"dataGaLocation":189,"dataGaName":322},"Building","/enterprise/","enterprise",{"text":324,"config":325},"Small Business",{"icon":326,"href":327,"dataGaLocation":189,"dataGaName":328},"Work","/small-business/","small business",{"text":330,"config":331},"Public Sector",{"icon":332,"href":333,"dataGaLocation":189,"dataGaName":334},"Organization","/solutions/public-sector/","public sector",{"text":336,"config":337},"Pricing",{"href":338,"dataGaName":339,"dataGaLocation":189,"dataNavLevelOne":339},"/pricing/","pricing",{"text":341,"config":342,"menu":344},"Resources",{"dataNavLevelOne":343},"resources",{"type":240,"link":345,"columns":349,"feature":443},{"text":346,"config":347},"View all resources",{"href":348,"dataGaName":343,"dataGaLocation":189},"/resources/",[350,383,410],{"title":351,"items":352},"Getting started",[353,358,363,368,373,378],{"text":354,"config":355},"Install",{"href":356,"dataGaName":357,"dataGaLocation":189},"/install/","install",{"text":359,"config":360},"Quick start guides",{"href":361,"dataGaName":362,"dataGaLocation":189},"/get-started/","quick setup checklists",{"text":364,"config":365},"Learn",{"href":366,"dataGaLocation":189,"dataGaName":367},"https://university.gitlab.com/","learn",{"text":369,"config":370},"Product documentation",{"href":371,"dataGaName":372,"dataGaLocation":189},"https://docs.gitlab.com/","product documentation",{"text":374,"config":375},"Best practice videos",{"href":376,"dataGaName":377,"dataGaLocation":189},"/getting-started-videos/","best practice videos",{"text":379,"config":380},"Integrations",{"href":381,"dataGaName":382,"dataGaLocation":189},"/integrations/","integrations",{"title":384,"items":385},"Discover",[386,391,396,401,405],{"text":387,"config":388},"Customer success stories",{"href":389,"dataGaName":390,"dataGaLocation":189},"/customers/","customer success stories",{"text":392,"config":393},"Blog",{"href":394,"dataGaName":395,"dataGaLocation":189},"/blog/","blog",{"text":397,"config":398},"Demo Hub",{"href":399,"dataGaName":400,"dataGaLocation":189},"/demo-hub/","demo hub",{"text":402,"config":403},"The Source",{"href":404,"dataGaName":395,"dataGaLocation":189},"/the-source/",{"text":406,"config":407},"Remote",{"href":408,"dataGaName":409,"dataGaLocation":189},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":411,"items":412},"Connect",[413,418,423,428,433,438],{"text":414,"config":415},"GitLab Services",{"href":416,"dataGaName":417,"dataGaLocation":189},"/services/","services",{"text":419,"config":420},"Contribute",{"href":421,"dataGaName":422,"dataGaLocation":189},"https://contributors.gitlab.com","contribute",{"text":424,"config":425},"Community",{"href":426,"dataGaName":427,"dataGaLocation":189},"/community/","community",{"text":429,"config":430},"Forum",{"href":431,"dataGaName":432,"dataGaLocation":189},"https://forum.gitlab.com/","forum",{"text":434,"config":435},"Events",{"href":436,"dataGaName":437,"dataGaLocation":189},"/events/","events",{"text":439,"config":440},"Partners",{"href":441,"dataGaName":442,"dataGaLocation":189},"/partners/","partners",{"config":444,"title":447,"text":448,"link":449},{"background":445,"textColor":446},"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":450,"config":451},"Read the latest",{"href":452,"dataGaName":453,"dataGaLocation":189},"/whats-new/","whats new",{"text":455,"config":456,"menu":458},"Company",{"dataNavLevelOne":457},"company",{"type":240,"columns":459},[460],{"items":461},[462,467,473,475,480,485,490,495,500,505],{"text":463,"config":464},"About",{"href":465,"dataGaName":466,"dataGaLocation":189},"/company/","about",{"text":468,"config":469,"footerGa":472},"Jobs",{"href":470,"dataGaName":471,"dataGaLocation":189},"/jobs/","jobs",{"dataGaName":471},{"text":434,"config":474},{"href":436,"dataGaName":437,"dataGaLocation":189},{"text":476,"config":477},"Leadership",{"href":478,"dataGaName":479,"dataGaLocation":189},"/company/team/e-group/","leadership",{"text":481,"config":482},"Handbook",{"href":483,"dataGaName":484,"dataGaLocation":189},"https://handbook.gitlab.com/","handbook",{"text":486,"config":487},"Investor relations",{"href":488,"dataGaName":489,"dataGaLocation":189},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":491,"config":492},"Trust Center",{"href":493,"dataGaName":494,"dataGaLocation":189},"/security/","trust center",{"text":496,"config":497},"AI Transparency Center",{"href":498,"dataGaName":499,"dataGaLocation":189},"/ai-transparency-center/","ai transparency center",{"text":501,"config":502},"Newsletter",{"href":503,"dataGaName":504,"dataGaLocation":189},"/company/contact/#contact-forms","newsletter",{"text":506,"config":507},"Press",{"href":508,"dataGaName":509,"dataGaLocation":189},"/press/","press",{"text":511,"config":512,"menu":513},"Contact us",{"dataNavLevelOne":457},{"type":240,"columns":514},[515],{"items":516},[517,522,527],{"text":518,"config":519},"Talk to sales",{"href":520,"dataGaName":521,"dataGaLocation":189},"/sales/","talk to sales",{"text":523,"config":524},"Support portal",{"href":525,"dataGaName":526,"dataGaLocation":189},"https://support.gitlab.com/hc/en-us","support portal",{"text":528,"config":529},"Customer portal",{"href":530,"dataGaName":531,"dataGaLocation":189},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":533,"login":534,"suggestions":541},"Close",{"text":535,"link":536},"To search repositories and projects, login to",{"text":537,"config":538},"gitlab.com",{"href":203,"dataGaName":539,"dataGaLocation":540},"search login","search",{"text":542,"default":543},"Suggestions",[544,546,550,552,556,560],{"text":220,"config":545},{"href":225,"dataGaName":220,"dataGaLocation":540},{"text":547,"config":548},"Code Suggestions (AI)",{"href":549,"dataGaName":547,"dataGaLocation":540},"/solutions/code-suggestions/",{"text":256,"config":551},{"href":258,"dataGaName":256,"dataGaLocation":540},{"text":553,"config":554},"GitLab on AWS",{"href":555,"dataGaName":553,"dataGaLocation":540},"/partners/technology-partners/aws/",{"text":557,"config":558},"GitLab on Google Cloud",{"href":559,"dataGaName":557,"dataGaLocation":540},"/partners/technology-partners/google-cloud-platform/",{"text":561,"config":562},"Why GitLab?",{"href":233,"dataGaName":561,"dataGaLocation":540},{"freeTrial":564,"mobileIcon":569,"desktopIcon":574,"secondaryButton":577},{"text":565,"config":566},"Start free trial",{"href":567,"dataGaName":194,"dataGaLocation":568},"https://gitlab.com/-/trials/new/","nav",{"altText":570,"config":571},"Gitlab Icon",{"src":572,"dataGaName":573,"dataGaLocation":568},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":570,"config":575},{"src":576,"dataGaName":573,"dataGaLocation":568},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":578,"config":579},"Get Started",{"href":580,"dataGaName":581,"dataGaLocation":568},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":583,"mobileIcon":587,"desktopIcon":589},{"text":584,"config":585},"Learn more about GitLab Duo",{"href":225,"dataGaName":586,"dataGaLocation":568},"gitlab duo",{"altText":570,"config":588},{"src":572,"dataGaName":573,"dataGaLocation":568},{"altText":570,"config":590},{"src":576,"dataGaName":573,"dataGaLocation":568},{"button":592,"mobileIcon":597,"desktopIcon":599},{"text":593,"config":594},"/switch",{"href":595,"dataGaName":596,"dataGaLocation":568},"#contact","switch",{"altText":570,"config":598},{"src":572,"dataGaName":573,"dataGaLocation":568},{"altText":570,"config":600},{"src":601,"dataGaName":573,"dataGaLocation":568},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":603,"mobileIcon":608,"desktopIcon":610},{"text":604,"config":605},"Back to pricing",{"href":338,"dataGaName":606,"dataGaLocation":568,"icon":607},"back to pricing","GoBack",{"altText":570,"config":609},{"src":572,"dataGaName":573,"dataGaLocation":568},{"altText":570,"config":611},{"src":576,"dataGaName":573,"dataGaLocation":568},{"title":613,"titleMobile":614,"button":615,"config":620},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":231,"config":616},{"href":617,"dataGaName":618,"dataGaLocation":619},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":621,"disabled":165},"release",{"data":623},{"text":624,"source":625,"edit":631,"contribute":636,"config":641,"items":646,"minimal":856},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":626,"config":627},"View page source",{"href":628,"dataGaName":629,"dataGaLocation":630},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":632,"config":633},"Edit this page",{"href":634,"dataGaName":635,"dataGaLocation":630},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":637,"config":638},"Please contribute",{"href":639,"dataGaName":640,"dataGaLocation":630},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":642,"facebook":643,"youtube":644,"linkedin":645},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[647,694,748,792,824],{"title":336,"links":648,"subMenu":663},[649,653,658],{"text":650,"config":651},"View plans",{"href":338,"dataGaName":652,"dataGaLocation":630},"view plans",{"text":654,"config":655},"Why Premium?",{"href":656,"dataGaName":657,"dataGaLocation":630},"/pricing/premium/","why premium",{"text":659,"config":660},"Why Ultimate?",{"href":661,"dataGaName":662,"dataGaLocation":630},"/pricing/ultimate/","why ultimate",[664],{"title":665,"links":666},"Contact Us",[667,670,672,674,679,684,689],{"text":668,"config":669},"Contact sales",{"href":520,"dataGaName":199,"dataGaLocation":630},{"text":523,"config":671},{"href":525,"dataGaName":526,"dataGaLocation":630},{"text":528,"config":673},{"href":530,"dataGaName":531,"dataGaLocation":630},{"text":675,"config":676},"Status",{"href":677,"dataGaName":678,"dataGaLocation":630},"https://status.gitlab.com/","status",{"text":680,"config":681},"Terms of use",{"href":682,"dataGaName":683,"dataGaLocation":630},"/terms/","terms of use",{"text":685,"config":686},"Privacy statement",{"href":687,"dataGaName":688,"dataGaLocation":630},"/privacy/","privacy statement",{"text":690,"config":691},"Cookie preferences",{"dataGaName":692,"dataGaLocation":630,"id":693,"isOneTrustButton":168},"cookie preferences","ot-sdk-btn",{"title":236,"links":695,"subMenu":704},[696,700],{"text":697,"config":698},"DevSecOps platform",{"href":218,"dataGaName":699,"dataGaLocation":630},"devsecops platform",{"text":701,"config":702},"AI-Assisted Development",{"href":225,"dataGaName":703,"dataGaLocation":630},"ai-assisted development",[705],{"title":706,"links":707},"Topics",[708,713,718,723,728,733,738,743],{"text":709,"config":710},"CICD",{"href":711,"dataGaName":712,"dataGaLocation":630},"/topics/ci-cd/","cicd",{"text":714,"config":715},"GitOps",{"href":716,"dataGaName":717,"dataGaLocation":630},"/topics/gitops/","gitops",{"text":719,"config":720},"DevOps",{"href":721,"dataGaName":722,"dataGaLocation":630},"/topics/devops/","devops",{"text":724,"config":725},"Version Control",{"href":726,"dataGaName":727,"dataGaLocation":630},"/topics/version-control/","version control",{"text":729,"config":730},"DevSecOps",{"href":731,"dataGaName":732,"dataGaLocation":630},"/topics/devsecops/","devsecops",{"text":734,"config":735},"Cloud Native",{"href":736,"dataGaName":737,"dataGaLocation":630},"/topics/cloud-native/","cloud native",{"text":739,"config":740},"AI for Coding",{"href":741,"dataGaName":742,"dataGaLocation":630},"/topics/devops/ai-for-coding/","ai for coding",{"text":744,"config":745},"Agentic AI",{"href":746,"dataGaName":747,"dataGaLocation":630},"/topics/agentic-ai/","agentic ai",{"title":749,"links":750},"Solutions",[751,753,755,760,764,767,771,774,776,779,782,787],{"text":280,"config":752},{"href":275,"dataGaName":280,"dataGaLocation":630},{"text":269,"config":754},{"href":252,"dataGaName":253,"dataGaLocation":630},{"text":756,"config":757},"Agile development",{"href":758,"dataGaName":759,"dataGaLocation":630},"/solutions/agile-delivery/","agile delivery",{"text":761,"config":762},"SCM",{"href":265,"dataGaName":763,"dataGaLocation":630},"source code management",{"text":709,"config":765},{"href":258,"dataGaName":766,"dataGaLocation":630},"continuous integration & delivery",{"text":768,"config":769},"Value stream management",{"href":308,"dataGaName":770,"dataGaLocation":630},"value stream management",{"text":714,"config":772},{"href":773,"dataGaName":717,"dataGaLocation":630},"/solutions/gitops/",{"text":318,"config":775},{"href":321,"dataGaName":322,"dataGaLocation":630},{"text":777,"config":778},"Small business",{"href":327,"dataGaName":328,"dataGaLocation":630},{"text":780,"config":781},"Public sector",{"href":333,"dataGaName":334,"dataGaLocation":630},{"text":783,"config":784},"Education",{"href":785,"dataGaName":786,"dataGaLocation":630},"/solutions/education/","education",{"text":788,"config":789},"Financial services",{"href":790,"dataGaName":791,"dataGaLocation":630},"/solutions/finance/","financial services",{"title":341,"links":793},[794,796,798,800,803,805,808,810,812,814,816,818,820,822],{"text":354,"config":795},{"href":356,"dataGaName":357,"dataGaLocation":630},{"text":359,"config":797},{"href":361,"dataGaName":362,"dataGaLocation":630},{"text":364,"config":799},{"href":366,"dataGaName":367,"dataGaLocation":630},{"text":369,"config":801},{"href":371,"dataGaName":802,"dataGaLocation":630},"docs",{"text":392,"config":804},{"href":394,"dataGaName":395,"dataGaLocation":630},{"text":806,"config":807},"What's new",{"href":452,"dataGaName":453,"dataGaLocation":630},{"text":387,"config":809},{"href":389,"dataGaName":390,"dataGaLocation":630},{"text":406,"config":811},{"href":408,"dataGaName":409,"dataGaLocation":630},{"text":414,"config":813},{"href":416,"dataGaName":417,"dataGaLocation":630},{"text":419,"config":815},{"href":421,"dataGaName":422,"dataGaLocation":630},{"text":424,"config":817},{"href":426,"dataGaName":427,"dataGaLocation":630},{"text":429,"config":819},{"href":431,"dataGaName":432,"dataGaLocation":630},{"text":434,"config":821},{"href":436,"dataGaName":437,"dataGaLocation":630},{"text":439,"config":823},{"href":441,"dataGaName":442,"dataGaLocation":630},{"title":455,"links":825},[826,828,830,832,834,836,840,845,847,849,851],{"text":463,"config":827},{"href":465,"dataGaName":457,"dataGaLocation":630},{"text":468,"config":829},{"href":470,"dataGaName":471,"dataGaLocation":630},{"text":476,"config":831},{"href":478,"dataGaName":479,"dataGaLocation":630},{"text":481,"config":833},{"href":483,"dataGaName":484,"dataGaLocation":630},{"text":486,"config":835},{"href":488,"dataGaName":489,"dataGaLocation":630},{"text":837,"config":838},"Sustainability",{"href":839,"dataGaName":837,"dataGaLocation":630},"/sustainability/",{"text":841,"config":842},"Diversity, inclusion and belonging (DIB)",{"href":843,"dataGaName":844,"dataGaLocation":630},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":491,"config":846},{"href":493,"dataGaName":494,"dataGaLocation":630},{"text":501,"config":848},{"href":503,"dataGaName":504,"dataGaLocation":630},{"text":506,"config":850},{"href":508,"dataGaName":509,"dataGaLocation":630},{"text":852,"config":853},"Modern Slavery Transparency Statement",{"href":854,"dataGaName":855,"dataGaLocation":630},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":857},[858,861,864],{"text":859,"config":860},"Terms",{"href":682,"dataGaName":683,"dataGaLocation":630},{"text":862,"config":863},"Cookies",{"dataGaName":692,"dataGaLocation":630,"id":693,"isOneTrustButton":168},{"text":865,"config":866},"Privacy",{"href":687,"dataGaName":688,"dataGaLocation":630},[868],{"id":869,"title":7,"body":164,"config":870,"content":872,"description":164,"extension":875,"meta":876,"navigation":168,"path":877,"seo":878,"stem":879,"__hash__":880},"blogAuthors/en-us/blog/authors/jacob-schatz.yml",{"template":871},"BlogAuthor",{"name":7,"config":873},{"headshot":153,"ctfId":874},"jschatz1","yml",{},"/en-us/blog/authors/jacob-schatz",{},"en-us/blog/authors/jacob-schatz","5Ni1pJap-3Oy_IR41XlYvyewBFNZN8dZyOWznuyUvoM",[882,891,899],{"title":883,"description":884,"heroImage":885,"category":160,"date":886,"authors":887,"slug":890,"externalUrl":164},"Confidential AI for GitLab Self-Hosted","Give developers AI coding agents in GitLab Duo without source code leaving a hardware-encrypted boundary — no GPUs needed.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1773866173/vte9qh8rriznvyclhkes.png","2026-08-06",[888,889],"Mathias Ewald","Martin Paloncy, Edgeless Systems","confidential-ai-for-gitlab-self-hosted",{"title":892,"description":893,"heroImage":894,"category":160,"date":895,"authors":896,"slug":898,"externalUrl":164},"Green DevOps: Why carbon measurement belongs in your CI/CD pipeline","CI/CD pipelines have a hidden carbon cost. Here's why measuring it matters, and how you can get started with Eco CI and Carmen in GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-09",[897],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":900,"description":901,"heroImage":902,"category":160,"date":903,"authors":904,"slug":906,"externalUrl":164},"How to build CI/CD observability at scale","This practical guide to GitLab pipeline analytics helps self-managed users gain operational insights using Prometheus and Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-04-28",[905],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"promotions":908},[909,923,935,947],{"id":910,"categories":911,"header":913,"text":914,"button":915,"image":920},"ai-modernization",[912],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":916,"config":917},"Get your AI maturity score",{"href":918,"dataGaName":919,"dataGaLocation":395},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":921},{"src":922},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":924,"categories":925,"header":927,"text":914,"button":928,"image":932},"devops-modernization",[926,732],"product","Are you just managing tools or shipping innovation?",{"text":929,"config":930},"Get your DevOps maturity score",{"href":931,"dataGaName":919,"dataGaLocation":395},"/assessments/devops-modernization-assessment/",{"config":933},{"src":934},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":936,"categories":937,"header":939,"text":914,"button":940,"image":944},"security-modernization",[938],"security","Are you trading speed for security?",{"text":941,"config":942},"Get your security maturity score",{"href":943,"dataGaName":919,"dataGaLocation":395},"/assessments/security-modernization-assessment/",{"config":945},{"src":946},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":948,"paths":949,"header":952,"text":953,"button":954,"image":959},"github-azure-migration",[950,951],"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":955,"config":956},"See how GitLab compares to GitHub",{"href":957,"dataGaName":958,"dataGaLocation":395},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":960},{"src":934},{"header":962,"blurb":963,"button":964,"secondaryButton":969},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":965,"config":966},"Get your free trial",{"href":967,"dataGaName":194,"dataGaLocation":968},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":668,"config":970},{"href":520,"dataGaName":199,"dataGaLocation":968},1786803773051]