[{"data":1,"prerenderedAt":821},["ShallowReactive",2],{"/en-us/topics/ci-cd/continuous-integration-best-practices/":3,"navigation-en-us":171,"banner-en-us":581,"footer-en-us":594,"next-steps-en-us":806},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"_id":165,"_type":166,"title":7,"_source":167,"_file":168,"_stem":169,"_extension":170},"/en-us/topics/ci-cd/continuous-integration-best-practices","ci-cd",false,"",{"title":9,"ogTitle":9,"description":10,"ogDescription":10,"config":6},"Continuous integration best practices","Learn how to optimize your workflow with these continuous integration best practices.",[12,25,31,111,163],{"type":13,"componentName":13,"componentContent":14},"CommonBreadcrumbs",{"crumbs":15},[16,20,24],{"title":17,"config":18},"Topics",{"href":19},"/topics/",{"title":21,"config":22},"CI/CD",{"href":23},"/topics/ci-cd/",{"title":9},{"type":26,"componentName":26,"componentContent":27},"TopicsHero",{"title":9,"text":28,"config":29},"[Continuous integration (CI)](/topics/ci-cd/) helps dev teams be more productive and improve overall code quality. However, implementing CI is just one step to achieving faster deployments. To get the most out of your CI system, it’s important to incorporate best practices for continuous integration into your workflow.\n",{"id":30,"twoColumns":6},"continuous-integration-best-practices",{"type":32,"componentName":32,"componentContent":33},"CommonSideNavigationWithTree",{"anchors":34,"components":69},{"text":35,"data":36},"On this page",[37,41,45,49,53,57,61,65],{"text":38,"config":39},"CI best practice: Commit early, commit often",{"href":40},"#ci-best-practice-commit-early-commit-often",{"text":42,"config":43},"CI best practice: Read the documentation (and then read it again)",{"href":44},"#ci-best-practice-read-the-documentation-and-then-read-it-again",{"text":46,"config":47},"CI best practice: Optimize pipeline stages",{"href":48},"#ci-best-practice-optimize-pipeline-stages",{"text":50,"config":51},"CI best practice: Make builds fast and simple",{"href":52},"#ci-best-practice-make-builds-fast-and-simple",{"text":54,"config":55},"CI best practice: Use failures to improve processes",{"href":56},"#ci-best-practice-use-failures-to-improve-processes",{"text":58,"config":59},"CI best practice: Test environment should mirror production",{"href":60},"#ci-best-practice-test-environment-should-mirror-production",{"text":62,"config":63},"Learn about best practices with GitLab CI",{"href":64},"#learn-about-best-practices-with-git-lab-ci",{"text":66,"config":67},"Conclusion",{"href":68},"#conclusion",[70,76,81,86,91,96,101,106],{"type":71,"componentName":71,"componentContent":72},"TopicsCopy",{"header":38,"text":73,"config":74},"It’s much easier to fix small problems than big problems, as a general rule. One of the biggest advantages of continuous integration is that code is integrated into a shared repository against other changes happening at the same time. If a development team commits code changes early and often, bugs are easier to identify because there is less code to sort through.\n\nBy testing in small batches, code quality is improved and teams can iterate more effectively.\n",{"id":75},"ci-best-practice-commit-early-commit-often",{"type":71,"componentName":71,"componentContent":77},{"header":42,"text":78,"config":79},"Continuous integration systems make documentation widely available, and this documentation can be very helpful long after you’ve implemented CI into your workflow. At GitLab, we have thorough [CI/CD documentation](https://docs.gitlab.com/ee/ci/) that is updated frequently to reflect the latest processes.\n\nIn can be helpful to reference the documentation in READMEs or in other accessible formats. Encourage team members to read the documentation first, bookmark links, create FAQs, and incorporate these resources into onboarding for new team members.\n",{"id":80},"ci-best-practice-read-the-documentation-and-then-read-it-again",{"type":71,"componentName":71,"componentContent":82},{"header":46,"text":83,"config":84},"[CI pipelines](https://about.gitlab.com/topics/ci-cd/cicd-pipeline/) contain jobs and stages: Jobs are the activities that happen within a particular stage, and once all jobs pass, code moves to the next stage. To get the most out of your CI pipelines, optimize stages so that failures are easy to identify and fix.\n\nStages are an easy way to organize similar jobs, but there may be a few jobs in your pipeline that could safely run in an earlier stage without negatively impacting your project if they fail. Consider running these jobs in an earlier stage to [speed up CI pipelines](https://about.gitlab.com/blog/2019/07/12/guide-to-ci-cd-pipelines/).\n",{"id":85},"ci-best-practice-optimize-pipeline-stages",{"type":71,"componentName":71,"componentContent":87},{"header":50,"text":88,"config":89},"Nothing slows down a pipeline like complexity. Focus on keeping builds fast, and the best way to do that is by keeping things as simple as possible.\n\nEvery minute taken off build times is a minute saved for each developer every time they commit. Since CI demands frequent commits, this time can add up. Martin Fowler discusses a guideline of the [ten-minute build](https://martinfowler.com/articles/continuousIntegration.html) that most modern projects can achieve. Since continuous integration demands frequent commits, saving time on commit builds can give developers a lot of time back.\n",{"id":90},"ci-best-practice-make-builds-fast-and-simple",{"type":71,"componentName":71,"componentContent":92},{"header":54,"text":93,"config":94},"Improvement is a process. When teams change their [response to failures](https://opensource.com/article/20/5/cicd-best-practices), it creates a cultural shift for continuous improvement. Instead of asking ***who*** caused the failure, ask ***what*** caused the failure. This means shifting from a blaming culture to a learning culture.\n\nIf teams are doing frequent commits, it becomes much easier to identify problems and solve them. If there are patterns in failed builds, look at the underlying causes. Are there non-code errors that are causing builds unnecessarily? Maybe incorporate an `allow_failure` [parameter](https://docs.gitlab.com/ee/ci/yaml/#keywords). Look for ways to continually improve, make failures blameless, and look for causes (not culprits).\n",{"id":95},"ci-best-practice-use-failures-to-improve-processes",{"type":71,"componentName":71,"componentContent":97},{"header":58,"text":98,"config":99},"In continuous integration, every commit triggers a build. These builds then run tests to identify if something will be broken by the code changes you introduce. The [test pyramid](https://martinfowler.com/bliki/TestPyramid.html) is a way for developers to think of how to balance testing. [End-to end testing](https://docs.gitlab.com/ee/ci/examples/end_to_end_testing_webdriverio/#what-to-test) is mostly used as a safeguard, with unit testing being used most often to identify errors. One important thing to keep in mind with testing is the environment. When the testing and production environments match, it means that developers can rely on the results and deploy with confidence.\n\nIn GitLab, [Review Apps](https://docs.gitlab.com/ee/ci/review_apps/index.html) put the new code into a production-like live environment to visualize code changes. This feature helps developers assess the impact of changes.\n\nContinuous integration helps developers deploy faster and get feedback sooner. Ultimately, the best continuous integration system is the one you actually use. Find [the right CI](https://about.gitlab.com/topics/ci-cd/choose-continuous-integration-tool/) for your needs and then incorporate these best practices to make the most of your new CI workflow.\n",{"id":100},"ci-best-practice-test-environment-should-mirror-production",{"type":71,"componentName":71,"componentContent":102},{"header":62,"text":103,"config":104},"\u003Ciframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/jeCF-dUFaZY\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen>\u003C/iframe>\n",{"id":105},"learn-about-best-practices-with-git-lab-ci",{"type":71,"componentName":71,"componentContent":107},{"header":66,"text":108,"config":109},"By embracing the outlined best practices, software development teams, including platform engineering teams and DevOps teams, can enhance their continuous integration efforts, ultimately streamlining their development and deployment process. As these practices become more embedded in your development environment, the alignment between engineering team goals and operational execution sharpens.\n\nRemember, the strongest continuous integration system is not just about the tools, but about how effectively your team utilizes them to foster improvements and achieve rapid, reliable results.\n",{"id":110},"conclusion",{"type":112,"componentName":112,"componentContent":113},"CommonResourcesContainer",{"header":114,"tabs":115},"Suggested Content",[116],{"name":117,"items":118,"config":162},"resources",[119,129,137,146,154],{"header":120,"type":121,"image":122,"link":125},"Burndown and burnup charts","Article",{"altText":120,"config":123},{"src":124},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749158619/Website/Topics/resources_18.jpg",{"text":126,"config":127},"Learn more",{"href":128,"icon":121,"modal":6},"https://docs.gitlab.com/ee/user/project/milestones/burndown_and_burnup_charts.html",{"header":130,"type":121,"image":131,"link":134},"Milestones as Agile sprints",{"altText":130,"config":132},{"src":133},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749158268/Website/Topics/resources_5.jpg",{"text":126,"config":135},{"href":136,"icon":121,"modal":6},"https://docs.gitlab.com/ee/user/project/milestones/#milestones-as-agile-sprints",{"header":138,"type":139,"image":140,"link":143},"How to use GitLab for Agile software development","Web",{"altText":138,"config":141},{"src":142},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749158430/Website/Topics/alteryx_case_study.jpg",{"text":126,"config":144},{"href":145,"icon":139,"modal":6},"https://about.gitlab.com/blog/2018/03/05/gitlab-for-agile-software-development/",{"header":147,"type":139,"image":148,"link":151},"How to use GitLab for Agile, CI/CD, GitOps, and more",{"altText":147,"config":149},{"src":150},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749159329/Website/Topics/conversicaimage.jpg",{"text":126,"config":152},{"href":153,"icon":139,"modal":6},"https://about.gitlab.com/blog/2020/12/17/gitlab-for-cicd-agile-gitops-cloudnative/",{"header":155,"type":139,"image":156,"link":159},"How to use GitLab for Agile portfolio planning and project management",{"altText":155,"config":157},{"src":158},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749158681/Website/Topics/agilemultipleteams.jpg",{"text":126,"config":160},{"href":161,"icon":139,"modal":6},"https://about.gitlab.com/blog/2020/11/11/gitlab-for-agile-portfolio-planning-project-management/",{"key":117},{"type":164,"componentName":164},"CommonNextSteps","content:en-us:topics:ci-cd:continuous-integration-best-practices:index.yml","yaml","content","en-us/topics/ci-cd/continuous-integration-best-practices/index.yml","en-us/topics/ci-cd/continuous-integration-best-practices/index","yml",{"_path":172,"_dir":173,"_draft":6,"_partial":6,"_locale":7,"data":174,"_id":577,"_type":166,"title":578,"_source":167,"_file":579,"_stem":580,"_extension":170},"/shared/en-us/main-navigation","en-us",{"logo":175,"freeTrial":180,"sales":185,"login":190,"items":195,"search":523,"minimal":554,"duo":568},{"config":176},{"href":177,"dataGaName":178,"dataGaLocation":179},"/","gitlab logo","header",{"text":181,"config":182},"Get free trial",{"href":183,"dataGaName":184,"dataGaLocation":179},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":186,"config":187},"Talk to sales",{"href":188,"dataGaName":189,"dataGaLocation":179},"/sales/","sales",{"text":191,"config":192},"Sign in",{"href":193,"dataGaName":194,"dataGaLocation":179},"https://gitlab.com/users/sign_in/","sign in",[196,239,334,339,444,504],{"text":197,"config":198,"cards":200,"footer":222},"Platform",{"dataNavLevelOne":199},"platform",[201,207,215],{"title":197,"description":202,"link":203},"The most comprehensive AI-powered DevSecOps Platform",{"text":204,"config":205},"Explore our Platform",{"href":206,"dataGaName":199,"dataGaLocation":179},"/platform/",{"title":208,"description":209,"link":210},"GitLab Duo (AI)","Build software faster with AI at every stage of development",{"text":211,"config":212},"Meet GitLab Duo",{"href":213,"dataGaName":214,"dataGaLocation":179},"/gitlab-duo/","gitlab duo ai",{"title":216,"description":217,"link":218},"Why GitLab","10 reasons why Enterprises choose GitLab",{"text":126,"config":219},{"href":220,"dataGaName":221,"dataGaLocation":179},"/why-gitlab/","why gitlab",{"title":223,"items":224},"Get started with",[225,230,235],{"text":226,"config":227},"Platform Engineering",{"href":228,"dataGaName":229,"dataGaLocation":179},"/solutions/platform-engineering/","platform engineering",{"text":231,"config":232},"Developer Experience",{"href":233,"dataGaName":234,"dataGaLocation":179},"/developer-experience/","Developer experience",{"text":236,"config":237},"MLOps",{"href":238,"dataGaName":236,"dataGaLocation":179},"/topics/devops/the-role-of-ai-in-devops/",{"text":240,"left":241,"config":242,"link":244,"lists":248,"footer":316},"Product",true,{"dataNavLevelOne":243},"solutions",{"text":245,"config":246},"View all Solutions",{"href":247,"dataGaName":243,"dataGaLocation":179},"/solutions/",[249,273,295],{"title":250,"description":251,"link":252,"items":257},"Automation","CI/CD and automation to accelerate deployment",{"config":253},{"icon":254,"href":255,"dataGaName":256,"dataGaLocation":179},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[258,261,265,269],{"text":21,"config":259},{"href":260,"dataGaLocation":179,"dataGaName":21},"/solutions/continuous-integration/",{"text":262,"config":263},"AI-Assisted Development",{"href":213,"dataGaLocation":179,"dataGaName":264},"AI assisted development",{"text":266,"config":267},"Source Code Management",{"href":268,"dataGaLocation":179,"dataGaName":266},"/solutions/source-code-management/",{"text":270,"config":271},"Automated Software Delivery",{"href":255,"dataGaLocation":179,"dataGaName":272},"Automated software delivery",{"title":274,"description":275,"link":276,"items":281},"Security","Deliver code faster without compromising security",{"config":277},{"href":278,"dataGaName":279,"dataGaLocation":179,"icon":280},"/solutions/security-compliance/","security and compliance","ShieldCheckLight",[282,285,290],{"text":283,"config":284},"Security & Compliance",{"href":278,"dataGaLocation":179,"dataGaName":283},{"text":286,"config":287},"Software Supply Chain Security",{"href":288,"dataGaLocation":179,"dataGaName":289},"/solutions/supply-chain/","Software supply chain security",{"text":291,"config":292},"Compliance & Governance",{"href":293,"dataGaLocation":179,"dataGaName":294},"/solutions/continuous-software-compliance/","Compliance and governance",{"title":296,"link":297,"items":302},"Measurement",{"config":298},{"icon":299,"href":300,"dataGaName":301,"dataGaLocation":179},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[303,307,311],{"text":304,"config":305},"Visibility & Measurement",{"href":300,"dataGaLocation":179,"dataGaName":306},"Visibility and Measurement",{"text":308,"config":309},"Value Stream Management",{"href":310,"dataGaLocation":179,"dataGaName":308},"/solutions/value-stream-management/",{"text":312,"config":313},"Analytics & Insights",{"href":314,"dataGaLocation":179,"dataGaName":315},"/solutions/analytics-and-insights/","Analytics and insights",{"title":317,"items":318},"GitLab for",[319,324,329],{"text":320,"config":321},"Enterprise",{"href":322,"dataGaLocation":179,"dataGaName":323},"/enterprise/","enterprise",{"text":325,"config":326},"Small Business",{"href":327,"dataGaLocation":179,"dataGaName":328},"/small-business/","small business",{"text":330,"config":331},"Public Sector",{"href":332,"dataGaLocation":179,"dataGaName":333},"/solutions/public-sector/","public sector",{"text":335,"config":336},"Pricing",{"href":337,"dataGaName":338,"dataGaLocation":179,"dataNavLevelOne":338},"/pricing/","pricing",{"text":340,"config":341,"link":342,"lists":346,"feature":431},"Resources",{"dataNavLevelOne":117},{"text":343,"config":344},"View all resources",{"href":345,"dataGaName":117,"dataGaLocation":179},"/resources/",[347,380,403],{"title":348,"items":349},"Getting started",[350,355,360,365,370,375],{"text":351,"config":352},"Install",{"href":353,"dataGaName":354,"dataGaLocation":179},"/install/","install",{"text":356,"config":357},"Quick start guides",{"href":358,"dataGaName":359,"dataGaLocation":179},"/get-started/","quick setup checklists",{"text":361,"config":362},"Learn",{"href":363,"dataGaLocation":179,"dataGaName":364},"https://university.gitlab.com/","learn",{"text":366,"config":367},"Product documentation",{"href":368,"dataGaName":369,"dataGaLocation":179},"https://docs.gitlab.com/","product documentation",{"text":371,"config":372},"Best practice videos",{"href":373,"dataGaName":374,"dataGaLocation":179},"/getting-started-videos/","best practice videos",{"text":376,"config":377},"Integrations",{"href":378,"dataGaName":379,"dataGaLocation":179},"/integrations/","integrations",{"title":381,"items":382},"Discover",[383,388,393,398],{"text":384,"config":385},"Customer success stories",{"href":386,"dataGaName":387,"dataGaLocation":179},"/customers/","customer success stories",{"text":389,"config":390},"Blog",{"href":391,"dataGaName":392,"dataGaLocation":179},"/blog/","blog",{"text":394,"config":395},"Remote",{"href":396,"dataGaName":397,"dataGaLocation":179},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":399,"config":400},"TeamOps",{"href":401,"dataGaName":402,"dataGaLocation":179},"/teamops/","teamops",{"title":404,"items":405},"Connect",[406,411,416,421,426],{"text":407,"config":408},"GitLab Services",{"href":409,"dataGaName":410,"dataGaLocation":179},"/services/","services",{"text":412,"config":413},"Community",{"href":414,"dataGaName":415,"dataGaLocation":179},"/community/","community",{"text":417,"config":418},"Forum",{"href":419,"dataGaName":420,"dataGaLocation":179},"https://forum.gitlab.com/","forum",{"text":422,"config":423},"Events",{"href":424,"dataGaName":425,"dataGaLocation":179},"/events/","events",{"text":427,"config":428},"Partners",{"href":429,"dataGaName":430,"dataGaLocation":179},"/partners/","partners",{"backgroundColor":432,"textColor":433,"text":434,"image":435,"link":439},"#2f2a6b","#fff","Insights for the future of software development",{"altText":436,"config":437},"the source promo card",{"src":438},"/images/navigation/the-source-promo-card.svg",{"text":440,"config":441},"Read the latest",{"href":442,"dataGaName":443,"dataGaLocation":179},"/the-source/","the source",{"text":445,"config":446,"lists":448},"Company",{"dataNavLevelOne":447},"company",[449],{"items":450},[451,456,462,464,469,474,479,484,489,494,499],{"text":452,"config":453},"About",{"href":454,"dataGaName":455,"dataGaLocation":179},"/company/","about",{"text":457,"config":458,"footerGa":461},"Jobs",{"href":459,"dataGaName":460,"dataGaLocation":179},"/jobs/","jobs",{"dataGaName":460},{"text":422,"config":463},{"href":424,"dataGaName":425,"dataGaLocation":179},{"text":465,"config":466},"Leadership",{"href":467,"dataGaName":468,"dataGaLocation":179},"/company/team/e-group/","leadership",{"text":470,"config":471},"Team",{"href":472,"dataGaName":473,"dataGaLocation":179},"/company/team/","team",{"text":475,"config":476},"Handbook",{"href":477,"dataGaName":478,"dataGaLocation":179},"https://handbook.gitlab.com/","handbook",{"text":480,"config":481},"Investor relations",{"href":482,"dataGaName":483,"dataGaLocation":179},"https://ir.gitlab.com/","investor relations",{"text":485,"config":486},"Trust Center",{"href":487,"dataGaName":488,"dataGaLocation":179},"/security/","trust center",{"text":490,"config":491},"AI Transparency Center",{"href":492,"dataGaName":493,"dataGaLocation":179},"/ai-transparency-center/","ai transparency center",{"text":495,"config":496},"Newsletter",{"href":497,"dataGaName":498,"dataGaLocation":179},"/company/contact/","newsletter",{"text":500,"config":501},"Press",{"href":502,"dataGaName":503,"dataGaLocation":179},"/press/","press",{"text":505,"config":506,"lists":507},"Contact us",{"dataNavLevelOne":447},[508],{"items":509},[510,513,518],{"text":186,"config":511},{"href":188,"dataGaName":512,"dataGaLocation":179},"talk to sales",{"text":514,"config":515},"Get help",{"href":516,"dataGaName":517,"dataGaLocation":179},"/support/","get help",{"text":519,"config":520},"Customer portal",{"href":521,"dataGaName":522,"dataGaLocation":179},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":524,"login":525,"suggestions":532},"Close",{"text":526,"link":527},"To search repositories and projects, login to",{"text":528,"config":529},"gitlab.com",{"href":193,"dataGaName":530,"dataGaLocation":531},"search login","search",{"text":533,"default":534},"Suggestions",[535,537,541,543,547,551],{"text":208,"config":536},{"href":213,"dataGaName":208,"dataGaLocation":531},{"text":538,"config":539},"Code Suggestions (AI)",{"href":540,"dataGaName":538,"dataGaLocation":531},"/solutions/code-suggestions/",{"text":21,"config":542},{"href":260,"dataGaName":21,"dataGaLocation":531},{"text":544,"config":545},"GitLab on AWS",{"href":546,"dataGaName":544,"dataGaLocation":531},"/partners/technology-partners/aws/",{"text":548,"config":549},"GitLab on Google Cloud",{"href":550,"dataGaName":548,"dataGaLocation":531},"/partners/technology-partners/google-cloud-platform/",{"text":552,"config":553},"Why GitLab?",{"href":220,"dataGaName":552,"dataGaLocation":531},{"freeTrial":555,"mobileIcon":560,"desktopIcon":565},{"text":556,"config":557},"Start free trial",{"href":558,"dataGaName":184,"dataGaLocation":559},"https://gitlab.com/-/trials/new/","nav",{"altText":561,"config":562},"Gitlab Icon",{"src":563,"dataGaName":564,"dataGaLocation":559},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":561,"config":566},{"src":567,"dataGaName":564,"dataGaLocation":559},"/images/brand/gitlab-logo-type.svg",{"freeTrial":569,"mobileIcon":573,"desktopIcon":575},{"text":570,"config":571},"Learn more about GitLab Duo",{"href":213,"dataGaName":572,"dataGaLocation":559},"gitlab duo",{"altText":561,"config":574},{"src":563,"dataGaName":564,"dataGaLocation":559},{"altText":561,"config":576},{"src":567,"dataGaName":564,"dataGaLocation":559},"content:shared:en-us:main-navigation.yml","Main Navigation","shared/en-us/main-navigation.yml","shared/en-us/main-navigation",{"_path":582,"_dir":173,"_draft":6,"_partial":6,"_locale":7,"title":583,"titleMobile":583,"button":584,"config":589,"_id":591,"_type":166,"_source":167,"_file":592,"_stem":593,"_extension":170},"/shared/en-us/banner","GitLab 18 & the next step in intelligent DevSecOps.",{"text":585,"config":586},"Watch now",{"href":587,"dataGaName":588,"dataGaLocation":179},"/eighteen/","gitlab 18 banner",{"layout":590},"release","content:shared:en-us:banner.yml","shared/en-us/banner.yml","shared/en-us/banner",{"_path":595,"_dir":173,"_draft":6,"_partial":6,"_locale":7,"data":596,"_id":802,"_type":166,"title":803,"_source":167,"_file":804,"_stem":805,"_extension":170},"/shared/en-us/main-footer",{"text":597,"source":598,"edit":604,"contribute":609,"config":614,"items":619,"minimal":794},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":599,"config":600},"View page source",{"href":601,"dataGaName":602,"dataGaLocation":603},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":605,"config":606},"Edit this page",{"href":607,"dataGaName":608,"dataGaLocation":603},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":610,"config":611},"Please contribute",{"href":612,"dataGaName":613,"dataGaLocation":603},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":615,"facebook":616,"youtube":617,"linkedin":618},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[620,643,700,729,764],{"title":197,"links":621,"subMenu":626},[622],{"text":623,"config":624},"DevSecOps platform",{"href":206,"dataGaName":625,"dataGaLocation":603},"devsecops platform",[627],{"title":335,"links":628},[629,633,638],{"text":630,"config":631},"View plans",{"href":337,"dataGaName":632,"dataGaLocation":603},"view plans",{"text":634,"config":635},"Why Premium?",{"href":636,"dataGaName":637,"dataGaLocation":603},"/pricing/premium/","why premium",{"text":639,"config":640},"Why Ultimate?",{"href":641,"dataGaName":642,"dataGaLocation":603},"/pricing/ultimate/","why ultimate",{"title":644,"links":645},"Solutions",[646,651,654,656,661,666,670,673,677,682,684,687,690,695],{"text":647,"config":648},"Digital transformation",{"href":649,"dataGaName":650,"dataGaLocation":603},"/solutions/digital-transformation/","digital transformation",{"text":283,"config":652},{"href":278,"dataGaName":653,"dataGaLocation":603},"security & compliance",{"text":272,"config":655},{"href":255,"dataGaName":256,"dataGaLocation":603},{"text":657,"config":658},"Agile development",{"href":659,"dataGaName":660,"dataGaLocation":603},"/solutions/agile-delivery/","agile delivery",{"text":662,"config":663},"Cloud transformation",{"href":664,"dataGaName":665,"dataGaLocation":603},"/solutions/cloud-native/","cloud transformation",{"text":667,"config":668},"SCM",{"href":268,"dataGaName":669,"dataGaLocation":603},"source code management",{"text":21,"config":671},{"href":260,"dataGaName":672,"dataGaLocation":603},"continuous integration & delivery",{"text":674,"config":675},"Value stream management",{"href":310,"dataGaName":676,"dataGaLocation":603},"value stream management",{"text":678,"config":679},"GitOps",{"href":680,"dataGaName":681,"dataGaLocation":603},"/solutions/gitops/","gitops",{"text":320,"config":683},{"href":322,"dataGaName":323,"dataGaLocation":603},{"text":685,"config":686},"Small business",{"href":327,"dataGaName":328,"dataGaLocation":603},{"text":688,"config":689},"Public sector",{"href":332,"dataGaName":333,"dataGaLocation":603},{"text":691,"config":692},"Education",{"href":693,"dataGaName":694,"dataGaLocation":603},"/solutions/education/","education",{"text":696,"config":697},"Financial services",{"href":698,"dataGaName":699,"dataGaLocation":603},"/solutions/finance/","financial services",{"title":340,"links":701},[702,704,706,708,711,713,715,717,719,721,723,725,727],{"text":351,"config":703},{"href":353,"dataGaName":354,"dataGaLocation":603},{"text":356,"config":705},{"href":358,"dataGaName":359,"dataGaLocation":603},{"text":361,"config":707},{"href":363,"dataGaName":364,"dataGaLocation":603},{"text":366,"config":709},{"href":368,"dataGaName":710,"dataGaLocation":603},"docs",{"text":389,"config":712},{"href":391,"dataGaName":392,"dataGaLocation":603},{"text":384,"config":714},{"href":386,"dataGaName":387,"dataGaLocation":603},{"text":394,"config":716},{"href":396,"dataGaName":397,"dataGaLocation":603},{"text":407,"config":718},{"href":409,"dataGaName":410,"dataGaLocation":603},{"text":399,"config":720},{"href":401,"dataGaName":402,"dataGaLocation":603},{"text":412,"config":722},{"href":414,"dataGaName":415,"dataGaLocation":603},{"text":417,"config":724},{"href":419,"dataGaName":420,"dataGaLocation":603},{"text":422,"config":726},{"href":424,"dataGaName":425,"dataGaLocation":603},{"text":427,"config":728},{"href":429,"dataGaName":430,"dataGaLocation":603},{"title":445,"links":730},[731,733,735,737,739,741,743,748,753,755,757,759],{"text":452,"config":732},{"href":454,"dataGaName":447,"dataGaLocation":603},{"text":457,"config":734},{"href":459,"dataGaName":460,"dataGaLocation":603},{"text":465,"config":736},{"href":467,"dataGaName":468,"dataGaLocation":603},{"text":470,"config":738},{"href":472,"dataGaName":473,"dataGaLocation":603},{"text":475,"config":740},{"href":477,"dataGaName":478,"dataGaLocation":603},{"text":480,"config":742},{"href":482,"dataGaName":483,"dataGaLocation":603},{"text":744,"config":745},"Environmental, social and governance (ESG)",{"href":746,"dataGaName":747,"dataGaLocation":603},"/environmental-social-governance/","environmental, social and governance",{"text":749,"config":750},"Diversity, inclusion and belonging (DIB)",{"href":751,"dataGaName":752,"dataGaLocation":603},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":485,"config":754},{"href":487,"dataGaName":488,"dataGaLocation":603},{"text":495,"config":756},{"href":497,"dataGaName":498,"dataGaLocation":603},{"text":500,"config":758},{"href":502,"dataGaName":503,"dataGaLocation":603},{"text":760,"config":761},"Modern Slavery Transparency Statement",{"href":762,"dataGaName":763,"dataGaLocation":603},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":765,"links":766},"Contact Us",[767,770,772,774,779,784,789],{"text":768,"config":769},"Contact an expert",{"href":188,"dataGaName":189,"dataGaLocation":603},{"text":514,"config":771},{"href":516,"dataGaName":517,"dataGaLocation":603},{"text":519,"config":773},{"href":521,"dataGaName":522,"dataGaLocation":603},{"text":775,"config":776},"Status",{"href":777,"dataGaName":778,"dataGaLocation":603},"https://status.gitlab.com/","status",{"text":780,"config":781},"Terms of use",{"href":782,"dataGaName":783,"dataGaLocation":603},"/terms/","terms of use",{"text":785,"config":786},"Privacy statement",{"href":787,"dataGaName":788,"dataGaLocation":603},"/privacy/","privacy statement",{"text":790,"config":791},"Cookie preferences",{"dataGaName":792,"dataGaLocation":603,"id":793,"isOneTrustButton":241},"cookie preferences","ot-sdk-btn",{"items":795},[796,798,800],{"text":780,"config":797},{"href":782,"dataGaName":783,"dataGaLocation":603},{"text":785,"config":799},{"href":787,"dataGaName":788,"dataGaLocation":603},{"text":790,"config":801},{"dataGaName":792,"dataGaLocation":603,"id":793,"isOneTrustButton":241},"content:shared:en-us:main-footer.yml","Main Footer","shared/en-us/main-footer.yml","shared/en-us/main-footer",{"_path":807,"_dir":173,"_draft":6,"_partial":6,"_locale":7,"header":808,"eyebrow":809,"blurb":810,"button":811,"secondaryButton":815,"_id":817,"_type":166,"title":818,"_source":167,"_file":819,"_stem":820,"_extension":170},"/shared/en-us/next-steps","Start shipping better software faster","50%+ of the Fortune 100 trust GitLab","See what your team can do with the intelligent\n\n\nDevSecOps platform.\n",{"text":181,"config":812},{"href":813,"dataGaName":184,"dataGaLocation":814},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":186,"config":816},{"href":188,"dataGaName":189,"dataGaLocation":814},"content:shared:en-us:next-steps.yml","Next Steps","shared/en-us/next-steps.yml","shared/en-us/next-steps",1751548584346]