[{"data":1,"prerenderedAt":881},["ShallowReactive",2],{"/en-us/topics/gitops/gitops-multicloud-deployments-gitlab":3,"navigation-en-us":119,"banner-en-us":548,"footer-en-us":565,"next-steps-en-us":806,"footer-source-/en-us/topics/gitops/gitops-multicloud-deployments-gitlab/":821},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"_id":113,"_type":114,"title":7,"_source":115,"_file":116,"_stem":117,"_extension":118},"/en-us/topics/gitops/gitops-multicloud-deployments-gitlab","gitops",false,"",{"title":9,"ogTitle":9,"description":10,"ogDescription":10},"Multicloud deployment for GitOps using GitLab: A demo","How multicloud compatibility supports GitOps workflows. This demo shows how to deploy applications to three Kubernetes servers using a common workflow.",[12,26,32,111],{"type":13,"componentName":13,"componentContent":14},"CommonBreadcrumbs",{"crumbs":15},[16,20,24],{"title":17,"config":18},"Topics",{"href":19},"/topics/",{"title":21,"config":22},"GitOps",{"href":23},"/topics/gitops/",{"title":25},"GitOps multicloud deployments gitlab",{"type":27,"componentName":27,"componentContent":28},"CommonArticleHero",{"title":9,"text":29,"config":30},"How multicloud compatibility supports GitOps workflows. This demo shows how to deploy applications to three Kubernetes servers using a common workflow.\n",{"id":31,"twoColumns":6},"multicloud-deployment-for-gitops-using-gitlab:-a-demo",{"type":33,"componentName":33,"componentContent":34},"CommonSideNavigationWithTree",{"anchors":35,"components":70},{"text":36,"data":37},"More on this topic",[38,42,46,50,54,58,62,66],{"text":39,"config":40},null,{"href":41},"#",{"text":43,"config":44},"Multicloud deployments using GitOps and GitLab",{"href":45},"#multicloud-deployments-using-gitops-and-gitlab",{"text":47,"config":48},"Inside the applications folder",{"href":49},"#inside-the-applications-folder",{"text":51,"config":52},"ASP.NET application on AKS",{"href":53},"#asp.net-application-on-aks",{"text":55,"config":56},"Java Spring application on GKE",{"href":57},"#java-spring-application-on-gke",{"text":59,"config":60},"Python application on EKS",{"href":61},"#python-application-on-eks",{"text":63,"config":64},"GitLab for GitOps",{"href":65},"#gitlab-for-gitops",{"text":67,"config":68},"Ready to learn more about GitOps?",{"href":69},"#ready-to-learn-more-about-gitops?",[71,76,81,86,91,96,101,106],{"type":72,"componentName":72,"componentContent":73},"TopicsCopy",{"header":39,"text":74,"config":75},"GitOps workflows use a Git repository as a single source of truth to enable collaboration, bringing infrastructure teams together to accelerate software development and delivery. When operations teams use [GitOps workflows](/topics/gitops/gitops-workflow/){data-ga-name=\"gitops workflows\" data-ga-location=\"body\"}, there are benefits beyond version control when using GitLab as the core repository. Teams use GitLab for its collaborative platform, ease of infrastructure deployments, and multicloud compatibility.\n",{"id":7},{"type":72,"componentName":72,"componentContent":77},{"header":43,"text":78,"config":79},"This demo shows how to deploy applications to three Kubernetes servers using a common workflow. Teams will learn how to successfully deploy applications using Auto DevOps, powered by GitLab CI, with Helm and Kubernetes.\nThe first step is to open the [gitops-demo group README.md file](https://gitlab.com/gitops-demo/readme), which shows the structure of the gitops-demo group. There are a few projects and two subgroups: infrastructure and [applications](https://gitlab.com/gitops-demo/apps).\n",{"id":80},"multicloud-deployments-using-gitops-and-gitlab",{"type":72,"componentName":72,"componentContent":82},{"header":47,"text":83,"config":84},"There are four applications for this demo: my-asp-net-app1; my-spring-app2; my-ruby-app3; my-python-app4, and three Kubernetes clusters, with each corresponding to a different cloud environment: Microsoft Azure (AKS), Amazon (EKS), and Google Cloud (GKE).\n\nClicking the Kubernetes button on the left-hand corner reveals that all of the clusters are registered to GitLab. The environmental scopes represent which application is deployed to each cloud.\n",{"id":85},"inside-the-applications-folder",{"type":72,"componentName":72,"componentContent":87},{"header":51,"text":88,"config":89},"### AutoDevOps at work\n\n[The first example](https://gitlab.com/gitops-demo/apps/my-asp-net-app1) is an ASP.NET application, which is the equivalent of a Hello, World app. There are a few modifications that are specific to how this application is deployed, which lives in the [application CI file](https://gitlab.com/gitops-demo/apps/my-asp-net-app1/blob/master/.gitlab-ci.yml).\n\nThe first step is to import the main Auto DevOps template by setting a couple of variables. Then, it's important to override a few commands for stages that are more applicable to .net code, and finally, set the environment automatically to deploy production into AKS.\n\n```yaml\ninclude:\n  - template: Auto-DevOps.gitlab-ci.yml\n\nvariables:\n  DEPENDENCY_SCANNING_DISABLED: \"true\"\n\ntest:\n  stage: test\n  image: microsoft/dotnet:latest\n  script:\n    - 'dotnet test --no-restore'\n\nlicense_management:\n  stage: test\n  before_script:\n    - sudo apt-get update\n    - sudo apt-get install -y dotnet-runtime-2.2 dotnet-sdk-2.2\n\nproduction:\n  environment:\n    name: aks/production\n    url: http://$CI_PROJECT_PATH_SLUG.$KUBE_INGRESS_BASE_DOMAIN\n```\n{: .language-yaml}\n\nThe pipeline will run automatically and deploy successfully. By viewing [the pipeline](https://gitlab.com/gitops-demo/apps/my-asp-net-app1/pipelines/88314435), it's possible to see how deployment works.\nThe stages of the pipeline from build to production for the ASP.NET application.\n{: .note.text-center}\n\nA quick look inside the pipeline shows that all the jobs passed successfully. The Auto DevOps feature kicked off the build stage, which creates a [Docker](/blog/docker-hub-rate-limit-monitoring/){data-ga-name=\"docker\" data-ga-location=\"body\"} container and uploads it to the built-in Docker registry. The test phase is comprehensive and includes [container scanning](/blog/container-security-in-gitlab/){data-ga-name=\"container scanning\" data-ga-location=\"body\"}, license management, SAST, and unit tests. To dive deeper into the testing results, click the security and license tabs. The application deploys to production in the final stage of the pipeline.\n\n### Inside the AKS cluster\n\nThe ASP.NET application is deploying to the AKS cluster. Go to Operations > Environments to see the environment configured for this application. Metrics such as the HTTP error rates, latency rates, and throughput are available, because [Prometheus](/blog/anomaly-detection-using-prometheus/){data-ga-name=\"prometheus\" data-ga-location=\"body\"} is already integrated into GitLab's Kubernetes clusters.\n\nThe environment can be launched directly by clicking the live URL to see the application running on AKS. There isn't a lot of extra code beyond what is already configured into GitLab that tells the application how to deploy. The Auto DevOps feature creates a Helm chart and deploys it to Kubernetes and AKS.\n",{"id":90},"asp.net-application-on-aks",{"type":72,"componentName":72,"componentContent":92},{"header":55,"text":93,"config":94},"In the demo, you'll learn how to configure the [Spring application](https://gitlab.com/gitops-demo/apps/my-spring-app2) similarly as the ASP.NET application by using a Dockerfile. The [Dockerfile](https://gitlab.com/gitops-demo/apps/my-spring-app2/blob/master/Dockerfile) is placed in the repository root directory.\n\n```docker\nROM maven:3-jdk-8-alpine\nWORKDIR /usr/src/app\nCOPY . /usr/src/app\nRUN mvn package\nENV PORT 5000\nEXPOSE $PORT\nCMD [ \"sh\", \"-c\", \"mvn -Dserver.port=${PORT} spring-boot:run\" ]\n```\n\nThe Spring application deployment differs from the ASP.NET application in one way: It does not need any overrides to the AutoDevOps template, because it uses the default template, deploying to GKE instead of AKS. The workflow for application deployment is identical regardless of what cloud the application is being deployed to. This makes [multicloud](/blog/gitlab-ci-cd-is-for-multi-cloud/){data-ga-name=\"multicloud\" data-ga-location=\"body\"} easy.\n\nIt's important to produce a similar build, test, and production run in this environment. By taking this step, teams can obtain the same metrics, the error rates, latencies, and throughputs. In this case, the application is running automatically in a container on Kubernetes in the GKE cluster.\n",{"id":95},"java-spring-application-on-gke",{"type":72,"componentName":72,"componentContent":97},{"header":59,"text":98,"config":99},"The final example is a [Python application](https://gitlab.com/gitops-demo/apps/my-python-app4) that deploys on EKS. The components are similar to the previous examples, and use [gitlab-ci.yml to change the production environment to EKS](https://gitlab.com/gitops-demo/apps/my-python-app4/blob/master/.gitlab-ci.yml), and a Dockerfile to prepare the Helm chart. There are also a few overrides.\n\n```yaml\ninclude:\n  - template: Auto-DevOps.gitlab-ci.yml\ntest:\n  image: python:3.7\n  script:\n    - pip install -r requirements.txt\n    - pip install pylint\n    - pylint main.py\nproduction:\n  environment:\n    name: eks/production\n    url: http://$CI_PROJECT_PATH_SLUG.$KUBE_INGRESS_BASE_DOMAIN\n```\n\nThe GitLab CI file tells the application to deploy on EKS.\n{: .note.text-center}\n\n```docker\nFROM python:3.7\nWORKDIR /app\nADD . /app/\nRUN pip install -r requirements.txt\nEXPOSE 5000\nCMD [\"python\", \"/app/main.py\"\n```\n\nThe [Dockerfile](https://gitlab.com/gitops-demo/apps/my-python-app4/blob/master/Dockerfile) gets the Helm chart ready.\n{: .note.text-center}\n\nJust like in previous examples, the [pipeline](https://gitlab.com/gitops-demo/apps/my-python-app4/pipelines/88314654) runs the same way as in the other applications with build, test, and production phases. Once the application is deployed to EKS, you can open up the live link and see the Python application in your browser window.\n\nGitLab is a true multicloud solution that enables businesses to make decisions about which cloud provider they want to use, without disparate workflows, while still maintaining good GitOps practices. All of this is a consistent interface with the same workflow, making it simple to deploy to any major cloud running Kubernetes integrated with GitLab.\n",{"id":100},"python-application-on-eks",{"type":72,"componentName":72,"componentContent":102},{"header":63,"text":103,"config":104},"A good GitOps practice involves making a Git repository the single source of truth for all code. While any Git repository could suffice for good GitOps procedure, there are few DevOps tools that truly encompass the core pillars of GitOps: collaboration, transparency in process, and [version control](/blog/migrating-your-version-control-to-git/){data-ga-name=\"version control\" data-ga-location=\"body\"}.\n\nTools like [epics](/blog/epics-three-features-accelerate-your-workflow/){data-ga-name=\"epics\" data-ga-location=\"body\"}, issues, and [merge requests](/blog/merge-trains-explained/){data-ga-name=\"merge requests\" data-ga-location=\"body\"}, which are the crux of GitLab, foster communication and transparency between teams. Infrastructure teams can build code using Terraform or [Ansible templates](/blog/using-ansible-and-gitlab-as-infrastructure-for-code/){data-ga-name=\"ansible\" data-ga-location=\"body\"} in GitLab, and deploy to the cloud using GitLab CI. GitLab is the true multicloud solution, allowing teams to deploy an application to any cloud service using GitLab CI and Kubernetes without having to significantly augment their workflows.\n",{"id":105},"gitlab-for-gitops",{"type":72,"componentName":72,"componentContent":107},{"header":67,"text":108,"config":109},"* [What is GitOps](/topics/gitops/){data-ga-name=\"gitops\" data-ga-location=\"body\"}\n* [See how GitLab strengthens GitOps workflows](/solutions/gitops/){data-ga-name=\"strengthens gitops workflows\" data-ga-location=\"body\"}\n* [Understand the future of GitOps from industry leaders](/why/gitops-infrastructure-automation/){data-ga-name=\"future of gitops\" data-ga-location=\"body\"}\n* [Download the beginner's guide to GitOps](https://page.gitlab.com/resources-ebook-beginner-guide-gitops.html)\n",{"id":110},"ready-to-learn-more-about-gitops?",{"type":112,"componentName":112},"CommonNextSteps","content:en-us:topics:gitops:gitops-multicloud-deployments-gitlab:index.yml","yaml","content","en-us/topics/gitops/gitops-multicloud-deployments-gitlab/index.yml","en-us/topics/gitops/gitops-multicloud-deployments-gitlab/index","yml",{"_path":120,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"data":122,"_id":544,"_type":114,"title":545,"_source":115,"_file":546,"_stem":547,"_extension":118},"/shared/en-us/main-navigation","en-us",{"logo":123,"freeTrial":128,"sales":133,"login":138,"items":143,"search":475,"minimal":506,"duo":525,"pricingDeployment":534},{"config":124},{"href":125,"dataGaName":126,"dataGaLocation":127},"/","gitlab logo","header",{"text":129,"config":130},"Get free trial",{"href":131,"dataGaName":132,"dataGaLocation":127},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":134,"config":135},"Talk to sales",{"href":136,"dataGaName":137,"dataGaLocation":127},"/sales/","sales",{"text":139,"config":140},"Sign in",{"href":141,"dataGaName":142,"dataGaLocation":127},"https://gitlab.com/users/sign_in/","sign in",[144,188,285,290,396,456],{"text":145,"config":146,"cards":148,"footer":171},"Platform",{"dataNavLevelOne":147},"platform",[149,155,163],{"title":145,"description":150,"link":151},"The most comprehensive AI-powered DevSecOps Platform",{"text":152,"config":153},"Explore our Platform",{"href":154,"dataGaName":147,"dataGaLocation":127},"/platform/",{"title":156,"description":157,"link":158},"GitLab Duo (AI)","Build software faster with AI at every stage of development",{"text":159,"config":160},"Meet GitLab Duo",{"href":161,"dataGaName":162,"dataGaLocation":127},"/gitlab-duo/","gitlab duo ai",{"title":164,"description":165,"link":166},"Why GitLab","10 reasons why Enterprises choose GitLab",{"text":167,"config":168},"Learn more",{"href":169,"dataGaName":170,"dataGaLocation":127},"/why-gitlab/","why gitlab",{"title":172,"items":173},"Get started with",[174,179,184],{"text":175,"config":176},"Platform Engineering",{"href":177,"dataGaName":178,"dataGaLocation":127},"/solutions/platform-engineering/","platform engineering",{"text":180,"config":181},"Developer Experience",{"href":182,"dataGaName":183,"dataGaLocation":127},"/developer-experience/","Developer experience",{"text":185,"config":186},"MLOps",{"href":187,"dataGaName":185,"dataGaLocation":127},"/topics/devops/the-role-of-ai-in-devops/",{"text":189,"left":190,"config":191,"link":193,"lists":197,"footer":267},"Product",true,{"dataNavLevelOne":192},"solutions",{"text":194,"config":195},"View all Solutions",{"href":196,"dataGaName":192,"dataGaLocation":127},"/solutions/",[198,223,246],{"title":199,"description":200,"link":201,"items":206},"Automation","CI/CD and automation to accelerate deployment",{"config":202},{"icon":203,"href":204,"dataGaName":205,"dataGaLocation":127},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[207,211,215,219],{"text":208,"config":209},"CI/CD",{"href":210,"dataGaLocation":127,"dataGaName":208},"/solutions/continuous-integration/",{"text":212,"config":213},"AI-Assisted Development",{"href":161,"dataGaLocation":127,"dataGaName":214},"AI assisted development",{"text":216,"config":217},"Source Code Management",{"href":218,"dataGaLocation":127,"dataGaName":216},"/solutions/source-code-management/",{"text":220,"config":221},"Automated Software Delivery",{"href":204,"dataGaLocation":127,"dataGaName":222},"Automated software delivery",{"title":224,"description":225,"link":226,"items":231},"Security","Deliver code faster without compromising security",{"config":227},{"href":228,"dataGaName":229,"dataGaLocation":127,"icon":230},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[232,236,241],{"text":233,"config":234},"Application Security Testing",{"href":228,"dataGaName":235,"dataGaLocation":127},"Application security testing",{"text":237,"config":238},"Software Supply Chain Security",{"href":239,"dataGaLocation":127,"dataGaName":240},"/solutions/supply-chain/","Software supply chain security",{"text":242,"config":243},"Software Compliance",{"href":244,"dataGaName":245,"dataGaLocation":127},"/solutions/software-compliance/","software compliance",{"title":247,"link":248,"items":253},"Measurement",{"config":249},{"icon":250,"href":251,"dataGaName":252,"dataGaLocation":127},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[254,258,262],{"text":255,"config":256},"Visibility & Measurement",{"href":251,"dataGaLocation":127,"dataGaName":257},"Visibility and Measurement",{"text":259,"config":260},"Value Stream Management",{"href":261,"dataGaLocation":127,"dataGaName":259},"/solutions/value-stream-management/",{"text":263,"config":264},"Analytics & Insights",{"href":265,"dataGaLocation":127,"dataGaName":266},"/solutions/analytics-and-insights/","Analytics and insights",{"title":268,"items":269},"GitLab for",[270,275,280],{"text":271,"config":272},"Enterprise",{"href":273,"dataGaLocation":127,"dataGaName":274},"/enterprise/","enterprise",{"text":276,"config":277},"Small Business",{"href":278,"dataGaLocation":127,"dataGaName":279},"/small-business/","small business",{"text":281,"config":282},"Public Sector",{"href":283,"dataGaLocation":127,"dataGaName":284},"/solutions/public-sector/","public sector",{"text":286,"config":287},"Pricing",{"href":288,"dataGaName":289,"dataGaLocation":127,"dataNavLevelOne":289},"/pricing/","pricing",{"text":291,"config":292,"link":294,"lists":298,"feature":383},"Resources",{"dataNavLevelOne":293},"resources",{"text":295,"config":296},"View all resources",{"href":297,"dataGaName":293,"dataGaLocation":127},"/resources/",[299,332,355],{"title":300,"items":301},"Getting started",[302,307,312,317,322,327],{"text":303,"config":304},"Install",{"href":305,"dataGaName":306,"dataGaLocation":127},"/install/","install",{"text":308,"config":309},"Quick start guides",{"href":310,"dataGaName":311,"dataGaLocation":127},"/get-started/","quick setup checklists",{"text":313,"config":314},"Learn",{"href":315,"dataGaLocation":127,"dataGaName":316},"https://university.gitlab.com/","learn",{"text":318,"config":319},"Product documentation",{"href":320,"dataGaName":321,"dataGaLocation":127},"https://docs.gitlab.com/","product documentation",{"text":323,"config":324},"Best practice videos",{"href":325,"dataGaName":326,"dataGaLocation":127},"/getting-started-videos/","best practice videos",{"text":328,"config":329},"Integrations",{"href":330,"dataGaName":331,"dataGaLocation":127},"/integrations/","integrations",{"title":333,"items":334},"Discover",[335,340,345,350],{"text":336,"config":337},"Customer success stories",{"href":338,"dataGaName":339,"dataGaLocation":127},"/customers/","customer success stories",{"text":341,"config":342},"Blog",{"href":343,"dataGaName":344,"dataGaLocation":127},"/blog/","blog",{"text":346,"config":347},"Remote",{"href":348,"dataGaName":349,"dataGaLocation":127},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":351,"config":352},"TeamOps",{"href":353,"dataGaName":354,"dataGaLocation":127},"/teamops/","teamops",{"title":356,"items":357},"Connect",[358,363,368,373,378],{"text":359,"config":360},"GitLab Services",{"href":361,"dataGaName":362,"dataGaLocation":127},"/services/","services",{"text":364,"config":365},"Community",{"href":366,"dataGaName":367,"dataGaLocation":127},"/community/","community",{"text":369,"config":370},"Forum",{"href":371,"dataGaName":372,"dataGaLocation":127},"https://forum.gitlab.com/","forum",{"text":374,"config":375},"Events",{"href":376,"dataGaName":377,"dataGaLocation":127},"/events/","events",{"text":379,"config":380},"Partners",{"href":381,"dataGaName":382,"dataGaLocation":127},"/partners/","partners",{"backgroundColor":384,"textColor":385,"text":386,"image":387,"link":391},"#2f2a6b","#fff","Insights for the future of software development",{"altText":388,"config":389},"the source promo card",{"src":390},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":392,"config":393},"Read the latest",{"href":394,"dataGaName":395,"dataGaLocation":127},"/the-source/","the source",{"text":397,"config":398,"lists":400},"Company",{"dataNavLevelOne":399},"company",[401],{"items":402},[403,408,414,416,421,426,431,436,441,446,451],{"text":404,"config":405},"About",{"href":406,"dataGaName":407,"dataGaLocation":127},"/company/","about",{"text":409,"config":410,"footerGa":413},"Jobs",{"href":411,"dataGaName":412,"dataGaLocation":127},"/jobs/","jobs",{"dataGaName":412},{"text":374,"config":415},{"href":376,"dataGaName":377,"dataGaLocation":127},{"text":417,"config":418},"Leadership",{"href":419,"dataGaName":420,"dataGaLocation":127},"/company/team/e-group/","leadership",{"text":422,"config":423},"Team",{"href":424,"dataGaName":425,"dataGaLocation":127},"/company/team/","team",{"text":427,"config":428},"Handbook",{"href":429,"dataGaName":430,"dataGaLocation":127},"https://handbook.gitlab.com/","handbook",{"text":432,"config":433},"Investor relations",{"href":434,"dataGaName":435,"dataGaLocation":127},"https://ir.gitlab.com/","investor relations",{"text":437,"config":438},"Trust Center",{"href":439,"dataGaName":440,"dataGaLocation":127},"/security/","trust center",{"text":442,"config":443},"AI Transparency Center",{"href":444,"dataGaName":445,"dataGaLocation":127},"/ai-transparency-center/","ai transparency center",{"text":447,"config":448},"Newsletter",{"href":449,"dataGaName":450,"dataGaLocation":127},"/company/contact/","newsletter",{"text":452,"config":453},"Press",{"href":454,"dataGaName":455,"dataGaLocation":127},"/press/","press",{"text":457,"config":458,"lists":459},"Contact us",{"dataNavLevelOne":399},[460],{"items":461},[462,465,470],{"text":134,"config":463},{"href":136,"dataGaName":464,"dataGaLocation":127},"talk to sales",{"text":466,"config":467},"Support portal",{"href":468,"dataGaName":469,"dataGaLocation":127},"https://support.gitlab.com","support portal",{"text":471,"config":472},"Customer portal",{"href":473,"dataGaName":474,"dataGaLocation":127},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":476,"login":477,"suggestions":484},"Close",{"text":478,"link":479},"To search repositories and projects, login to",{"text":480,"config":481},"gitlab.com",{"href":141,"dataGaName":482,"dataGaLocation":483},"search login","search",{"text":485,"default":486},"Suggestions",[487,489,493,495,499,503],{"text":156,"config":488},{"href":161,"dataGaName":156,"dataGaLocation":483},{"text":490,"config":491},"Code Suggestions (AI)",{"href":492,"dataGaName":490,"dataGaLocation":483},"/solutions/code-suggestions/",{"text":208,"config":494},{"href":210,"dataGaName":208,"dataGaLocation":483},{"text":496,"config":497},"GitLab on AWS",{"href":498,"dataGaName":496,"dataGaLocation":483},"/partners/technology-partners/aws/",{"text":500,"config":501},"GitLab on Google Cloud",{"href":502,"dataGaName":500,"dataGaLocation":483},"/partners/technology-partners/google-cloud-platform/",{"text":504,"config":505},"Why GitLab?",{"href":169,"dataGaName":504,"dataGaLocation":483},{"freeTrial":507,"mobileIcon":512,"desktopIcon":517,"secondaryButton":520},{"text":508,"config":509},"Start free trial",{"href":510,"dataGaName":132,"dataGaLocation":511},"https://gitlab.com/-/trials/new/","nav",{"altText":513,"config":514},"Gitlab Icon",{"src":515,"dataGaName":516,"dataGaLocation":511},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":513,"config":518},{"src":519,"dataGaName":516,"dataGaLocation":511},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":521,"config":522},"Get Started",{"href":523,"dataGaName":524,"dataGaLocation":511},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":526,"mobileIcon":530,"desktopIcon":532},{"text":527,"config":528},"Learn more about GitLab Duo",{"href":161,"dataGaName":529,"dataGaLocation":511},"gitlab duo",{"altText":513,"config":531},{"src":515,"dataGaName":516,"dataGaLocation":511},{"altText":513,"config":533},{"src":519,"dataGaName":516,"dataGaLocation":511},{"freeTrial":535,"mobileIcon":540,"desktopIcon":542},{"text":536,"config":537},"Back to pricing",{"href":288,"dataGaName":538,"dataGaLocation":511,"icon":539},"back to pricing","GoBack",{"altText":513,"config":541},{"src":515,"dataGaName":516,"dataGaLocation":511},{"altText":513,"config":543},{"src":519,"dataGaName":516,"dataGaLocation":511},"content:shared:en-us:main-navigation.yml","Main Navigation","shared/en-us/main-navigation.yml","shared/en-us/main-navigation",{"_path":549,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"title":550,"button":551,"image":556,"config":560,"_id":562,"_type":114,"_source":115,"_file":563,"_stem":564,"_extension":118},"/shared/en-us/banner","is now in public beta!",{"text":552,"config":553},"Try the Beta",{"href":554,"dataGaName":555,"dataGaLocation":127},"/gitlab-duo/agent-platform/","duo banner",{"altText":557,"config":558},"GitLab Duo Agent Platform",{"src":559},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1753720689/somrf9zaunk0xlt7ne4x.svg",{"layout":561},"release","content:shared:en-us:banner.yml","shared/en-us/banner.yml","shared/en-us/banner",{"_path":566,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"data":567,"_id":802,"_type":114,"title":803,"_source":115,"_file":804,"_stem":805,"_extension":118},"/shared/en-us/main-footer",{"text":568,"source":569,"edit":575,"contribute":580,"config":585,"items":590,"minimal":794},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":570,"config":571},"View page source",{"href":572,"dataGaName":573,"dataGaLocation":574},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":576,"config":577},"Edit this page",{"href":578,"dataGaName":579,"dataGaLocation":574},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":581,"config":582},"Please contribute",{"href":583,"dataGaName":584,"dataGaLocation":574},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":586,"facebook":587,"youtube":588,"linkedin":589},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[591,638,687,731,760],{"title":286,"links":592,"subMenu":607},[593,597,602],{"text":594,"config":595},"View plans",{"href":288,"dataGaName":596,"dataGaLocation":574},"view plans",{"text":598,"config":599},"Why Premium?",{"href":600,"dataGaName":601,"dataGaLocation":574},"/pricing/premium/","why premium",{"text":603,"config":604},"Why Ultimate?",{"href":605,"dataGaName":606,"dataGaLocation":574},"/pricing/ultimate/","why ultimate",[608],{"title":609,"links":610},"Contact Us",[611,614,616,618,623,628,633],{"text":612,"config":613},"Contact sales",{"href":136,"dataGaName":137,"dataGaLocation":574},{"text":466,"config":615},{"href":468,"dataGaName":469,"dataGaLocation":574},{"text":471,"config":617},{"href":473,"dataGaName":474,"dataGaLocation":574},{"text":619,"config":620},"Status",{"href":621,"dataGaName":622,"dataGaLocation":574},"https://status.gitlab.com/","status",{"text":624,"config":625},"Terms of use",{"href":626,"dataGaName":627,"dataGaLocation":574},"/terms/","terms of use",{"text":629,"config":630},"Privacy statement",{"href":631,"dataGaName":632,"dataGaLocation":574},"/privacy/","privacy statement",{"text":634,"config":635},"Cookie preferences",{"dataGaName":636,"dataGaLocation":574,"id":637,"isOneTrustButton":190},"cookie preferences","ot-sdk-btn",{"title":189,"links":639,"subMenu":647},[640,644],{"text":641,"config":642},"DevSecOps platform",{"href":154,"dataGaName":643,"dataGaLocation":574},"devsecops platform",{"text":212,"config":645},{"href":161,"dataGaName":646,"dataGaLocation":574},"ai-assisted development",[648],{"title":17,"links":649},[650,655,657,662,667,672,677,682],{"text":651,"config":652},"CICD",{"href":653,"dataGaName":654,"dataGaLocation":574},"/topics/ci-cd/","cicd",{"text":21,"config":656},{"href":23,"dataGaName":5,"dataGaLocation":574},{"text":658,"config":659},"DevOps",{"href":660,"dataGaName":661,"dataGaLocation":574},"/topics/devops/","devops",{"text":663,"config":664},"Version Control",{"href":665,"dataGaName":666,"dataGaLocation":574},"/topics/version-control/","version control",{"text":668,"config":669},"DevSecOps",{"href":670,"dataGaName":671,"dataGaLocation":574},"/topics/devsecops/","devsecops",{"text":673,"config":674},"Cloud Native",{"href":675,"dataGaName":676,"dataGaLocation":574},"/topics/cloud-native/","cloud native",{"text":678,"config":679},"AI for Coding",{"href":680,"dataGaName":681,"dataGaLocation":574},"/topics/devops/ai-for-coding/","ai for coding",{"text":683,"config":684},"Agentic AI",{"href":685,"dataGaName":686,"dataGaLocation":574},"/topics/agentic-ai/","agentic ai",{"title":688,"links":689},"Solutions",[690,692,694,699,703,706,710,713,715,718,721,726],{"text":233,"config":691},{"href":228,"dataGaName":233,"dataGaLocation":574},{"text":222,"config":693},{"href":204,"dataGaName":205,"dataGaLocation":574},{"text":695,"config":696},"Agile development",{"href":697,"dataGaName":698,"dataGaLocation":574},"/solutions/agile-delivery/","agile delivery",{"text":700,"config":701},"SCM",{"href":218,"dataGaName":702,"dataGaLocation":574},"source code management",{"text":651,"config":704},{"href":210,"dataGaName":705,"dataGaLocation":574},"continuous integration & delivery",{"text":707,"config":708},"Value stream management",{"href":261,"dataGaName":709,"dataGaLocation":574},"value stream management",{"text":21,"config":711},{"href":712,"dataGaName":5,"dataGaLocation":574},"/solutions/gitops/",{"text":271,"config":714},{"href":273,"dataGaName":274,"dataGaLocation":574},{"text":716,"config":717},"Small business",{"href":278,"dataGaName":279,"dataGaLocation":574},{"text":719,"config":720},"Public sector",{"href":283,"dataGaName":284,"dataGaLocation":574},{"text":722,"config":723},"Education",{"href":724,"dataGaName":725,"dataGaLocation":574},"/solutions/education/","education",{"text":727,"config":728},"Financial services",{"href":729,"dataGaName":730,"dataGaLocation":574},"/solutions/finance/","financial services",{"title":291,"links":732},[733,735,737,739,742,744,746,748,750,752,754,756,758],{"text":303,"config":734},{"href":305,"dataGaName":306,"dataGaLocation":574},{"text":308,"config":736},{"href":310,"dataGaName":311,"dataGaLocation":574},{"text":313,"config":738},{"href":315,"dataGaName":316,"dataGaLocation":574},{"text":318,"config":740},{"href":320,"dataGaName":741,"dataGaLocation":574},"docs",{"text":341,"config":743},{"href":343,"dataGaName":344,"dataGaLocation":574},{"text":336,"config":745},{"href":338,"dataGaName":339,"dataGaLocation":574},{"text":346,"config":747},{"href":348,"dataGaName":349,"dataGaLocation":574},{"text":359,"config":749},{"href":361,"dataGaName":362,"dataGaLocation":574},{"text":351,"config":751},{"href":353,"dataGaName":354,"dataGaLocation":574},{"text":364,"config":753},{"href":366,"dataGaName":367,"dataGaLocation":574},{"text":369,"config":755},{"href":371,"dataGaName":372,"dataGaLocation":574},{"text":374,"config":757},{"href":376,"dataGaName":377,"dataGaLocation":574},{"text":379,"config":759},{"href":381,"dataGaName":382,"dataGaLocation":574},{"title":397,"links":761},[762,764,766,768,770,772,774,778,783,785,787,789],{"text":404,"config":763},{"href":406,"dataGaName":399,"dataGaLocation":574},{"text":409,"config":765},{"href":411,"dataGaName":412,"dataGaLocation":574},{"text":417,"config":767},{"href":419,"dataGaName":420,"dataGaLocation":574},{"text":422,"config":769},{"href":424,"dataGaName":425,"dataGaLocation":574},{"text":427,"config":771},{"href":429,"dataGaName":430,"dataGaLocation":574},{"text":432,"config":773},{"href":434,"dataGaName":435,"dataGaLocation":574},{"text":775,"config":776},"Sustainability",{"href":777,"dataGaName":775,"dataGaLocation":574},"/sustainability/",{"text":779,"config":780},"Diversity, inclusion and belonging (DIB)",{"href":781,"dataGaName":782,"dataGaLocation":574},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":437,"config":784},{"href":439,"dataGaName":440,"dataGaLocation":574},{"text":447,"config":786},{"href":449,"dataGaName":450,"dataGaLocation":574},{"text":452,"config":788},{"href":454,"dataGaName":455,"dataGaLocation":574},{"text":790,"config":791},"Modern Slavery Transparency Statement",{"href":792,"dataGaName":793,"dataGaLocation":574},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":795},[796,798,800],{"text":624,"config":797},{"href":626,"dataGaName":627,"dataGaLocation":574},{"text":629,"config":799},{"href":631,"dataGaName":632,"dataGaLocation":574},{"text":634,"config":801},{"dataGaName":636,"dataGaLocation":574,"id":637,"isOneTrustButton":190},"content:shared:en-us:main-footer.yml","Main Footer","shared/en-us/main-footer.yml","shared/en-us/main-footer",{"_path":807,"_dir":121,"_draft":6,"_partial":6,"_locale":7,"header":808,"eyebrow":809,"blurb":810,"button":811,"secondaryButton":815,"_id":817,"_type":114,"title":818,"_source":115,"_file":819,"_stem":820,"_extension":118},"/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":129,"config":812},{"href":813,"dataGaName":132,"dataGaLocation":814},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":134,"config":816},{"href":136,"dataGaName":137,"dataGaLocation":814},"content:shared:en-us:next-steps.yml","Next Steps","shared/en-us/next-steps.yml","shared/en-us/next-steps",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":822,"content":823,"_id":113,"_type":114,"title":7,"_source":115,"_file":116,"_stem":117,"_extension":118},{"title":9,"ogTitle":9,"description":10,"ogDescription":10},[824,832,835,880],{"type":13,"componentName":13,"componentContent":825},{"crumbs":826},[827,829,831],{"title":17,"config":828},{"href":19},{"title":21,"config":830},{"href":23},{"title":25},{"type":27,"componentName":27,"componentContent":833},{"title":9,"text":29,"config":834},{"id":31,"twoColumns":6},{"type":33,"componentName":33,"componentContent":836},{"anchors":837,"components":855},{"text":36,"data":838},[839,841,843,845,847,849,851,853],{"text":39,"config":840},{"href":41},{"text":43,"config":842},{"href":45},{"text":47,"config":844},{"href":49},{"text":51,"config":846},{"href":53},{"text":55,"config":848},{"href":57},{"text":59,"config":850},{"href":61},{"text":63,"config":852},{"href":65},{"text":67,"config":854},{"href":69},[856,859,862,865,868,871,874,877],{"type":72,"componentName":72,"componentContent":857},{"header":39,"text":74,"config":858},{"id":7},{"type":72,"componentName":72,"componentContent":860},{"header":43,"text":78,"config":861},{"id":80},{"type":72,"componentName":72,"componentContent":863},{"header":47,"text":83,"config":864},{"id":85},{"type":72,"componentName":72,"componentContent":866},{"header":51,"text":88,"config":867},{"id":90},{"type":72,"componentName":72,"componentContent":869},{"header":55,"text":93,"config":870},{"id":95},{"type":72,"componentName":72,"componentContent":872},{"header":59,"text":98,"config":873},{"id":100},{"type":72,"componentName":72,"componentContent":875},{"header":63,"text":103,"config":876},{"id":105},{"type":72,"componentName":72,"componentContent":878},{"header":67,"text":108,"config":879},{"id":110},{"type":112,"componentName":112},1761814451570]