[{"data":1,"prerenderedAt":723},["ShallowReactive",2],{"/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code":3,"navigation-pt-br":98,"banner-pt-br":501,"footer-pt-br":511,"next-steps-pt-br":713},{"id":4,"title":5,"body":6,"category":6,"config":6,"content":7,"description":6,"extension":89,"meta":90,"navigation":91,"path":92,"seo":93,"slug":6,"stem":96,"testContent":6,"type":6,"__hash__":97},"pages/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code/index.yml","",null,[8,22,30,87],{"type":9,"componentName":9,"componentContent":10},"CommonBreadcrumbs",{"crumbs":11},[12,16,20],{"title":13,"config":14},"Industry topics",{"href":15},"/topics/",{"title":17,"config":18},"GitOps",{"href":19},"/pt-br/topics/gitops/",{"title":21},"Gitlab enables infrastructure as code",{"type":23,"componentName":23,"componentContent":24},"CommonArticleHero",{"title":25,"text":26,"config":27},"Como as equipes usam o GitLab e o Terraform para implantar infraestrutura como código: uma demonstração","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":28,"twoColumns":29},"como-as-equipes-usam-o-gitlab-e-o-terraform-para-implantar-infraestrutura-como-código:-uma-demonstração",false,{"type":31,"componentName":31,"componentContent":32},"CommonSideNavigationWithTree",{"anchors":33,"components":56},{"text":34,"data":35},"Mais informações sobre este tópico",[36,40,44,48,52],{"text":37,"config":38},"Saiba como o GitLab permite implantar a infraestrutura como código",{"href":39},"#learn-how-git-lab-enables-infrastructure-as-code",{"text":41,"config":42},"Criação da infraestrutura como código no GitLab",{"href":43},"#building-your-infrastructure-as-code-in-git-lab",{"text":45,"config":46},"Dentro do subgrupo de infraestrutura",{"href":47},"#inside-the-infrastructure-subgroup",{"text":49,"config":50},"Implantação do código usando o GitLab CI",{"href":51},"#deploying-code-using-git-lab-ci",{"text":53,"config":54},"Quer saber mais sobre o GitOps?",{"href":55},"#ready-to-learn-more-about-git-ops",[57,62,67,72,77,82],{"type":58,"componentName":58,"componentContent":59},"TopicsCopy",{"text":60,"config":61},"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":5},{"type":58,"componentName":58,"componentContent":63},{"header":37,"text":64,"config":65},"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":66},"learn-how-git-lab-enables-infrastructure-as-code",{"type":58,"componentName":58,"componentContent":68},{"header":41,"text":69,"config":70},"### 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":71},"building-your-infrastructure-as-code-in-git-lab",{"type":58,"componentName":58,"componentContent":73},{"header":45,"text":74,"config":75},"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```shell\nterraform {\n  backend \"remote\" {\n    hostname     = \"app.terraform.io\"\n    organization = \"gitops-demo\"\n    workspaces {\n      name = \"aws\"\n    }\n  }\n}\n\n```\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```text\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\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```text\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\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":76},"inside-the-infrastructure-subgroup",{"type":58,"componentName":58,"componentContent":78},{"header":49,"text":79,"config":80},"### 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```yaml\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\nA próxima etapa é validar se tudo está correto.\n\n```yaml\nvalidate:\n  stage: validate\n  script:\n    - terraform validate\n    - terraform fmt -check=true\n  only:\n    - branches\n```\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```text\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\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":81},"deploying-code-using-git-lab-ci",{"type":58,"componentName":58,"componentContent":83},{"header":53,"text":84,"config":85},"* [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":86},"ready-to-learn-more-about-git-ops",{"type":88,"componentName":88},"CommonNextSteps","yml",{},true,"/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code",{"title":25,"description":94,"config":95},"GitLab Topics | How teams use GitLab and Terraform for infrastructure as code: A demo",{"ignoreTitleCharLimit":91},"pt-br/topics/gitops/gitlab-enables-infrastructure-as-code/index","NkGMrOXsr8CoMURP71qGRJmOnZJh1FFmDySNMqw4-VM",{"data":99},{"logo":100,"freeTrial":105,"sales":110,"login":115,"items":120,"search":428,"minimal":463,"duo":481,"pricingDeployment":491},{"config":101},{"href":102,"dataGaName":103,"dataGaLocation":104},"/pt-br/","gitlab logo","header",{"text":106,"config":107},"Faça uma avaliação gratuita",{"href":108,"dataGaName":109,"dataGaLocation":104},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":111,"config":112},"Fale com a equipe de vendas",{"href":113,"dataGaName":114,"dataGaLocation":104},"/pt-br/sales/","sales",{"text":116,"config":117},"Fazer login",{"href":118,"dataGaName":119,"dataGaLocation":104},"https://gitlab.com/users/sign_in/","sign in",[121,148,244,249,349,409],{"text":122,"config":123,"cards":125},"Plataforma",{"dataNavLevelOne":124},"platform",[126,132,140],{"title":122,"description":127,"link":128},"A plataforma de orquestração inteligente para DevSecOps",{"text":129,"config":130},"Explore a nossa plataforma",{"href":131,"dataGaName":124,"dataGaLocation":104},"/pt-br/platform/",{"title":133,"description":134,"link":135},"GitLab Duo Agent Platform","IA agentiva para todo o ciclo de vida do software",{"text":136,"config":137},"Conheça o GitLab Duo",{"href":138,"dataGaName":139,"dataGaLocation":104},"/pt-br/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":141,"description":142,"link":143},"Por que usar o GitLab","Veja os principais motivos pelos quais as empresas escolhem o GitLab",{"text":144,"config":145},"Saiba mais",{"href":146,"dataGaName":147,"dataGaLocation":104},"/pt-br/why-gitlab/","why gitlab",{"text":149,"left":91,"config":150,"link":152,"lists":156,"footer":226},"Produtos",{"dataNavLevelOne":151},"solutions",{"text":153,"config":154},"Confira todas as soluções",{"href":155,"dataGaName":151,"dataGaLocation":104},"/pt-br/solutions/",[157,182,204],{"title":158,"description":159,"link":160,"items":165},"Automação","CI/CD e automação para acelerar a implantação",{"config":161},{"icon":162,"href":163,"dataGaName":164,"dataGaLocation":104},"AutomatedCodeAlt","/pt-br/solutions/delivery-automation/","automated software delivery",[166,170,173,178],{"text":167,"config":168},"CI/CD",{"href":169,"dataGaLocation":104,"dataGaName":167},"/pt-br/solutions/continuous-integration/",{"text":133,"config":171},{"href":138,"dataGaLocation":104,"dataGaName":172},"gitlab duo agent platform - product menu",{"text":174,"config":175},"Gerenciamento de código-fonte",{"href":176,"dataGaLocation":104,"dataGaName":177},"/pt-br/solutions/source-code-management/","Source Code Management",{"text":179,"config":180},"Entrega de software automatizada",{"href":163,"dataGaLocation":104,"dataGaName":181},"Automated software delivery",{"title":183,"description":184,"link":185,"items":190},"Segurança","Acelere a entrega de código sem comprometer a segurança",{"config":186},{"href":187,"dataGaName":188,"dataGaLocation":104,"icon":189},"/pt-br/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[191,195,200],{"text":192,"config":193},"Application Security Testing",{"href":187,"dataGaName":194,"dataGaLocation":104},"Application security testing",{"text":196,"config":197},"Segurança da cadeia de suprimentos de software",{"href":198,"dataGaLocation":104,"dataGaName":199},"/pt-br/solutions/supply-chain/","Software supply chain security",{"text":201,"config":202},"Software Compliance",{"href":203,"dataGaName":201,"dataGaLocation":104},"/pt-br/solutions/software-compliance/",{"title":205,"link":206,"items":211},"Medição",{"config":207},{"icon":208,"href":209,"dataGaName":210,"dataGaLocation":104},"DigitalTransformation","/pt-br/solutions/visibility-measurement/","visibility and measurement",[212,216,221],{"text":213,"config":214},"Visibilidade e medição",{"href":209,"dataGaLocation":104,"dataGaName":215},"Visibility and Measurement",{"text":217,"config":218},"Gestão de fluxo de valor",{"href":219,"dataGaLocation":104,"dataGaName":220},"/pt-br/solutions/value-stream-management/","Value Stream Management",{"text":222,"config":223},"Análises e insights",{"href":224,"dataGaLocation":104,"dataGaName":225},"/pt-br/solutions/analytics-and-insights/","Analytics and insights",{"title":227,"items":228},"GitLab para",[229,234,239],{"text":230,"config":231},"Grandes empresas",{"href":232,"dataGaLocation":104,"dataGaName":233},"/pt-br/enterprise/","enterprise",{"text":235,"config":236},"Pequenas empresas",{"href":237,"dataGaLocation":104,"dataGaName":238},"/pt-br/small-business/","small business",{"text":240,"config":241},"Setor público",{"href":242,"dataGaLocation":104,"dataGaName":243},"/pt-br/solutions/public-sector/","public sector",{"text":245,"config":246},"Preços",{"href":247,"dataGaName":248,"dataGaLocation":104,"dataNavLevelOne":248},"/pt-br/pricing/","pricing",{"text":250,"config":251,"link":253,"lists":257,"feature":336},"Recursos",{"dataNavLevelOne":252},"resources",{"text":254,"config":255},"Confira todos os recursos",{"href":256,"dataGaName":252,"dataGaLocation":104},"/pt-br/resources/",[258,290,308],{"title":259,"items":260},"Primeiros passos",[261,266,271,275,280,285],{"text":262,"config":263},"Instalação",{"href":264,"dataGaName":265,"dataGaLocation":104},"/pt-br/install/","install",{"text":267,"config":268},"Guias de início rápido",{"href":269,"dataGaName":270,"dataGaLocation":104},"/pt-br/get-started/","quick setup checklists",{"text":144,"config":272},{"href":273,"dataGaLocation":104,"dataGaName":274},"https://university.gitlab.com/","learn",{"text":276,"config":277},"Documentação do produto",{"href":278,"dataGaName":279,"dataGaLocation":104},"https://docs.gitlab.com/","product documentation",{"text":281,"config":282},"Vídeos de melhores práticas",{"href":283,"dataGaName":284,"dataGaLocation":104},"/pt-br/getting-started-videos/","best practice videos",{"text":286,"config":287},"Integrações",{"href":288,"dataGaName":289,"dataGaLocation":104},"/pt-br/integrations/","integrations",{"title":291,"items":292},"Descubra",[293,298,303],{"text":294,"config":295},"Histórias de sucesso de clientes",{"href":296,"dataGaName":297,"dataGaLocation":104},"/pt-br/customers/","customer success stories",{"text":299,"config":300},"Blog",{"href":301,"dataGaName":302,"dataGaLocation":104},"/blog/","blog",{"text":304,"config":305},"Trabalho remoto",{"href":306,"dataGaName":307,"dataGaLocation":104},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":309,"items":310},"Conecte-se",[311,316,321,326,331],{"text":312,"config":313},"Serviços do GitLab",{"href":314,"dataGaName":315,"dataGaLocation":104},"/pt-br/services/","services",{"text":317,"config":318},"Comunidade",{"href":319,"dataGaName":320,"dataGaLocation":104},"/community/","community",{"text":322,"config":323},"Fórum",{"href":324,"dataGaName":325,"dataGaLocation":104},"https://forum.gitlab.com/","forum",{"text":327,"config":328},"Eventos",{"href":329,"dataGaName":330,"dataGaLocation":104},"/events/","events",{"text":332,"config":333},"Parceiros",{"href":334,"dataGaName":335,"dataGaLocation":104},"/pt-br/partners/","partners",{"backgroundColor":337,"textColor":338,"text":339,"image":340,"link":344},"#2f2a6b","#fff","Insights para o futuro do desenvolvimento de software",{"altText":341,"config":342},"cartão promocional do The Source",{"src":343},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":345,"config":346},"Confira as novidades",{"href":347,"dataGaName":348,"dataGaLocation":104},"/pt-br/the-source/","the source",{"text":350,"config":351,"lists":353},"Empresa",{"dataNavLevelOne":352},"company",[354],{"items":355},[356,361,367,369,374,379,384,389,394,399,404],{"text":357,"config":358},"Sobre",{"href":359,"dataGaName":360,"dataGaLocation":104},"/pt-br/company/","about",{"text":362,"config":363,"footerGa":366},"Vagas",{"href":364,"dataGaName":365,"dataGaLocation":104},"/jobs/","jobs",{"dataGaName":365},{"text":327,"config":368},{"href":329,"dataGaName":330,"dataGaLocation":104},{"text":370,"config":371},"Liderança",{"href":372,"dataGaName":373,"dataGaLocation":104},"/company/team/e-group/","leadership",{"text":375,"config":376},"Equipe",{"href":377,"dataGaName":378,"dataGaLocation":104},"/company/team/","team",{"text":380,"config":381},"Manual",{"href":382,"dataGaName":383,"dataGaLocation":104},"https://handbook.gitlab.com/","handbook",{"text":385,"config":386},"Relacionamento com investidores",{"href":387,"dataGaName":388,"dataGaLocation":104},"https://ir.gitlab.com/","investor relations",{"text":390,"config":391},"Trust Center",{"href":392,"dataGaName":393,"dataGaLocation":104},"/pt-br/security/","trust center",{"text":395,"config":396},"AI Transparency Center",{"href":397,"dataGaName":398,"dataGaLocation":104},"/pt-br/ai-transparency-center/","ai transparency center",{"text":400,"config":401},"Boletim informativo",{"href":402,"dataGaName":403,"dataGaLocation":104},"/company/contact/#contact-forms","newsletter",{"text":405,"config":406},"Imprensa",{"href":407,"dataGaName":408,"dataGaLocation":104},"/press/","press",{"text":410,"config":411,"lists":412},"Fale com a gente",{"dataNavLevelOne":352},[413],{"items":414},[415,418,423],{"text":111,"config":416},{"href":113,"dataGaName":417,"dataGaLocation":104},"talk to sales",{"text":419,"config":420},"Portal de suporte",{"href":421,"dataGaName":422,"dataGaLocation":104},"https://support.gitlab.com","support portal",{"text":424,"config":425},"Portal de clientes",{"href":426,"dataGaName":427,"dataGaLocation":104},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":429,"login":430,"suggestions":437},"Fechar",{"text":431,"link":432},"Para pesquisar repositórios e projetos, faça login em",{"text":433,"config":434},"gitlab.com",{"href":118,"dataGaName":435,"dataGaLocation":436},"search login","search",{"text":438,"default":439},"Sugestões",[440,442,447,449,454,459],{"text":133,"config":441},{"href":138,"dataGaName":133,"dataGaLocation":436},{"text":443,"config":444},"Sugestões de Código (IA)",{"href":445,"dataGaName":446,"dataGaLocation":436},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":167,"config":448},{"href":169,"dataGaName":167,"dataGaLocation":436},{"text":450,"config":451},"GitLab na AWS",{"href":452,"dataGaName":453,"dataGaLocation":436},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":455,"config":456},"GitLab no Google Cloud",{"href":457,"dataGaName":458,"dataGaLocation":436},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":460,"config":461},"Por que escolher o GitLab?",{"href":146,"dataGaName":462,"dataGaLocation":436},"Why GitLab?",{"freeTrial":464,"mobileIcon":469,"desktopIcon":474,"secondaryButton":477},{"text":465,"config":466},"Iniciar avaliação gratuita",{"href":467,"dataGaName":109,"dataGaLocation":468},"https://gitlab.com/-/trials/new/","nav",{"altText":470,"config":471},"Ícone do GitLab",{"src":472,"dataGaName":473,"dataGaLocation":468},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":470,"config":475},{"src":476,"dataGaName":473,"dataGaLocation":468},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":259,"config":478},{"href":479,"dataGaName":480,"dataGaLocation":468},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/compare/gitlab-vs-github/","get started",{"freeTrial":482,"mobileIcon":487,"desktopIcon":489},{"text":483,"config":484},"Saiba mais sobre o GitLab Duo",{"href":485,"dataGaName":486,"dataGaLocation":468},"/pt-br/gitlab-duo/","gitlab duo",{"altText":470,"config":488},{"src":472,"dataGaName":473,"dataGaLocation":468},{"altText":470,"config":490},{"src":476,"dataGaName":473,"dataGaLocation":468},{"freeTrial":492,"mobileIcon":497,"desktopIcon":499},{"text":493,"config":494},"Voltar para preços",{"href":247,"dataGaName":495,"dataGaLocation":468,"icon":496},"back to pricing","GoBack",{"altText":470,"config":498},{"src":472,"dataGaName":473,"dataGaLocation":468},{"altText":470,"config":500},{"src":476,"dataGaName":473,"dataGaLocation":468},{"title":502,"button":503,"config":508},"Veja como a IA agêntica transforma a entrega de software",{"text":504,"config":505},"Assista ao GitLab Transcend agora",{"href":506,"dataGaName":507,"dataGaLocation":104},"/pt-br/events/transcend/virtual/","transcend event",{"layout":509,"icon":510},"release","AiStar",{"data":512},{"text":513,"source":514,"edit":520,"contribute":525,"config":530,"items":535,"minimal":705},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":515,"config":516},"Acessar a origem da página",{"href":517,"dataGaName":518,"dataGaLocation":519},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":521,"config":522},"Editar esta página",{"href":523,"dataGaName":524,"dataGaLocation":519},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":526,"config":527},"Contribua",{"href":528,"dataGaName":529,"dataGaLocation":519},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":531,"facebook":532,"youtube":533,"linkedin":534},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[536,559,612,639,673],{"title":122,"links":537,"subMenu":542},[538],{"text":539,"config":540},"Plataforma DevSecOps",{"href":131,"dataGaName":541,"dataGaLocation":519},"devsecops platform",[543],{"title":245,"links":544},[545,549,554],{"text":546,"config":547},"Confira os planos",{"href":247,"dataGaName":548,"dataGaLocation":519},"view plans",{"text":550,"config":551},"Por que escolher o GitLab Premium?",{"href":552,"dataGaName":553,"dataGaLocation":519},"/pt-br/pricing/premium/","why premium",{"text":555,"config":556},"Por que escolher o GitLab Ultimate?",{"href":557,"dataGaName":558,"dataGaLocation":519},"/pt-br/pricing/ultimate/","why ultimate",{"title":560,"links":561},"Soluções",[562,567,570,572,577,582,586,589,592,596,598,600,602,607],{"text":563,"config":564},"Transformação digital",{"href":565,"dataGaName":566,"dataGaLocation":519},"/pt-br/topics/digital-transformation/","digital transformation",{"text":568,"config":569},"Segurança e conformidade",{"href":187,"dataGaName":194,"dataGaLocation":519},{"text":179,"config":571},{"href":163,"dataGaName":164,"dataGaLocation":519},{"text":573,"config":574},"Desenvolvimento ágil",{"href":575,"dataGaName":576,"dataGaLocation":519},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":578,"config":579},"Migração para a nuvem",{"href":580,"dataGaName":581,"dataGaLocation":519},"/pt-br/topics/cloud-native/","cloud transformation",{"text":583,"config":584},"SCM",{"href":176,"dataGaName":585,"dataGaLocation":519},"source code management",{"text":167,"config":587},{"href":169,"dataGaName":588,"dataGaLocation":519},"continuous integration & delivery",{"text":217,"config":590},{"href":219,"dataGaName":591,"dataGaLocation":519},"value stream management",{"text":17,"config":593},{"href":594,"dataGaName":595,"dataGaLocation":519},"/pt-br/solutions/gitops/","gitops",{"text":230,"config":597},{"href":232,"dataGaName":233,"dataGaLocation":519},{"text":235,"config":599},{"href":237,"dataGaName":238,"dataGaLocation":519},{"text":240,"config":601},{"href":242,"dataGaName":243,"dataGaLocation":519},{"text":603,"config":604},"Educação",{"href":605,"dataGaName":606,"dataGaLocation":519},"/pt-br/solutions/education/","education",{"text":608,"config":609},"Serviços financeiros",{"href":610,"dataGaName":611,"dataGaLocation":519},"/pt-br/solutions/finance/","financial services",{"title":250,"links":613},[614,616,618,620,623,625,627,629,631,633,635,637],{"text":262,"config":615},{"href":264,"dataGaName":265,"dataGaLocation":519},{"text":267,"config":617},{"href":269,"dataGaName":270,"dataGaLocation":519},{"text":144,"config":619},{"href":273,"dataGaName":274,"dataGaLocation":519},{"text":276,"config":621},{"href":278,"dataGaName":622,"dataGaLocation":519},"docs",{"text":299,"config":624},{"href":301,"dataGaName":302,"dataGaLocation":519},{"text":294,"config":626},{"href":296,"dataGaName":297,"dataGaLocation":519},{"text":304,"config":628},{"href":306,"dataGaName":307,"dataGaLocation":519},{"text":312,"config":630},{"href":314,"dataGaName":315,"dataGaLocation":519},{"text":317,"config":632},{"href":319,"dataGaName":320,"dataGaLocation":519},{"text":322,"config":634},{"href":324,"dataGaName":325,"dataGaLocation":519},{"text":327,"config":636},{"href":329,"dataGaName":330,"dataGaLocation":519},{"text":332,"config":638},{"href":334,"dataGaName":335,"dataGaLocation":519},{"title":350,"links":640},[641,643,645,647,649,651,653,657,662,664,666,668],{"text":357,"config":642},{"href":359,"dataGaName":352,"dataGaLocation":519},{"text":362,"config":644},{"href":364,"dataGaName":365,"dataGaLocation":519},{"text":370,"config":646},{"href":372,"dataGaName":373,"dataGaLocation":519},{"text":375,"config":648},{"href":377,"dataGaName":378,"dataGaLocation":519},{"text":380,"config":650},{"href":382,"dataGaName":383,"dataGaLocation":519},{"text":385,"config":652},{"href":387,"dataGaName":388,"dataGaLocation":519},{"text":654,"config":655},"Sustainability",{"href":656,"dataGaName":654,"dataGaLocation":519},"/sustainability/",{"text":658,"config":659},"Diversidade, inclusão e pertencimento (DIB)",{"href":660,"dataGaName":661,"dataGaLocation":519},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":390,"config":663},{"href":392,"dataGaName":393,"dataGaLocation":519},{"text":400,"config":665},{"href":402,"dataGaName":403,"dataGaLocation":519},{"text":405,"config":667},{"href":407,"dataGaName":408,"dataGaLocation":519},{"text":669,"config":670},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":671,"dataGaName":672,"dataGaLocation":519},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":410,"links":674},[675,678,683,685,690,695,700],{"text":676,"config":677},"Fale com um especialista",{"href":113,"dataGaName":114,"dataGaLocation":519},{"text":679,"config":680},"Ajuda",{"href":681,"dataGaName":682,"dataGaLocation":519},"/support/","get help",{"text":424,"config":684},{"href":426,"dataGaName":427,"dataGaLocation":519},{"text":686,"config":687},"Status",{"href":688,"dataGaName":689,"dataGaLocation":519},"https://status.gitlab.com/","status",{"text":691,"config":692},"Termos de uso",{"href":693,"dataGaName":694,"dataGaLocation":519},"/terms/","terms of use",{"text":696,"config":697},"Aviso de Privacidade",{"href":698,"dataGaName":699,"dataGaLocation":519},"/pt-br/privacy/","privacy statement",{"text":701,"config":702},"Preferências de cookies",{"dataGaName":703,"dataGaLocation":519,"id":704,"isOneTrustButton":91},"cookie preferences","ot-sdk-btn",{"items":706},[707,709,711],{"text":691,"config":708},{"href":693,"dataGaName":694,"dataGaLocation":519},{"text":696,"config":710},{"href":698,"dataGaName":699,"dataGaLocation":519},{"text":701,"config":712},{"dataGaName":703,"dataGaLocation":519,"id":704,"isOneTrustButton":91},{"header":714,"blurb":715,"button":716,"secondaryButton":721},"Comece a desenvolver mais rápido hoje","Veja o que sua equipe pode fazer com a plataforma de orquestração inteligente para DevSecOps.\n",{"text":717,"config":718},"Obtenha sua avaliação gratuita",{"href":719,"dataGaName":109,"dataGaLocation":720},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":111,"config":722},{"href":113,"dataGaName":114,"dataGaLocation":720},1772652112092]