[{"data":1,"prerenderedAt":1071},["ShallowReactive",2],{"/blog/designing-alerts-and-incidents":3,"navigation-en-us":287,"banner-en-us":715,"footer-en-us":725,"blog-post-authors-en-us-Amelia Bauerly":968,"blog-related-posts-en-us-designing-alerts-and-incidents":983,"blog-promotions-en-us":1007,"next-steps-en-us":1061},{"id":4,"title":5,"authors":6,"body":8,"category":265,"date":266,"description":267,"extension":268,"externalUrl":269,"faq":269,"featured":270,"heroImage":271,"meta":272,"navigation":273,"path":274,"seo":275,"slug":279,"stem":280,"tags":281,"template":285,"updatedDate":269,"__hash__":286},"blogPosts/en-us/blog/designing-alerts-and-incidents.md","Designing an incident management workflow from scratch and where its used",[7],"Amelia Bauerly",{"type":9,"value":10,"toc":256},"minimark",[11,15,18,34,39,42,50,65,69,78,86,93,96,99,102,106,109,118,121,130,133,136,143,145,154,158,161,170,173,176,179,182,185,191,193,200,203,207,210,217,226,239,242],[12,13,14],"p",{},"Many companies stitch together multiple tools to handle alerts and incidents, which can be time-consuming and frustrating. Why should teams have to use so many tools for what is, essentially, a single workflow?",[12,16,17],{},"We hear you, and we think we’ve come up with some great new features to help alleviate this problem.",[12,19,20,21,27,28,33],{},"At GitLab, the Monitor team has been busily working behind the scenes to improve our offerings for ",[22,23,26],"a",{"href":24,"rel":25},"https://docs.gitlab.com/releases/#manage-it-alerts-in-gitlab",[],"Alerts"," and ",[22,29,32],{"href":30,"rel":31},"https://docs.gitlab.com/releases/#create-and-manage-it-incidents-in-gitlab",[],"Incident Management",".",[35,36,38],"h2",{"id":37},"whats-changed","What’s changed?",[12,40,41],{},"You can now send alerts from your monitoring tools straight to GitLab, where they will be displayed for you and your team to review. If an alert is serious enough, you can escalate that alert to an incident, a newly defined type of issue crafted specifically for this purpose. Once the incident is created, you can push the fixes immediately: all within a single tool.",[12,43,44,45,49],{},"We’re incredibly proud of what we’re creating but, how did we get here? How did we take what was a blank space and turn it into something that people could use? Dare I say, might even ",[46,47,48],"em",{},"want"," to use?",[12,51,52,53,58,59,64],{},"The short answer: by working through GitLab’s ",[22,54,57],{"href":55,"rel":56},"https://handbook.gitlab.com/handbook/product-development/how-we-work/product-development-flow/",[],"Product Development Flow",", by leaning on our value of ",[22,60,63],{"href":61,"rel":62},"https://handbook.gitlab.com/handbook/values/#iteration",[],"iteration",", and collaborating closely with the people who use GitLab every day.",[35,66,68],{"id":67},"validating-the-problem","Validating the problem",[12,70,71,72,77],{},"The first thing we needed to do was to ensure we understood what people were struggling with, in their current workflow, with their current tools. We call this ",[22,73,76],{"href":74,"rel":75},"https://handbook.gitlab.com/handbook/product-development/how-we-work/product-development-flow/#validation-phase-2-problem-validation",[],"Problem Validation",", and it means asking the following question before getting started with any work: Do we clearly understand the problem(s) end-users have?",[12,79,80,81,85],{},"As part of the problem validation process, we reached out to Developers, SREs, and ",[22,82,84],{"href":83},"/topics/devops/","DevOps"," engineers. We wanted to better understand what tools they were using, what their current workflows were, and if there were any gaps in their workflows that we could fill within GitLab.",[12,87,88,89,92],{},"Through our research, we discovered something that was both a serious pain point  ",[46,90,91],{},"and","  an opportunity for us at GitLab. Unsurprisingly, it turns out that many Developers are currently stitching together a multitude of tools for monitoring their applications, for creating and sending alerts, and for investigating and resolving the issues that are reported.",[12,94,95],{},"Stitching together all of these tools can work, but it’s messy for teams to manage. The context switching that’s required is difficult, and it means having to keep track of different pieces of information in multiple places. We heard, again and again, how burdensome and fatiguing this can be. What people need, instead, is an intentionally designed workflow for triaging alerts and responding to incidents.",[12,97,98],{},"Luckily for us, GitLab already had many pieces of this workflow in place, in that Developers can currently raise issues, create merge requests, and deploy their code within our product. The opportunity, and what we were missing, was a place to review and triage alerts.",[12,100,101],{},"If we could introduce a single location where all alerts (from multiple tools) can be received, reviewed, resolved, or escalated into incidents, we could create a seamless incident management workflow within GitLab: from the alert being received to the incident being created, all the way through to the code fix being deployed.",[35,103,105],{"id":104},"validating-the-solution","Validating the solution",[12,107,108],{},"With the desired workflow pinned down, we started ideating on designs for triaging and managing alerts. After creating some initial concepts, we wanted to validate them to make sure we were actually solving the problems we had identified.",[12,110,111,112,117],{},"Following our Product Development Flow for ",[22,113,116],{"href":114,"rel":115},"https://handbook.gitlab.com/handbook/product-development/how-we-work/product-development-flow/#validation-phase-4-solution-validation",[],"solution validation",", we wanted to share our designs with the teams we thought would most benefit from using the features we designed.",[12,119,120],{},"To enable us to more quickly connect with the people who would be using our features, we decided to create a Special Interest Group (SIG). We went this route because we wanted to work more collaboratively with a well-defined group of people over a period of time. We felt that this could help us to understand their needs better, and it would mean we could check in with them more often, and on a more regular basis.",[12,122,123,124,129],{},"The SIG is composed of GitLab customers who are involved with responding to alerts and incidents within their organizations. To recruit this group, we sent out a survey to our ",[22,125,128],{"href":126,"rel":127},"https://about.gitlab.com/community/",[],"First Look"," members. When we had a short list of people who fit our criteria, we scheduled introductory meetings to learn more about them, find out how they worked, and explain a bit more about the SIG. After ensuring they were on board with our experiment, we invited them to join our SIG.",[12,131,132],{},"As we generated designs – first for an alert list, then for an alert detail page – we shared these designs with the SIG members during live, individual feedback sessions. During these sessions, we asked them to take a short usability test where we gave them an imagined scenario and asked them to complete a task. We also asked them for their feedback more generally, to understand if what we were proposing would help improve their current workflow.",[12,134,135],{},"We met with the SIG monthly over a period of several months. Each time they reviewed our designs, we revised them. The feature set we ultimately arrived at owes a great deal to their feedback and their commitment to improving GitLab as a product.",[12,137,138],{},[139,140],"img",{"alt":141,"src":142},"Alert list in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782397877/blog/Content%20Images/Alert-list-page.png",[12,144,141],{},[12,146,147,148,153],{},"After validating our proposals with the SIG members we broke our designs down into what we call a ",[22,149,152],{"href":150,"rel":151},"https://handbook.gitlab.com/handbook/product/product-principles/#the-minimal-viable-change-mvc",[],"Minimal Viable Change"," (MVC) that, over the course of several months, our engineering team built into GitLab: starting with the alert list, and then adding in the alert detail page. Additional functionality, such as the ability to change the status of an alert from within GitLab, was built on top of those two base elements.",[35,155,157],{"id":156},"introducing-dedicated-incidents","Introducing dedicated incidents",[12,159,160],{},"Many alerts that are sent are not necessarily things that teams need to worry about. Maybe they are expected issues, or maybe they aren't things that need to be immediately addressed. But, what happens when an alert is serious enough to require additional investigation? What happens when the alert needs to become an incident?",[12,162,163,164,169],{},"For the ",[22,165,168],{"href":166,"rel":167},"https://handbook.gitlab.com/handbook/product/ux/product-designer/#refine-mvc",[],"MVC"," version of alert management, alerts would be received and, if they were serious enough, the alert could be escalated to a GitLab issue.",[12,171,172],{},"We used our existing issue framework for incidents because it was an easy way for us to complete the larger workflow. From a GitLab issue, people can create an MR to fix whatever is causing the alert in the first place. Then they can push the code that will publish the fix. So, by using issues, we were able to approximate a full incident management workflow: from alert receipt to live code.",[12,174,175],{},"However, in testing the alerting functionality we had built with our SIG, we learned that there were still many gaps in the experience of investigating and resolving incidents that issues couldn’t really help us fix.",[12,177,178],{},"For example, within incidents, you likely need quick access to various metrics or runbooks. Maybe you also need an incident timeline. There are hacky ways of making GitLab issues work for these purposes, but we wondered, \"Is there a way that we can better surface the information needed for quickly resolving incidents within issues?\"",[12,180,181],{},"These sorts of discussions ultimately resulted in us introducing dedicated incidents in GitLab. Incidents are a special kind of issue where the content displayed is updated to better fit the needs of people actively involved in investigating and resolving incidents.",[12,183,184],{},"In designing incidents, we removed items from our existing issues that were less relevant, replacing them with content that better fits the incident workflow. In both cases, we used feedback from customers to make decisions about what to include – and what to exclude. Our goal was to make sure that only the most relevant information is visible, so that incidents can be resolved as quickly and efficiently as possible.",[12,186,187],{},[139,188],{"alt":189,"src":190},"An example dedicated incident in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782398142/blog/Content%20Images/dedicated-incident.png",[12,192,189],{},[12,194,195,196],{},"Creating a dedicated type of issue for incidents hasn’t been a quick process! By relying on our iteration value, we’ve been slowly transforming the GitLab issue into an incident over the course of many months. Now, incidents are finally taking shape, and we are at the point where people have started using them as part of their workflows. ",[197,198,199],"strong",{},"We’ve seen an increase in usage of 4,200%!",[12,201,202],{},"This is a huge step for incident management at GitLab, and we’re delighted to see how people will use incidents at their organizations.",[35,204,206],{"id":205},"up-next-on-call-management","Up next: On-call Management",[12,208,209],{},"The final piece of incident management is on-call management: How does your team know that incidents are happening and need to be addressed?",[12,211,212,213,216],{},"To tackle this next batch of work, we’re going back to our Product Development Flow’s ",[22,214,76],{"href":74,"rel":215},[]," step. We’re talking to people to ensure we understand their needs. Then we’ll start to think about designs for on-call schedules, escalation policies, and paging. We intend to build and release these features early next year.",[12,218,219,220,225],{},"Once these features are introduced, we will have enabled the end-to-end workflow for ",[22,221,224],{"href":222,"rel":223},"https://about.gitlab.com/blog/incident-management-with-gitlab/",[],"incident management within GitLab",", from triggered alerts through post-incident review. After that point, we’ll investigate how people are experiencing the features we’ve built and how we can further improve them.",[12,227,228,229,234,235,238],{},"We look forward to hearing your feedback, so we can continue to make incident management in GitLab even better. What do you want to see us build next? Leave a comment on the ",[22,230,233],{"href":231,"rel":232},"https://gitlab.com/gitlab-org/gitlab/-/issues/271410",[],"issue"," if you have any suggestions. Additionally, if you'd like to participate in our customer feedback sessions, consider joining our ",[22,236,128],{"href":126,"rel":237},[]," panel. We'd love for you to join us!",[12,240,241],{},"Cover image credit:",[12,243,244,245,250,251],{},"Cover image by ",[22,246,249],{"href":247,"rel":248},"https://unsplash.com/@kellysikkema?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Kelly Sikkema"," on ",[22,252,255],{"href":253,"rel":254},"https://unsplash.com",[],"Unsplash",{"title":257,"searchDepth":258,"depth":258,"links":259},"",2,[260,261,262,263,264],{"id":37,"depth":258,"text":38},{"id":67,"depth":258,"text":68},{"id":104,"depth":258,"text":105},{"id":156,"depth":258,"text":157},{"id":205,"depth":258,"text":206},"unfiltered","2020-11-03","See here how to create a single workflow for triaging alerts and resolving incidents using GitLab's Product Development Flow","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670750/Blog/Hero%20Images/designing-incidents-alerts.jpg",{},true,"/en-us/blog/designing-alerts-and-incidents",{"title":5,"description":267,"ogTitle":5,"ogDescription":267,"noIndex":270,"ogImage":271,"ogUrl":276,"ogSiteName":277,"ogType":278,"canonicalUrls":276},"https://about.gitlab.com/blog/designing-alerts-and-incidents","https://about.gitlab.com","article","designing-alerts-and-incidents","en-us/blog/designing-alerts-and-incidents",[282,283,284],"UX","design","inside GitLab","BlogPost","3vtsUvmpEw1EU_Cwt6R2k6coz5gN4LXapNP0H-K0EDM",{"logo":288,"freeTrial":293,"sales":298,"login":303,"items":308,"search":635,"minimal":666,"duo":685,"switchNav":694,"pricingDeployment":705},{"config":289},{"href":290,"dataGaName":291,"dataGaLocation":292},"/","gitlab logo","header",{"text":294,"config":295},"Get free trial",{"href":296,"dataGaName":297,"dataGaLocation":292},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":299,"config":300},"Request a demo",{"href":301,"dataGaName":302,"dataGaLocation":292},"/sales/?contact-topic=request-demo","sales",{"text":304,"config":305},"Sign in",{"href":306,"dataGaName":307,"dataGaLocation":292},"https://gitlab.com/users/sign_in/","sign in",[309,338,438,443,557,613],{"text":310,"config":311,"menu":313},"Platform",{"dataNavLevelOne":312},"platform",{"type":314,"columns":315},"cards",[316,322,330],{"title":310,"description":317,"link":318},"The intelligent orchestration platform for DevSecOps",{"text":319,"config":320},"Explore our Platform",{"href":321,"dataGaName":312,"dataGaLocation":292},"/platform/",{"title":323,"description":324,"link":325},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":326,"config":327},"Meet GitLab Duo",{"href":328,"dataGaName":329,"dataGaLocation":292},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":331,"description":332,"link":333},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":334,"config":335},"Learn more",{"href":336,"dataGaName":337,"dataGaLocation":292},"/why-gitlab/","why gitlab",{"text":339,"left":273,"config":340,"menu":342},"Product",{"dataNavLevelOne":341},"solutions",{"type":343,"link":344,"columns":348,"feature":417},"lists",{"text":345,"config":346},"View all Solutions",{"href":347,"dataGaName":341,"dataGaLocation":292},"/solutions/",[349,373,396],{"title":350,"description":351,"link":352,"items":357},"Automation","CI/CD and automation to accelerate deployment",{"config":353},{"icon":354,"href":355,"dataGaName":356,"dataGaLocation":292},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[358,362,365,369],{"text":359,"config":360},"CI/CD",{"href":361,"dataGaLocation":292,"dataGaName":359},"/solutions/continuous-integration/",{"text":323,"config":363},{"href":328,"dataGaLocation":292,"dataGaName":364},"gitlab duo agent platform - product menu",{"text":366,"config":367},"Source Code Management",{"href":368,"dataGaLocation":292,"dataGaName":366},"/solutions/source-code-management/",{"text":370,"config":371},"Automated Software Delivery",{"href":355,"dataGaLocation":292,"dataGaName":372},"Automated software delivery",{"title":374,"description":375,"link":376,"items":381},"Security","Deliver code faster without compromising security",{"config":377},{"href":378,"dataGaName":379,"dataGaLocation":292,"icon":380},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[382,386,391],{"text":383,"config":384},"Application Security Testing",{"href":378,"dataGaName":385,"dataGaLocation":292},"Application security testing",{"text":387,"config":388},"Software Supply Chain Security",{"href":389,"dataGaLocation":292,"dataGaName":390},"/solutions/supply-chain/","Software supply chain security",{"text":392,"config":393},"Software Compliance",{"href":394,"dataGaName":395,"dataGaLocation":292},"/solutions/software-compliance/","software compliance",{"title":397,"link":398,"items":403},"Measurement",{"config":399},{"icon":400,"href":401,"dataGaName":402,"dataGaLocation":292},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[404,408,412],{"text":405,"config":406},"Visibility & Measurement",{"href":401,"dataGaLocation":292,"dataGaName":407},"Visibility and Measurement",{"text":409,"config":410},"Value Stream Management",{"href":411,"dataGaLocation":292,"dataGaName":409},"/solutions/value-stream-management/",{"text":413,"config":414},"Analytics & Insights",{"href":415,"dataGaLocation":292,"dataGaName":416},"/solutions/analytics-and-insights/","Analytics and insights",{"title":418,"type":343,"items":419},"GitLab for",[420,426,432],{"text":421,"config":422},"Enterprise",{"icon":423,"href":424,"dataGaLocation":292,"dataGaName":425},"Building","/enterprise/","enterprise",{"text":427,"config":428},"Small Business",{"icon":429,"href":430,"dataGaLocation":292,"dataGaName":431},"Work","/small-business/","small business",{"text":433,"config":434},"Public Sector",{"icon":435,"href":436,"dataGaLocation":292,"dataGaName":437},"Organization","/solutions/public-sector/","public sector",{"text":439,"config":440},"Pricing",{"href":441,"dataGaName":442,"dataGaLocation":292,"dataNavLevelOne":442},"/pricing/","pricing",{"text":444,"config":445,"menu":447},"Resources",{"dataNavLevelOne":446},"resources",{"type":343,"link":448,"columns":452,"feature":546},{"text":449,"config":450},"View all resources",{"href":451,"dataGaName":446,"dataGaLocation":292},"/resources/",[453,486,513],{"title":454,"items":455},"Getting started",[456,461,466,471,476,481],{"text":457,"config":458},"Install",{"href":459,"dataGaName":460,"dataGaLocation":292},"/install/","install",{"text":462,"config":463},"Quick start guides",{"href":464,"dataGaName":465,"dataGaLocation":292},"/get-started/","quick setup checklists",{"text":467,"config":468},"Learn",{"href":469,"dataGaLocation":292,"dataGaName":470},"https://university.gitlab.com/","learn",{"text":472,"config":473},"Product documentation",{"href":474,"dataGaName":475,"dataGaLocation":292},"https://docs.gitlab.com/","product documentation",{"text":477,"config":478},"Best practice videos",{"href":479,"dataGaName":480,"dataGaLocation":292},"/getting-started-videos/","best practice videos",{"text":482,"config":483},"Integrations",{"href":484,"dataGaName":485,"dataGaLocation":292},"/integrations/","integrations",{"title":487,"items":488},"Discover",[489,494,499,504,508],{"text":490,"config":491},"Customer success stories",{"href":492,"dataGaName":493,"dataGaLocation":292},"/customers/","customer success stories",{"text":495,"config":496},"Blog",{"href":497,"dataGaName":498,"dataGaLocation":292},"/blog/","blog",{"text":500,"config":501},"Demo Hub",{"href":502,"dataGaName":503,"dataGaLocation":292},"/demo-hub/","demo hub",{"text":505,"config":506},"The Source",{"href":507,"dataGaName":498,"dataGaLocation":292},"/the-source/",{"text":509,"config":510},"Remote",{"href":511,"dataGaName":512,"dataGaLocation":292},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":514,"items":515},"Connect",[516,521,526,531,536,541],{"text":517,"config":518},"GitLab Services",{"href":519,"dataGaName":520,"dataGaLocation":292},"/services/","services",{"text":522,"config":523},"Contribute",{"href":524,"dataGaName":525,"dataGaLocation":292},"https://contributors.gitlab.com","contribute",{"text":527,"config":528},"Community",{"href":529,"dataGaName":530,"dataGaLocation":292},"/community/","community",{"text":532,"config":533},"Forum",{"href":534,"dataGaName":535,"dataGaLocation":292},"https://forum.gitlab.com/","forum",{"text":537,"config":538},"Events",{"href":539,"dataGaName":540,"dataGaLocation":292},"/events/","events",{"text":542,"config":543},"Partners",{"href":544,"dataGaName":545,"dataGaLocation":292},"/partners/","partners",{"config":547,"title":550,"text":551,"link":552},{"background":548,"textColor":549},"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":553,"config":554},"Read the latest",{"href":555,"dataGaName":556,"dataGaLocation":292},"/whats-new/","whats new",{"text":558,"config":559,"menu":561},"Company",{"dataNavLevelOne":560},"company",{"type":343,"columns":562},[563],{"items":564},[565,570,576,578,583,588,593,598,603,608],{"text":566,"config":567},"About",{"href":568,"dataGaName":569,"dataGaLocation":292},"/company/","about",{"text":571,"config":572,"footerGa":575},"Jobs",{"href":573,"dataGaName":574,"dataGaLocation":292},"/jobs/","jobs",{"dataGaName":574},{"text":537,"config":577},{"href":539,"dataGaName":540,"dataGaLocation":292},{"text":579,"config":580},"Leadership",{"href":581,"dataGaName":582,"dataGaLocation":292},"/company/team/e-group/","leadership",{"text":584,"config":585},"Handbook",{"href":586,"dataGaName":587,"dataGaLocation":292},"https://handbook.gitlab.com/","handbook",{"text":589,"config":590},"Investor relations",{"href":591,"dataGaName":592,"dataGaLocation":292},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":594,"config":595},"Trust Center",{"href":596,"dataGaName":597,"dataGaLocation":292},"/security/","trust center",{"text":599,"config":600},"AI Transparency Center",{"href":601,"dataGaName":602,"dataGaLocation":292},"/ai-transparency-center/","ai transparency center",{"text":604,"config":605},"Newsletter",{"href":606,"dataGaName":607,"dataGaLocation":292},"/company/contact/#contact-forms","newsletter",{"text":609,"config":610},"Press",{"href":611,"dataGaName":612,"dataGaLocation":292},"/press/","press",{"text":614,"config":615,"menu":616},"Contact us",{"dataNavLevelOne":560},{"type":343,"columns":617},[618],{"items":619},[620,625,630],{"text":621,"config":622},"Talk to sales",{"href":623,"dataGaName":624,"dataGaLocation":292},"/sales/","talk to sales",{"text":626,"config":627},"Support portal",{"href":628,"dataGaName":629,"dataGaLocation":292},"https://support.gitlab.com/hc/en-us","support portal",{"text":631,"config":632},"Customer portal",{"href":633,"dataGaName":634,"dataGaLocation":292},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":636,"login":637,"suggestions":644},"Close",{"text":638,"link":639},"To search repositories and projects, login to",{"text":640,"config":641},"gitlab.com",{"href":306,"dataGaName":642,"dataGaLocation":643},"search login","search",{"text":645,"default":646},"Suggestions",[647,649,653,655,659,663],{"text":323,"config":648},{"href":328,"dataGaName":323,"dataGaLocation":643},{"text":650,"config":651},"Code Suggestions (AI)",{"href":652,"dataGaName":650,"dataGaLocation":643},"/solutions/code-suggestions/",{"text":359,"config":654},{"href":361,"dataGaName":359,"dataGaLocation":643},{"text":656,"config":657},"GitLab on AWS",{"href":658,"dataGaName":656,"dataGaLocation":643},"/partners/technology-partners/aws/",{"text":660,"config":661},"GitLab on Google Cloud",{"href":662,"dataGaName":660,"dataGaLocation":643},"/partners/technology-partners/google-cloud-platform/",{"text":664,"config":665},"Why GitLab?",{"href":336,"dataGaName":664,"dataGaLocation":643},{"freeTrial":667,"mobileIcon":672,"desktopIcon":677,"secondaryButton":680},{"text":668,"config":669},"Start free trial",{"href":670,"dataGaName":297,"dataGaLocation":671},"https://gitlab.com/-/trials/new/","nav",{"altText":673,"config":674},"Gitlab Icon",{"src":675,"dataGaName":676,"dataGaLocation":671},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":673,"config":678},{"src":679,"dataGaName":676,"dataGaLocation":671},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":681,"config":682},"Get Started",{"href":683,"dataGaName":684,"dataGaLocation":671},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":686,"mobileIcon":690,"desktopIcon":692},{"text":687,"config":688},"Learn more about GitLab Duo",{"href":328,"dataGaName":689,"dataGaLocation":671},"gitlab duo",{"altText":673,"config":691},{"src":675,"dataGaName":676,"dataGaLocation":671},{"altText":673,"config":693},{"src":679,"dataGaName":676,"dataGaLocation":671},{"button":695,"mobileIcon":700,"desktopIcon":702},{"text":696,"config":697},"/switch",{"href":698,"dataGaName":699,"dataGaLocation":671},"#contact","switch",{"altText":673,"config":701},{"src":675,"dataGaName":676,"dataGaLocation":671},{"altText":673,"config":703},{"src":704,"dataGaName":676,"dataGaLocation":671},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":706,"mobileIcon":711,"desktopIcon":713},{"text":707,"config":708},"Back to pricing",{"href":441,"dataGaName":709,"dataGaLocation":671,"icon":710},"back to pricing","GoBack",{"altText":673,"config":712},{"src":675,"dataGaName":676,"dataGaLocation":671},{"altText":673,"config":714},{"src":679,"dataGaName":676,"dataGaLocation":671},{"title":716,"titleMobile":717,"button":718,"config":723},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":334,"config":719},{"href":720,"dataGaName":721,"dataGaLocation":722},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":724,"disabled":270},"release",{"data":726},{"text":727,"source":728,"edit":734,"contribute":739,"config":744,"items":749,"minimal":957},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":729,"config":730},"View page source",{"href":731,"dataGaName":732,"dataGaLocation":733},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":735,"config":736},"Edit this page",{"href":737,"dataGaName":738,"dataGaLocation":733},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":740,"config":741},"Please contribute",{"href":742,"dataGaName":743,"dataGaLocation":733},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":745,"facebook":746,"youtube":747,"linkedin":748},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[750,797,849,893,925],{"title":439,"links":751,"subMenu":766},[752,756,761],{"text":753,"config":754},"View plans",{"href":441,"dataGaName":755,"dataGaLocation":733},"view plans",{"text":757,"config":758},"Why Premium?",{"href":759,"dataGaName":760,"dataGaLocation":733},"/pricing/premium/","why premium",{"text":762,"config":763},"Why Ultimate?",{"href":764,"dataGaName":765,"dataGaLocation":733},"/pricing/ultimate/","why ultimate",[767],{"title":768,"links":769},"Contact Us",[770,773,775,777,782,787,792],{"text":771,"config":772},"Contact sales",{"href":623,"dataGaName":302,"dataGaLocation":733},{"text":626,"config":774},{"href":628,"dataGaName":629,"dataGaLocation":733},{"text":631,"config":776},{"href":633,"dataGaName":634,"dataGaLocation":733},{"text":778,"config":779},"Status",{"href":780,"dataGaName":781,"dataGaLocation":733},"https://status.gitlab.com/","status",{"text":783,"config":784},"Terms of use",{"href":785,"dataGaName":786,"dataGaLocation":733},"/terms/","terms of use",{"text":788,"config":789},"Privacy statement",{"href":790,"dataGaName":791,"dataGaLocation":733},"/privacy/","privacy statement",{"text":793,"config":794},"Cookie preferences",{"dataGaName":795,"dataGaLocation":733,"id":796,"isOneTrustButton":273},"cookie preferences","ot-sdk-btn",{"title":339,"links":798,"subMenu":807},[799,803],{"text":800,"config":801},"DevSecOps platform",{"href":321,"dataGaName":802,"dataGaLocation":733},"devsecops platform",{"text":804,"config":805},"AI-Assisted Development",{"href":328,"dataGaName":806,"dataGaLocation":733},"ai-assisted development",[808],{"title":809,"links":810},"Topics",[811,816,821,824,829,834,839,844],{"text":812,"config":813},"CICD",{"href":814,"dataGaName":815,"dataGaLocation":733},"/topics/ci-cd/","cicd",{"text":817,"config":818},"GitOps",{"href":819,"dataGaName":820,"dataGaLocation":733},"/topics/gitops/","gitops",{"text":84,"config":822},{"href":83,"dataGaName":823,"dataGaLocation":733},"devops",{"text":825,"config":826},"Version Control",{"href":827,"dataGaName":828,"dataGaLocation":733},"/topics/version-control/","version control",{"text":830,"config":831},"DevSecOps",{"href":832,"dataGaName":833,"dataGaLocation":733},"/topics/devsecops/","devsecops",{"text":835,"config":836},"Cloud Native",{"href":837,"dataGaName":838,"dataGaLocation":733},"/topics/cloud-native/","cloud native",{"text":840,"config":841},"AI for Coding",{"href":842,"dataGaName":843,"dataGaLocation":733},"/topics/devops/ai-for-coding/","ai for coding",{"text":845,"config":846},"Agentic AI",{"href":847,"dataGaName":848,"dataGaLocation":733},"/topics/agentic-ai/","agentic ai",{"title":850,"links":851},"Solutions",[852,854,856,861,865,868,872,875,877,880,883,888],{"text":383,"config":853},{"href":378,"dataGaName":383,"dataGaLocation":733},{"text":372,"config":855},{"href":355,"dataGaName":356,"dataGaLocation":733},{"text":857,"config":858},"Agile development",{"href":859,"dataGaName":860,"dataGaLocation":733},"/solutions/agile-delivery/","agile delivery",{"text":862,"config":863},"SCM",{"href":368,"dataGaName":864,"dataGaLocation":733},"source code management",{"text":812,"config":866},{"href":361,"dataGaName":867,"dataGaLocation":733},"continuous integration & delivery",{"text":869,"config":870},"Value stream management",{"href":411,"dataGaName":871,"dataGaLocation":733},"value stream management",{"text":817,"config":873},{"href":874,"dataGaName":820,"dataGaLocation":733},"/solutions/gitops/",{"text":421,"config":876},{"href":424,"dataGaName":425,"dataGaLocation":733},{"text":878,"config":879},"Small business",{"href":430,"dataGaName":431,"dataGaLocation":733},{"text":881,"config":882},"Public sector",{"href":436,"dataGaName":437,"dataGaLocation":733},{"text":884,"config":885},"Education",{"href":886,"dataGaName":887,"dataGaLocation":733},"/solutions/education/","education",{"text":889,"config":890},"Financial services",{"href":891,"dataGaName":892,"dataGaLocation":733},"/solutions/finance/","financial services",{"title":444,"links":894},[895,897,899,901,904,906,909,911,913,915,917,919,921,923],{"text":457,"config":896},{"href":459,"dataGaName":460,"dataGaLocation":733},{"text":462,"config":898},{"href":464,"dataGaName":465,"dataGaLocation":733},{"text":467,"config":900},{"href":469,"dataGaName":470,"dataGaLocation":733},{"text":472,"config":902},{"href":474,"dataGaName":903,"dataGaLocation":733},"docs",{"text":495,"config":905},{"href":497,"dataGaName":498,"dataGaLocation":733},{"text":907,"config":908},"What's new",{"href":555,"dataGaName":556,"dataGaLocation":733},{"text":490,"config":910},{"href":492,"dataGaName":493,"dataGaLocation":733},{"text":509,"config":912},{"href":511,"dataGaName":512,"dataGaLocation":733},{"text":517,"config":914},{"href":519,"dataGaName":520,"dataGaLocation":733},{"text":522,"config":916},{"href":524,"dataGaName":525,"dataGaLocation":733},{"text":527,"config":918},{"href":529,"dataGaName":530,"dataGaLocation":733},{"text":532,"config":920},{"href":534,"dataGaName":535,"dataGaLocation":733},{"text":537,"config":922},{"href":539,"dataGaName":540,"dataGaLocation":733},{"text":542,"config":924},{"href":544,"dataGaName":545,"dataGaLocation":733},{"title":558,"links":926},[927,929,931,933,935,937,941,946,948,950,952],{"text":566,"config":928},{"href":568,"dataGaName":560,"dataGaLocation":733},{"text":571,"config":930},{"href":573,"dataGaName":574,"dataGaLocation":733},{"text":579,"config":932},{"href":581,"dataGaName":582,"dataGaLocation":733},{"text":584,"config":934},{"href":586,"dataGaName":587,"dataGaLocation":733},{"text":589,"config":936},{"href":591,"dataGaName":592,"dataGaLocation":733},{"text":938,"config":939},"Sustainability",{"href":940,"dataGaName":938,"dataGaLocation":733},"/sustainability/",{"text":942,"config":943},"Diversity, inclusion and belonging (DIB)",{"href":944,"dataGaName":945,"dataGaLocation":733},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":594,"config":947},{"href":596,"dataGaName":597,"dataGaLocation":733},{"text":604,"config":949},{"href":606,"dataGaName":607,"dataGaLocation":733},{"text":609,"config":951},{"href":611,"dataGaName":612,"dataGaLocation":733},{"text":953,"config":954},"Modern Slavery Transparency Statement",{"href":955,"dataGaName":956,"dataGaLocation":733},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":958},[959,962,965],{"text":960,"config":961},"Terms",{"href":785,"dataGaName":786,"dataGaLocation":733},{"text":963,"config":964},"Cookies",{"dataGaName":795,"dataGaLocation":733,"id":796,"isOneTrustButton":273},{"text":966,"config":967},"Privacy",{"href":790,"dataGaName":791,"dataGaLocation":733},[969],{"id":970,"title":7,"body":269,"config":971,"content":973,"description":269,"extension":977,"meta":978,"navigation":273,"path":979,"seo":980,"stem":981,"__hash__":982},"blogAuthors/en-us/blog/authors/amelia-bauerly.yml",{"template":972},"BlogAuthor",{"name":7,"config":974},{"headshot":975,"ctfId":976},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749670746/Blog/Author%20Headshots/ameliabauerly-headshot.jpg","ameliabauerly","yml",{},"/en-us/blog/authors/amelia-bauerly",{},"en-us/blog/authors/amelia-bauerly","012PDTuDOcCF2peoHgBfxsbr-Hr-7M-iOffRGPUxb6M",[984,992,1000],{"title":985,"description":986,"heroImage":987,"category":265,"date":988,"authors":989,"slug":991,"externalUrl":269},"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",[990],"Jacie Bandur","ceo-shadow-recap",{"title":993,"description":994,"heroImage":995,"category":265,"date":996,"authors":997,"slug":999,"externalUrl":269},"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",[998],"Austin Regnery","why-i-love-contributing-to-gitlab",{"title":1001,"description":1002,"heroImage":1003,"category":265,"date":996,"authors":1004,"slug":1006,"externalUrl":269},"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",[1005],"Sam Beckham","placebo-lines-on-the-pipeline-graph",{"promotions":1008},[1009,1023,1035,1047],{"id":1010,"categories":1011,"header":1013,"text":1014,"button":1015,"image":1020},"ai-modernization",[1012],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1016,"config":1017},"Get your AI maturity score",{"href":1018,"dataGaName":1019,"dataGaLocation":498},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1021},{"src":1022},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1024,"categories":1025,"header":1027,"text":1014,"button":1028,"image":1032},"devops-modernization",[1026,833],"product","Are you just managing tools or shipping innovation?",{"text":1029,"config":1030},"Get your DevOps maturity score",{"href":1031,"dataGaName":1019,"dataGaLocation":498},"/assessments/devops-modernization-assessment/",{"config":1033},{"src":1034},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1036,"categories":1037,"header":1039,"text":1014,"button":1040,"image":1044},"security-modernization",[1038],"security","Are you trading speed for security?",{"text":1041,"config":1042},"Get your security maturity score",{"href":1043,"dataGaName":1019,"dataGaLocation":498},"/assessments/security-modernization-assessment/",{"config":1045},{"src":1046},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1048,"paths":1049,"header":1052,"text":1053,"button":1054,"image":1059},"github-azure-migration",[1050,1051],"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":1055,"config":1056},"See how GitLab compares to GitHub",{"href":1057,"dataGaName":1058,"dataGaLocation":498},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1060},{"src":1034},{"header":1062,"blurb":1063,"button":1064,"secondaryButton":1069},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1065,"config":1066},"Get your free trial",{"href":1067,"dataGaName":297,"dataGaLocation":1068},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":771,"config":1070},{"href":623,"dataGaName":302,"dataGaLocation":1068},1786803766135]