[{"data":1,"prerenderedAt":971},["ShallowReactive",2],{"/blog/managing-global-projects-requiring-rapid-response-continuously":3,"navigation-en-us":184,"banner-en-us":612,"footer-en-us":622,"blog-post-authors-en-us-Chris Baus":867,"blog-related-posts-en-us-managing-global-projects-requiring-rapid-response-continuously":881,"blog-promotions-en-us":907,"next-steps-en-us":961},{"id":4,"title":5,"authors":6,"body":8,"category":161,"date":162,"description":163,"extension":164,"externalUrl":165,"faq":165,"featured":166,"heroImage":167,"meta":168,"navigation":169,"path":170,"seo":171,"slug":175,"stem":176,"tags":177,"template":182,"updatedDate":165,"__hash__":183},"blogPosts/en-us/blog/managing-global-projects-requiring-rapid-response-continuously.md","How to leverage distributed engineering teams for rapid response",[7],"Chris Baus",{"type":9,"value":10,"toc":152},"minimark",[11,39,44,53,68,71,75,84,87,91,94,97,101,104,113,128,132,135,142],[12,13,14,15,21,22,27,28,32,33,38],"p",{},"I am an ",[16,17,20],"a",{"href":18,"rel":19},"https://gitlab.com/chris_baus",[],"Engineering Manager"," working on a distributed engineering team at GitLab. Our team is distributed globally, and we have engineers working in India, Germany, Australia, New Zealand, and the United States. I am ",[16,23,26],{"href":24,"rel":25},"https://www.google.com/maps/place/Stateline,+NV/",[],"located"," in the U.S. in Pacific Standard Time (PST). In coordination with other globally distributed engineering teams, we recently responded to an ",[16,29,31],{"href":30},"/blog/prevent-crypto-mining-abuse/","abuse issue"," which was causing disruptions for legitimate GitLab.com users, and required a ",[16,34,37],{"href":35,"rel":36},"https://handbook.gitlab.com/handbook/engineering/workflow/#rapid-engineering-response",[],"rapid response",".",[40,41,43],"h2",{"id":42},"global-distribution-as-an-advantage","Global distribution as an advantage",[12,45,46,47,52],{},"Many managers view global team distribution as a constraint (because synchronous communication becomes more difficult), but it is possible to ",[16,48,51],{"href":49,"rel":50},"https://basecamp.com/gettingreal/03.4-embrace-constraints",[],"embrace the constraint"," and turn it into an advantage. When teams are globally distributed it is possible for work to continue around-the-clock, uninterrupted, and decrease the overall delivery time of projects. I refer to this as \"continuous development.\"",[12,54,55,56,61,62,67],{},"While we don't typically work this way, when problems are pressing, working continuously can be a strategy to advance the delivery time frame. In this case, two engineers from our team worked on the problem ",[16,57,60],{"href":58,"rel":59},"https://www.google.com/maps/place/Bellingham,+WA/",[],"17"," ",[16,63,66],{"href":64,"rel":65},"https://www.google.com/maps/place/Melbourne+VIC,+Australia/",[],"hours"," apart. This provided some overlap in the afternoon (PST), but for the most part, the engineers were working on the project at different times which allowed work to progress continuously.",[12,69,70],{},"It requires some extra management compared to the typical workflow, but the effort may be worth the investment if time is critical.",[40,72,74],{"id":73},"define-clear-handoffs","Define clear handoffs",[12,76,77,78,83],{},"One risk of multiple engineers working continuously and ",[16,79,82],{"href":80,"rel":81},"https://baus.net/embrace-asynchronous-work/",[],"asynchronously"," is duplicating work from lack of clear separation of work or handoffs. If possible, it is best to separate work, so engineers are working in different areas of code, but separating work might not always be feasible or practical. In either case, when an engineer finishes working for the day, they should provide an update describing the work which was completed, any problems impeding progress, and what is left to be done.",[12,85,86],{},"If engineers are working in the same area of code, it should be clearly defined if they are working in the same branch or separate branches. If they are working in the same branch, it might make sense for one engineer to maintain branch and accept merges from other engineers before it merged into the main development branch.",[40,88,90],{"id":89},"agree-on-interfaces","Agree on interfaces",[12,92,93],{},"When distributed engineering teams are working on a project, it is critical to define clear and documented interfaces between systems and components. System interfaces should be documented in a centrally maintained location. If there is a need to change the interface, then everyone affected by the change should be notified.",[12,95,96],{},"In retrospect, we lost nearly a day of testing because of confusion about an interface between the frontend and backend of the system. These types of problems tend to be amplified when not all engineers involved in the project are available at the same time, as it may take an entire 24-hour cycle to handle and communicate changes. When a discrepancy is found, the problem should be documented by the engineers currently working and, if possible, a solution proposed.",[40,98,100],{"id":99},"place-synchronous-communication-on-management","Place synchronous communication on management",[12,102,103],{},"When working concurrently, to help ensure all teams are on the same path, it can be helpful to discuss the project status synchronously. This can be difficult to arrange with distributed engineering teams. On this project, the technical teams met twice weekly for 15-30 minutes. It can be tempting to require team members to work off hours to attend synchronous meetings. I'd recommend fighting this tendency.",[12,105,106,107,112],{},"It's the responsibility of a manager to ensure effective communication across teams. During rapid-response actions, it's helpful to keep flexible working hours to synchronize with team members across different time zones. I accept working outside my typical hours (knowing I can ",[16,108,111],{"href":109,"rel":110},"https://handbook.gitlab.com/handbook/company/culture/all-remote/non-linear-workday/",[],"adjust my hours"," at other times of the day), to communicate the status of my team synchronously. This also requires the manager to have a more detailed technical understanding of the implementation and status than is normally required, so they can speak on behalf of offline team members.",[12,114,115,116,121,122,127],{},"Instead of requiring synchronous meeting attendance, ",[16,117,120],{"href":118,"rel":119},"https://handbook.gitlab.com/handbook/company/culture/all-remote/meetings/#document-everything-live-yes-everything",[],"take good notes"," and ",[16,123,126],{"href":124,"rel":125},"https://www.youtube.com/channel/UCMtZ0sc1HHNtGGWZFDRTh5A",[],"record the meeting"," so team members in other time zones can review the status and decisions from synchronous meetings.",[40,129,131],{"id":130},"trade-offs","Trade-offs",[12,133,134],{},"In many ways, engineering is the art of balancing trade-offs. Operating in a continuous, globally-distributed fashion takes more management and cognitive overhead than typical asynchronous workflows, but when time is a priority, it could decrease the release time on critical projects.",[12,136,137,138,141],{},"Operating continuously may come at cost of other management tasks as compressing time increases the effort required to oversee the project requiring a ",[16,139,37],{"href":35,"rel":140},[],". At the end of the rapid-response issue, a retrospective should be held to determine if the engineering strategy provided the expected results, relative to the increased overhead. My recommendation is to be realistic about costs when planning continuous development even when it provides short-term results.",[12,143,144],{},[145,146,147,148,38],"em",{},"Read more on ",[16,149,151],{"href":150},"/blog/cadence-is-everything-10x-engineering-organizations-for-10x-engineers/","leading engineering teams",{"title":153,"searchDepth":154,"depth":154,"links":155},"",2,[156,157,158,159,160],{"id":42,"depth":154,"text":43},{"id":73,"depth":154,"text":74},{"id":89,"depth":154,"text":90},{"id":99,"depth":154,"text":100},{"id":130,"depth":154,"text":131},"engineering","2021-06-04","Rapid response issues can be handled in a compressed time frame if distributed engineering teams can work continuously. Here's what we've learned.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681331/Blog/Hero%20Images/all-remote-world-banner-1920x1080.png",{},true,"/en-us/blog/managing-global-projects-requiring-rapid-response-continuously",{"title":5,"description":163,"ogTitle":5,"ogDescription":163,"noIndex":166,"ogImage":167,"ogUrl":172,"ogSiteName":173,"ogType":174,"canonicalUrls":172},"https://about.gitlab.com/blog/managing-global-projects-requiring-rapid-response-continuously","https://about.gitlab.com","article","managing-global-projects-requiring-rapid-response-continuously","en-us/blog/managing-global-projects-requiring-rapid-response-continuously",[178,179,180,181],"remote work","inside GitLab","agile","collaboration","BlogPost","fo1Fx-2OlwUCL_Gqc0ppNe07LMQs2tVgV6VmphZnGuc",{"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":169,"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":166},"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":169},"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":169},{"text":865,"config":866},"Privacy",{"href":687,"dataGaName":688,"dataGaLocation":630},[868],{"id":869,"title":7,"body":165,"config":870,"content":872,"description":165,"extension":875,"meta":876,"navigation":169,"path":877,"seo":878,"stem":879,"__hash__":880},"blogAuthors/en-us/blog/authors/chris-baus.yml",{"template":871},"BlogAuthor",{"name":7,"config":873},{"headshot":153,"ctfId":874},"chrisbaus","yml",{},"/en-us/blog/authors/chris-baus",{},"en-us/blog/authors/chris-baus","a1SmGtDnhcIjF0xwAVDQw7Wh9_uoOssflVj4DXm9HdY",[882,891,899],{"title":883,"description":884,"heroImage":885,"category":161,"date":886,"authors":887,"slug":890,"externalUrl":165},"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":161,"date":895,"authors":896,"slug":898,"externalUrl":165},"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":161,"date":903,"authors":904,"slug":906,"externalUrl":165},"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},1786803736122]