[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code":3,"navigation-pt-br":99,"banner-pt-br":517,"footer-pt-br":530,"next-steps-pt-br":735,"footer-source-/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code/":750},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":13,"_id":93,"_type":94,"title":7,"_source":95,"_file":96,"_stem":97,"_extension":98},"/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code","gitops",false,"",{"title":9,"description":10,"config":11},"Como as equipes usam o GitLab e o Terraform para implantar infraestrutura como código: uma demonstração","GitLab Topics | How teams use GitLab and Terraform for infrastructure as code: A demo",{"ignoreTitleCharLimit":12},true,[14,28,34,91],{"type":15,"componentName":15,"componentContent":16},"CommonBreadcrumbs",{"crumbs":17},[18,22,26],{"title":19,"config":20},"Industry topics",{"href":21},"/topics/",{"title":23,"config":24},"GitOps",{"href":25},"/pt-br/topics/gitops/",{"title":27},"Gitlab enables infrastructure as code",{"type":29,"componentName":29,"componentContent":30},"CommonArticleHero",{"title":9,"text":31,"config":32},"Esta demonstração apresenta as boas práticas de GitOps para implantar infraestrutura como código, usando o Terraform para automação e o GitLab como a fonte única de verdade.\n",{"id":33,"twoColumns":6},"como-as-equipes-usam-o-gitlab-e-o-terraform-para-implantar-infraestrutura-como-código:-uma-demonstração",{"type":35,"componentName":35,"componentContent":36},"CommonSideNavigationWithTree",{"anchors":37,"components":60},{"text":38,"data":39},"Mais informações sobre este tópico",[40,44,48,52,56],{"text":41,"config":42},"Saiba como o GitLab permite implantar a infraestrutura como código",{"href":43},"#learn-how-git-lab-enables-infrastructure-as-code",{"text":45,"config":46},"Criação da infraestrutura como código no GitLab",{"href":47},"#building-your-infrastructure-as-code-in-git-lab",{"text":49,"config":50},"Dentro do subgrupo de infraestrutura",{"href":51},"#inside-the-infrastructure-subgroup",{"text":53,"config":54},"Implantação do código usando o GitLab CI",{"href":55},"#deploying-code-using-git-lab-ci",{"text":57,"config":58},"Quer saber mais sobre o GitOps?",{"href":59},"#ready-to-learn-more-about-git-ops",[61,66,71,76,81,86],{"type":62,"componentName":62,"componentContent":63},"TopicsCopy",{"text":64,"config":65},"Usar um repositório Git como a fonte única de verdade para todo o código de [infraestrutura](/blog/using-ansible-and-gitlab-as-infrastructure-for-code/){data-ga-name=\"infrastructure\" data-ga-location=\"body\"} e implantação de aplicações, com várias equipes trabalhando juntas, é uma boa prática de GitOps. As equipes de infraestrutura podem colaborar e implantar código em vários serviços de nuvem usando o Terraform para automação. Este artigo demonstra como as equipes podem criar um cluster do Kubernetes colaborando com colegas de equipe no GitLab.\n",{"id":7},{"type":62,"componentName":62,"componentContent":67},{"header":41,"text":68,"config":69},"Confira nesta demonstração como seguir boas práticas de GitOps para implantar infraestrutura como código, usando o Terraform para automação e o GitLab como a fonte única de verdade, bem como para CI.\n",{"id":70},"learn-how-git-lab-enables-infrastructure-as-code",{"type":62,"componentName":62,"componentContent":72},{"header":45,"text":73,"config":74},"### Primeiros passos\n\n_Este [grupo gitops-demo](https://gitlab.com/gitops-demo) ilustra as etapas que as equipes de infraestrutura podem seguir._\n\nComece fazendo login no grupo que hospeda o projeto no GitLab. A próxima etapa é abrir o arquivo [README.md](https://gitlab.com/gitops-demo/readme/blob/master/README.md), que mostra a estrutura subjacente do grupo gitops-demo. Existem alguns projetos individuais e dois subgrupos: **[infraestrutura](https://gitlab.com/gitops-demo/infra)** e **[aplicações](https://gitlab.com/gitops-demo/apps)**.\n",{"id":75},"building-your-infrastructure-as-code-in-git-lab",{"type":62,"componentName":62,"componentContent":77},{"header":49,"text":78,"config":79},"Há um repositório separado para cada nuvem: Azure, GCP e AWS, além de um repositório para modelos.\nArquivos semelhantes podem ser encontrados em todos os três repositórios de [nuvem](/blog/gitlab-ci-cd-is-for-multi-cloud/){data-ga-name=\"cloud\" data-ga-location=\"body\"}. Todos os arquivos são escritos no Terraform para automatizar o processo de implantação, enquanto um arquivo `gitlab-ci.yml` também é armazenado no repositório para definir as instruções de automação.\n\n### O arquivo de back-end\n\nUsar o [Terraform Cloud Service] da HashiCorp (https://www.hashicorp.com/blog/announcing-terraform-cloud) como local remoto para o arquivo de estado mantém o arquivo seguro e centralizado, permitindo que ele seja acessado por qualquer processo. Uma vantagem de usar o Terraform Cloud é que ele possibilita bloquear o estado para garantir que apenas um job possa ser executado por vez e evitar que vários jobs façam alterações conflitantes. O código armazena os arquivos de estado no [Terraform Cloud](https://app.terraform.io) em uma organização chamada `gitops-demo`, em um espaço de trabalho chamado `aws`. Isso mantém o estado de execução no provedor de nuvem para que qualquer membro da equipe tenha acesso a qualquer momento.\n\n```\nterraform {\n  backend \"remote\" {\n    hostname     = \"app.terraform.io\"\n    organization = \"gitops-demo\"\n    workspaces {\n      name = \"aws\"\n    }\n  }\n}\n\n```\n{: .language-ruby}\n\n### EKS.tf file\n\nO EKS é outro arquivo Terraform que usa o módulo EKS para o cluster Terraform. As equipes podem definir parâmetros, como o tipo de sub-rede e o número de nós, no arquivo EKS do Terraform.\n\n```\nmodule \"eks\" {\n  source           = \"terraform-aws-modules/eks/aws\"\n  cluster_name     = \"gitops-demo-eks\"\n  subnets          = \"${module.vpc.public_subnets}\"\n  write_kubeconfig = \"false\"\n  tags = {\n    Terraform   = \"true\"\n    Environment = \"dev\"\n  }\n  vpc_id = \"${module.vpc.vpc_id}\"\n  worker_groups = [\n    {\n      instance_type = \"m4.large\"\n      asg_max_size  = 5\n      tags = [{\n        key                 = \"Terraform\"\n        value               = \"true\"\n        propagate_at_launch = true\n      }]\n    }\n  ]\n}\n```\n{: .language-ruby}\n\n### Definir o administrador do GitLab\n\nO provedor do Kubernetes pode ser usado para criar um usuário administrador do GitLab e configurar tudo [automaticamente como código, gerenciado pelo Terraform](https://gitlab.com/gitops-demo/infra/aws/blob/master/gitlab-admin.tf).\n\n### Registrar o cluster com o GitLab\n\nAgora que um cluster do Kubernetes foi criado, é hora de registrá-lo no GitLab para implantar mais código no cluster no futuro. A primeira etapa é usar o provedor do GitLab para criar um cluster de grupos chamado AWS cluster.\n\n```\ndata \"gitlab_group\" \"gitops-demo-apps\" {\n  full_path = \"gitops-demo/apps\"\n}\nprovider \"gitlab\" {\n  alias   = \"use-pre-release-plugin\"\n  version = \"v2.99.0\"\n}\nresource \"gitlab_group_cluster\" \"aws_cluster\" {\n  provider           = \"gitlab.use-pre-release-plugin\"\n  group              = \"${data.gitlab_group.gitops-demo-apps.id}\"\n  name               = \"${module.eks.cluster_id}\"\n  domain             = \"eks.gitops-demo.com\"\n  environment_scope  = \"eks/*\"\n  kubernetes_api_url = \"${module.eks.cluster_endpoint}\"\n  kubernetes_token   = \"${data.kubernetes_secret.gitlab-admin-token.data.token}\"\n  kubernetes_ca_cert = \"${trimspace(base64decode(module.eks.cluster_certificate_authority_data))}\"\n}\n```\n{: .language-ruby}\n\nO código contém o nome do domínio, escopo do ambiente, e credenciais Kubernetes.\n\nDepois que isso for executado, o cluster será criado na AWS e registrado automaticamente no grupo [gitops-demo/apps](https://gitlab.com/gitops-demo/apps).\n",{"id":80},"inside-the-infrastructure-subgroup",{"type":62,"componentName":62,"componentContent":82},{"header":53,"text":83,"config":84},"### Modelo do Terraform\n\nRetorne ao grupo de infraestrutura e abra a pasta Modelos. Ao analisar o [arquivo terraform.gitlab-ci.yml](https://gitlab.com/gitops-demo/infra/templates/blob/master/terraform.gitlab-ci.yml), é possível conferir como a CI funciona para implantar o código da infraestrutura na nuvem usando o Terraform.\n\nDentro do arquivo de CI, as equipes podem conferir algumas etapas diferentes: validar, planejar, aplicar e destruir. Ao utilizar a imagem base do Terraform da Hashicorp, os usuários podem executar diferentes tarefas.\n\nA primeira etapa é inicializar o Terraform.\n\n```\nbefore_script:\n  - terraform --version\n  - terraform init\n  - apk add --update curl\n  - curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/kubectl\n  - install kubectl /usr/local/bin/ && rm kubectl\n  - curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.13.7/2019-06-11/bin/linux/amd64/aws-iam-authenticator\n  - install aws-iam-authenticator /usr/local/bin/ && rm aws-iam-authenticator\n```\n{: .language-ruby}\n\nA próxima etapa é validar se tudo está correto.\n\n```\nvalidate:\n  stage: validate\n  script:\n    - terraform validate\n    - terraform fmt -check=true\n  only:\n    - branches\n```\n{: .language-ruby}\n\nÉ importante lembrar que bons fluxos de trabalho do GitOps incorporam a criação de uma [solicitação de merge](/blog/mr-reviews-with-vs-code/){data-ga-name=\"merge request\" data-ga-location=\"body\"} para as alterações.\n\n```\nmerge review:\n  stage: plan\n  script:\n    - terraform plan -out=$PLAN\n    - echo \\`\\`\\`diff > plan.txt\n    - terraform show -no-color ${PLAN} | tee -a plan.txt\n    - echo \\`\\`\\` >> plan.txt\n    - sed -i -e 's/  +/+/g' plan.txt\n    - sed -i -e 's/  ~/~/g' plan.txt\n    - sed -i -e 's/  -/-/g' plan.txt\n    - MESSAGE=$(cat plan.txt)\n    - >-\n      curl -X POST -g -H \"PRIVATE-TOKEN: ${GITLAB_TOKEN}\"\n      --data-urlencode \"body=${MESSAGE}\"\n      \"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/merge_requests/${CI_MERGE_REQUEST_IID}/discussions\"\n  artifacts:\n    name: plan\n    paths:\n      - $PLAN\n  only:\n    - merge_requests\n```\n{: .language-ruby}\n\n### A solicitação de merge\n\nA [solicitação de merge (MR)](https://gitlab.com/gitops-demo/infra/aws/merge_requests/6){data-ga-name=\"MR\" data-ga-location=\"body\"} é a etapa mais importante no GitOps. Este processo consiste em revisar todas as alterações e verificar o impacto delas. A MR também é uma [ferramenta de colaboração](/blog/merge-request-reviewers/){data-ga-name =\"collaboration tool\" data-ga-location = \"body\"} na qual os membros da equipe podem discutir as alterações e os stakeholders podem aprová-las antes de fazer o merge final no branch principal.\n\nA solicitação de merge define o que acontecerá ao executar a infraestrutura como código. Depois que a MR é criada, o plano Terraform é enviado por upload para ela. Após a revisão e aprovação de todas as alterações, o código poderá ser mesclado no branch principal. Depois que as alterações de código forem mescladas, todas elas serão implantadas no ambiente de produção.\n",{"id":85},"deploying-code-using-git-lab-ci",{"type":62,"componentName":62,"componentContent":87},{"header":57,"text":88,"config":89},"* [O que significa infraestrutura como código?](/topics/gitops/infrastructure-as-code/){data-ga-name=\"infrastructure as code\" data-ga-location=\"body\"}\n* [O que é GitOps](/topics/gitops/){data-ga-name=\"what is gitops\" data-ga-location=\"body\"}\n* [Saiba como o GitLab simplifica os fluxos de trabalho do GitOps](/solutions/gitops/){data-ga-name=\"streamlines workflows\" data-ga-location=\"body\"}\n* [Descubra como será o futuro do GitOps com líderes do setor](/why/gitops-infrastructure-automation/){data-ga-name=\"industry leaders\" data-ga-location=\"body\"}\n* [Leia o guia para iniciantes do GitOps](https://page.gitlab.com/resources-ebook-beginner-guide-gitops.html)\n",{"id":90},"ready-to-learn-more-about-git-ops",{"type":92,"componentName":92},"CommonNextSteps","content:pt-br:topics:gitops:gitlab-enables-infrastructure-as-code:index.yml","yaml","content","pt-br/topics/gitops/gitlab-enables-infrastructure-as-code/index.yml","pt-br/topics/gitops/gitlab-enables-infrastructure-as-code/index","yml",{"_path":100,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"data":102,"_id":513,"_type":94,"title":514,"_source":95,"_file":515,"_stem":516,"_extension":98},"/shared/pt-br/main-navigation","pt-br",{"logo":103,"freeTrial":108,"sales":113,"login":118,"items":123,"search":454,"minimal":490,"duo":504},{"config":104},{"href":105,"dataGaName":106,"dataGaLocation":107},"/pt-br/","gitlab logo","header",{"text":109,"config":110},"Faça uma avaliação gratuita",{"href":111,"dataGaName":112,"dataGaLocation":107},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":114,"config":115},"Fale com a equipe de vendas",{"href":116,"dataGaName":117,"dataGaLocation":107},"/pt-br/sales/","sales",{"text":119,"config":120},"Fazer login",{"href":121,"dataGaName":122,"dataGaLocation":107},"https://gitlab.com/users/sign_in/","sign in",[124,168,265,270,375,435],{"text":125,"config":126,"cards":128,"footer":151},"Plataforma",{"dataNavLevelOne":127},"platform",[129,135,143],{"title":125,"description":130,"link":131},"A plataforma DevSecOps mais abrangente com tecnologia de IA",{"text":132,"config":133},"Explore a nossa plataforma",{"href":134,"dataGaName":127,"dataGaLocation":107},"/pt-br/platform/",{"title":136,"description":137,"link":138},"GitLab Duo (IA)","Crie software mais rapidamente com a IA em todas as etapas de desenvolvimento",{"text":139,"config":140},"Conheça o GitLab Duo",{"href":141,"dataGaName":142,"dataGaLocation":107},"/pt-br/gitlab-duo/","gitlab duo ai",{"title":144,"description":145,"link":146},"Por que usar o GitLab","Dez razões pelas quais as empresas escolhem o GitLab",{"text":147,"config":148},"Saiba mais",{"href":149,"dataGaName":150,"dataGaLocation":107},"/pt-br/why-gitlab/","why gitlab",{"title":152,"items":153},"Comece a usar",[154,159,164],{"text":155,"config":156},"Engenharia de plataforma",{"href":157,"dataGaName":158,"dataGaLocation":107},"/pt-br/solutions/platform-engineering/","platform engineering",{"text":160,"config":161},"Experiência do desenvolvedor",{"href":162,"dataGaName":163,"dataGaLocation":107},"/pt-br/developer-experience/","Developer experience",{"text":165,"config":166},"MLOps",{"href":167,"dataGaName":165,"dataGaLocation":107},"/pt-br/topics/devops/the-role-of-ai-in-devops/",{"text":169,"left":12,"config":170,"link":172,"lists":176,"footer":247},"Produtos",{"dataNavLevelOne":171},"solutions",{"text":173,"config":174},"Confira todas as soluções",{"href":175,"dataGaName":171,"dataGaLocation":107},"/pt-br/solutions/",[177,203,225],{"title":178,"description":179,"link":180,"items":185},"Automação","CI/CD e automação para acelerar a implantação",{"config":181},{"icon":182,"href":183,"dataGaName":184,"dataGaLocation":107},"AutomatedCodeAlt","/pt-br/solutions/delivery-automation/","automated software delivery",[186,190,194,199],{"text":187,"config":188},"CI/CD",{"href":189,"dataGaLocation":107,"dataGaName":187},"/pt-br/solutions/continuous-integration/",{"text":191,"config":192},"Desenvolvimento auxiliado por IA",{"href":141,"dataGaLocation":107,"dataGaName":193},"AI assisted development",{"text":195,"config":196},"Gerenciamento de código-fonte",{"href":197,"dataGaLocation":107,"dataGaName":198},"/pt-br/solutions/source-code-management/","Source Code Management",{"text":200,"config":201},"Entrega de software automatizada",{"href":183,"dataGaLocation":107,"dataGaName":202},"Automated software delivery",{"title":204,"description":205,"link":206,"items":211},"Segurança","Acelere a entrega de código sem comprometer a segurança",{"config":207},{"href":208,"dataGaName":209,"dataGaLocation":107,"icon":210},"/pt-br/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[212,216,221],{"text":213,"config":214},"Application Security Testing",{"href":208,"dataGaName":215,"dataGaLocation":107},"Application security testing",{"text":217,"config":218},"Segurança da cadeia de suprimentos de software",{"href":219,"dataGaLocation":107,"dataGaName":220},"/pt-br/solutions/supply-chain/","Software supply chain security",{"text":222,"config":223},"Software Compliance",{"href":224,"dataGaName":222,"dataGaLocation":107},"/pt-br/solutions/software-compliance/",{"title":226,"link":227,"items":232},"Medição",{"config":228},{"icon":229,"href":230,"dataGaName":231,"dataGaLocation":107},"DigitalTransformation","/pt-br/solutions/visibility-measurement/","visibility and measurement",[233,237,242],{"text":234,"config":235},"Visibilidade e medição",{"href":230,"dataGaLocation":107,"dataGaName":236},"Visibility and Measurement",{"text":238,"config":239},"Gestão de fluxo de valor",{"href":240,"dataGaLocation":107,"dataGaName":241},"/pt-br/solutions/value-stream-management/","Value Stream Management",{"text":243,"config":244},"Análises e insights",{"href":245,"dataGaLocation":107,"dataGaName":246},"/pt-br/solutions/analytics-and-insights/","Analytics and insights",{"title":248,"items":249},"GitLab para",[250,255,260],{"text":251,"config":252},"Grandes empresas",{"href":253,"dataGaLocation":107,"dataGaName":254},"/pt-br/enterprise/","enterprise",{"text":256,"config":257},"Pequenas empresas",{"href":258,"dataGaLocation":107,"dataGaName":259},"/pt-br/small-business/","small business",{"text":261,"config":262},"Setor público",{"href":263,"dataGaLocation":107,"dataGaName":264},"/pt-br/solutions/public-sector/","public sector",{"text":266,"config":267},"Preços",{"href":268,"dataGaName":269,"dataGaLocation":107,"dataNavLevelOne":269},"/pt-br/pricing/","pricing",{"text":271,"config":272,"link":274,"lists":278,"feature":362},"Recursos",{"dataNavLevelOne":273},"resources",{"text":275,"config":276},"Confira todos os recursos",{"href":277,"dataGaName":273,"dataGaLocation":107},"/pt-br/resources/",[279,311,334],{"title":280,"items":281},"Primeiros passos",[282,287,292,296,301,306],{"text":283,"config":284},"Instalação",{"href":285,"dataGaName":286,"dataGaLocation":107},"/pt-br/install/","install",{"text":288,"config":289},"Guias de início rápido",{"href":290,"dataGaName":291,"dataGaLocation":107},"/pt-br/get-started/","quick setup checklists",{"text":147,"config":293},{"href":294,"dataGaLocation":107,"dataGaName":295},"https://university.gitlab.com/","learn",{"text":297,"config":298},"Documentação do produto",{"href":299,"dataGaName":300,"dataGaLocation":107},"https://docs.gitlab.com/","product documentation",{"text":302,"config":303},"Vídeos de melhores práticas",{"href":304,"dataGaName":305,"dataGaLocation":107},"/pt-br/getting-started-videos/","best practice videos",{"text":307,"config":308},"Integrações",{"href":309,"dataGaName":310,"dataGaLocation":107},"/pt-br/integrations/","integrations",{"title":312,"items":313},"Descubra",[314,319,324,329],{"text":315,"config":316},"Histórias de sucesso de clientes",{"href":317,"dataGaName":318,"dataGaLocation":107},"/pt-br/customers/","customer success stories",{"text":320,"config":321},"Blog",{"href":322,"dataGaName":323,"dataGaLocation":107},"/blog/","blog",{"text":325,"config":326},"Trabalho remoto",{"href":327,"dataGaName":328,"dataGaLocation":107},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":330,"config":331},"TeamOps",{"href":332,"dataGaName":333,"dataGaLocation":107},"/pt-br/teamops/","teamops",{"title":335,"items":336},"Conecte-se",[337,342,347,352,357],{"text":338,"config":339},"Serviços do GitLab",{"href":340,"dataGaName":341,"dataGaLocation":107},"/pt-br/services/","services",{"text":343,"config":344},"Comunidade",{"href":345,"dataGaName":346,"dataGaLocation":107},"/community/","community",{"text":348,"config":349},"Fórum",{"href":350,"dataGaName":351,"dataGaLocation":107},"https://forum.gitlab.com/","forum",{"text":353,"config":354},"Eventos",{"href":355,"dataGaName":356,"dataGaLocation":107},"/events/","events",{"text":358,"config":359},"Parceiros",{"href":360,"dataGaName":361,"dataGaLocation":107},"/pt-br/partners/","partners",{"backgroundColor":363,"textColor":364,"text":365,"image":366,"link":370},"#2f2a6b","#fff","Insights para o futuro do desenvolvimento de software",{"altText":367,"config":368},"cartão promocional do The Source",{"src":369},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":371,"config":372},"Confira as novidades",{"href":373,"dataGaName":374,"dataGaLocation":107},"/pt-br/the-source/","the source",{"text":376,"config":377,"lists":379},"Empresa",{"dataNavLevelOne":378},"company",[380],{"items":381},[382,387,393,395,400,405,410,415,420,425,430],{"text":383,"config":384},"Sobre",{"href":385,"dataGaName":386,"dataGaLocation":107},"/pt-br/company/","about",{"text":388,"config":389,"footerGa":392},"Vagas",{"href":390,"dataGaName":391,"dataGaLocation":107},"/jobs/","jobs",{"dataGaName":391},{"text":353,"config":394},{"href":355,"dataGaName":356,"dataGaLocation":107},{"text":396,"config":397},"Liderança",{"href":398,"dataGaName":399,"dataGaLocation":107},"/company/team/e-group/","leadership",{"text":401,"config":402},"Equipe",{"href":403,"dataGaName":404,"dataGaLocation":107},"/company/team/","team",{"text":406,"config":407},"Manual",{"href":408,"dataGaName":409,"dataGaLocation":107},"https://handbook.gitlab.com/","handbook",{"text":411,"config":412},"Relacionamento com investidores",{"href":413,"dataGaName":414,"dataGaLocation":107},"https://ir.gitlab.com/","investor relations",{"text":416,"config":417},"Trust Center",{"href":418,"dataGaName":419,"dataGaLocation":107},"/pt-br/security/","trust center",{"text":421,"config":422},"AI Transparency Center",{"href":423,"dataGaName":424,"dataGaLocation":107},"/pt-br/ai-transparency-center/","ai transparency center",{"text":426,"config":427},"Boletim informativo",{"href":428,"dataGaName":429,"dataGaLocation":107},"/company/contact/","newsletter",{"text":431,"config":432},"Imprensa",{"href":433,"dataGaName":434,"dataGaLocation":107},"/press/","press",{"text":436,"config":437,"lists":438},"Fale com a gente",{"dataNavLevelOne":378},[439],{"items":440},[441,444,449],{"text":114,"config":442},{"href":116,"dataGaName":443,"dataGaLocation":107},"talk to sales",{"text":445,"config":446},"Ajuda",{"href":447,"dataGaName":448,"dataGaLocation":107},"/support/","get help",{"text":450,"config":451},"Portal de clientes",{"href":452,"dataGaName":453,"dataGaLocation":107},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":455,"login":456,"suggestions":463},"Fechar",{"text":457,"link":458},"Para pesquisar repositórios e projetos, faça login em",{"text":459,"config":460},"gitlab.com",{"href":121,"dataGaName":461,"dataGaLocation":462},"search login","search",{"text":464,"default":465},"Sugestões",[466,469,474,476,481,486],{"text":136,"config":467},{"href":141,"dataGaName":468,"dataGaLocation":462},"GitLab Duo (AI)",{"text":470,"config":471},"Sugestões de Código (IA)",{"href":472,"dataGaName":473,"dataGaLocation":462},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":187,"config":475},{"href":189,"dataGaName":187,"dataGaLocation":462},{"text":477,"config":478},"GitLab na AWS",{"href":479,"dataGaName":480,"dataGaLocation":462},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":482,"config":483},"GitLab no Google Cloud",{"href":484,"dataGaName":485,"dataGaLocation":462},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":487,"config":488},"Por que escolher o GitLab?",{"href":149,"dataGaName":489,"dataGaLocation":462},"Why GitLab?",{"freeTrial":491,"mobileIcon":496,"desktopIcon":501},{"text":492,"config":493},"Iniciar avaliação gratuita",{"href":494,"dataGaName":112,"dataGaLocation":495},"https://gitlab.com/-/trials/new/","nav",{"altText":497,"config":498},"Ícone do GitLab",{"src":499,"dataGaName":500,"dataGaLocation":495},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":497,"config":502},{"src":503,"dataGaName":500,"dataGaLocation":495},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":505,"mobileIcon":509,"desktopIcon":511},{"text":506,"config":507},"Saiba mais sobre o GitLab Duo",{"href":141,"dataGaName":508,"dataGaLocation":495},"gitlab duo",{"altText":497,"config":510},{"src":499,"dataGaName":500,"dataGaLocation":495},{"altText":497,"config":512},{"src":503,"dataGaName":500,"dataGaLocation":495},"content:shared:pt-br:main-navigation.yml","Main Navigation","shared/pt-br/main-navigation.yml","shared/pt-br/main-navigation",{"_path":518,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"title":519,"button":520,"config":525,"_id":527,"_type":94,"_source":95,"_file":528,"_stem":529,"_extension":98},"/shared/pt-br/banner","A GitLab Duo Agent Platform está agora em beta público!",{"text":521,"config":522},"Experimente o Beta",{"href":523,"dataGaName":524,"dataGaLocation":107},"/pt-br/gitlab-duo/agent-platform/","duo banner",{"layout":526},"release","content:shared:pt-br:banner.yml","shared/pt-br/banner.yml","shared/pt-br/banner",{"_path":531,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"data":532,"_id":731,"_type":94,"title":732,"_source":95,"_file":733,"_stem":734,"_extension":98},"/shared/pt-br/main-footer",{"text":533,"source":534,"edit":540,"contribute":545,"config":550,"items":555,"minimal":723},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":535,"config":536},"Acessar a origem da página",{"href":537,"dataGaName":538,"dataGaLocation":539},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":541,"config":542},"Editar esta página",{"href":543,"dataGaName":544,"dataGaLocation":539},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":546,"config":547},"Contribua",{"href":548,"dataGaName":549,"dataGaLocation":539},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":551,"facebook":552,"youtube":553,"linkedin":554},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[556,579,631,660,694],{"title":125,"links":557,"subMenu":562},[558],{"text":559,"config":560},"Plataforma DevSecOps",{"href":134,"dataGaName":561,"dataGaLocation":539},"devsecops platform",[563],{"title":266,"links":564},[565,569,574],{"text":566,"config":567},"Confira os planos",{"href":268,"dataGaName":568,"dataGaLocation":539},"view plans",{"text":570,"config":571},"Por que escolher o GitLab Premium?",{"href":572,"dataGaName":573,"dataGaLocation":539},"/pt-br/pricing/premium/","why premium",{"text":575,"config":576},"Por que escolher o GitLab Ultimate?",{"href":577,"dataGaName":578,"dataGaLocation":539},"/pt-br/pricing/ultimate/","why ultimate",{"title":580,"links":581},"Soluções",[582,587,590,592,597,602,606,609,612,615,617,619,621,626],{"text":583,"config":584},"Transformação digital",{"href":585,"dataGaName":586,"dataGaLocation":539},"/pt-br/topics/digital-transformation/","digital transformation",{"text":588,"config":589},"Segurança e conformidade",{"href":208,"dataGaName":215,"dataGaLocation":539},{"text":200,"config":591},{"href":183,"dataGaName":184,"dataGaLocation":539},{"text":593,"config":594},"Desenvolvimento ágil",{"href":595,"dataGaName":596,"dataGaLocation":539},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":598,"config":599},"Migração para a nuvem",{"href":600,"dataGaName":601,"dataGaLocation":539},"/pt-br/topics/cloud-native/","cloud transformation",{"text":603,"config":604},"SCM",{"href":197,"dataGaName":605,"dataGaLocation":539},"source code management",{"text":187,"config":607},{"href":189,"dataGaName":608,"dataGaLocation":539},"continuous integration & delivery",{"text":238,"config":610},{"href":240,"dataGaName":611,"dataGaLocation":539},"value stream management",{"text":23,"config":613},{"href":614,"dataGaName":5,"dataGaLocation":539},"/pt-br/solutions/gitops/",{"text":251,"config":616},{"href":253,"dataGaName":254,"dataGaLocation":539},{"text":256,"config":618},{"href":258,"dataGaName":259,"dataGaLocation":539},{"text":261,"config":620},{"href":263,"dataGaName":264,"dataGaLocation":539},{"text":622,"config":623},"Educação",{"href":624,"dataGaName":625,"dataGaLocation":539},"/pt-br/solutions/education/","education",{"text":627,"config":628},"Serviços financeiros",{"href":629,"dataGaName":630,"dataGaLocation":539},"/pt-br/solutions/finance/","financial services",{"title":271,"links":632},[633,635,637,639,642,644,646,648,650,652,654,656,658],{"text":283,"config":634},{"href":285,"dataGaName":286,"dataGaLocation":539},{"text":288,"config":636},{"href":290,"dataGaName":291,"dataGaLocation":539},{"text":147,"config":638},{"href":294,"dataGaName":295,"dataGaLocation":539},{"text":297,"config":640},{"href":299,"dataGaName":641,"dataGaLocation":539},"docs",{"text":320,"config":643},{"href":322,"dataGaName":323,"dataGaLocation":539},{"text":315,"config":645},{"href":317,"dataGaName":318,"dataGaLocation":539},{"text":325,"config":647},{"href":327,"dataGaName":328,"dataGaLocation":539},{"text":338,"config":649},{"href":340,"dataGaName":341,"dataGaLocation":539},{"text":330,"config":651},{"href":332,"dataGaName":333,"dataGaLocation":539},{"text":343,"config":653},{"href":345,"dataGaName":346,"dataGaLocation":539},{"text":348,"config":655},{"href":350,"dataGaName":351,"dataGaLocation":539},{"text":353,"config":657},{"href":355,"dataGaName":356,"dataGaLocation":539},{"text":358,"config":659},{"href":360,"dataGaName":361,"dataGaLocation":539},{"title":376,"links":661},[662,664,666,668,670,672,674,678,683,685,687,689],{"text":383,"config":663},{"href":385,"dataGaName":378,"dataGaLocation":539},{"text":388,"config":665},{"href":390,"dataGaName":391,"dataGaLocation":539},{"text":396,"config":667},{"href":398,"dataGaName":399,"dataGaLocation":539},{"text":401,"config":669},{"href":403,"dataGaName":404,"dataGaLocation":539},{"text":406,"config":671},{"href":408,"dataGaName":409,"dataGaLocation":539},{"text":411,"config":673},{"href":413,"dataGaName":414,"dataGaLocation":539},{"text":675,"config":676},"Sustainability",{"href":677,"dataGaName":675,"dataGaLocation":539},"/sustainability/",{"text":679,"config":680},"Diversidade, inclusão e pertencimento (DIB)",{"href":681,"dataGaName":682,"dataGaLocation":539},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":416,"config":684},{"href":418,"dataGaName":419,"dataGaLocation":539},{"text":426,"config":686},{"href":428,"dataGaName":429,"dataGaLocation":539},{"text":431,"config":688},{"href":433,"dataGaName":434,"dataGaLocation":539},{"text":690,"config":691},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":692,"dataGaName":693,"dataGaLocation":539},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":436,"links":695},[696,699,701,703,708,713,718],{"text":697,"config":698},"Fale com um especialista",{"href":116,"dataGaName":117,"dataGaLocation":539},{"text":445,"config":700},{"href":447,"dataGaName":448,"dataGaLocation":539},{"text":450,"config":702},{"href":452,"dataGaName":453,"dataGaLocation":539},{"text":704,"config":705},"Status",{"href":706,"dataGaName":707,"dataGaLocation":539},"https://status.gitlab.com/","status",{"text":709,"config":710},"Termos de uso",{"href":711,"dataGaName":712,"dataGaLocation":539},"/terms/","terms of use",{"text":714,"config":715},"Aviso de Privacidade",{"href":716,"dataGaName":717,"dataGaLocation":539},"/pt-br/privacy/","privacy statement",{"text":719,"config":720},"Preferências de cookies",{"dataGaName":721,"dataGaLocation":539,"id":722,"isOneTrustButton":12},"cookie preferences","ot-sdk-btn",{"items":724},[725,727,729],{"text":709,"config":726},{"href":711,"dataGaName":712,"dataGaLocation":539},{"text":714,"config":728},{"href":716,"dataGaName":717,"dataGaLocation":539},{"text":719,"config":730},{"dataGaName":721,"dataGaLocation":539,"id":722,"isOneTrustButton":12},"content:shared:pt-br:main-footer.yml","Main Footer","shared/pt-br/main-footer.yml","shared/pt-br/main-footer",{"_path":736,"_dir":101,"_draft":6,"_partial":6,"_locale":7,"header":737,"eyebrow":738,"blurb":739,"button":740,"secondaryButton":744,"_id":746,"_type":94,"title":747,"_source":95,"_file":748,"_stem":749,"_extension":98},"/shared/pt-br/next-steps","Comece a entregar software melhor, mais rapidamente","Mais de 50% das empresas Fortune 100 confiam no GitLab","Descubra o que sua equipe pode fazer com a\n\n\nplataforma DevSecOps inteligente.\n",{"text":109,"config":741},{"href":742,"dataGaName":112,"dataGaLocation":743},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":114,"config":745},{"href":116,"dataGaName":117,"dataGaLocation":743},"content:shared:pt-br:next-steps.yml","Next Steps","shared/pt-br/next-steps.yml","shared/pt-br/next-steps",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":751,"content":753,"_id":93,"_type":94,"title":7,"_source":95,"_file":96,"_stem":97,"_extension":98},{"title":9,"description":10,"config":752},{"ignoreTitleCharLimit":12},[754,762,765,798],{"type":15,"componentName":15,"componentContent":755},{"crumbs":756},[757,759,761],{"title":19,"config":758},{"href":21},{"title":23,"config":760},{"href":25},{"title":27},{"type":29,"componentName":29,"componentContent":763},{"title":9,"text":31,"config":764},{"id":33,"twoColumns":6},{"type":35,"componentName":35,"componentContent":766},{"anchors":767,"components":779},{"text":38,"data":768},[769,771,773,775,777],{"text":41,"config":770},{"href":43},{"text":45,"config":772},{"href":47},{"text":49,"config":774},{"href":51},{"text":53,"config":776},{"href":55},{"text":57,"config":778},{"href":59},[780,783,786,789,792,795],{"type":62,"componentName":62,"componentContent":781},{"text":64,"config":782},{"id":7},{"type":62,"componentName":62,"componentContent":784},{"header":41,"text":68,"config":785},{"id":70},{"type":62,"componentName":62,"componentContent":787},{"header":45,"text":73,"config":788},{"id":75},{"type":62,"componentName":62,"componentContent":790},{"header":49,"text":78,"config":791},{"id":80},{"type":62,"componentName":62,"componentContent":793},{"header":53,"text":83,"config":794},{"id":85},{"type":62,"componentName":62,"componentContent":796},{"header":57,"text":88,"config":797},{"id":90},{"type":92,"componentName":92},1761814473671]