[{"data":1,"prerenderedAt":786},["ShallowReactive",2],{"/pt-br/topics/gitops/gitlab-enables-infrastructure-as-code":3,"navigation-pt-br":98,"banner-pt-br":530,"footer-pt-br":538,"next-steps-pt-br":776},{"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},"/pt-br/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](/pt-br/solutions/gitops/){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","JwsMqN6DJMCgWDYkFMLTrb32M4EeSqBVsWsCWW85HKI",{"logo":99,"freeTrial":104,"sales":109,"login":114,"items":119,"search":447,"minimal":482,"duo":500,"switchNav":509,"pricingDeployment":520},{"config":100},{"href":101,"dataGaName":102,"dataGaLocation":103},"/pt-br/","gitlab logo","header",{"text":105,"config":106},"Obtenha uma avaliação gratuita",{"href":107,"dataGaName":108,"dataGaLocation":103},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br&glm_content=default-saas-trial/","free trial",{"text":110,"config":111},"Solicite uma demonstração",{"href":112,"dataGaName":113,"dataGaLocation":103},"/pt-br/sales/?contact-topic=request-demo","sales",{"text":115,"config":116},"Fazer login",{"href":117,"dataGaName":118,"dataGaLocation":103},"https://gitlab.com/users/sign_in/","sign in",[120,149,251,256,369,425],{"text":121,"config":122,"menu":124},"Plataforma",{"dataNavLevelOne":123},"platform",{"type":125,"columns":126},"cards",[127,133,141],{"title":121,"description":128,"link":129},"A plataforma de orquestração inteligente para DevSecOps",{"text":130,"config":131},"Conheça nossa plataforma",{"href":132,"dataGaName":123,"dataGaLocation":103},"/pt-br/platform/",{"title":134,"description":135,"link":136},"Plataforma de Agente do GitLab Duo","IA agêntica para todo o ciclo de vida do software",{"text":137,"config":138},"Conheça o GitLab Duo",{"href":139,"dataGaName":140,"dataGaLocation":103},"/pt-br/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":142,"description":143,"link":144},"Por que escolher o GitLab?","Saiba os principais motivos pelos quais as empresas escolhem o GitLab",{"text":145,"config":146},"Saiba mais",{"href":147,"dataGaName":148,"dataGaLocation":103},"/pt-br/why-gitlab/","why gitlab",{"text":150,"left":91,"config":151,"menu":153},"Produtos",{"dataNavLevelOne":152},"solutions",{"type":154,"link":155,"columns":159,"feature":230},"lists",{"text":156,"config":157},"Confira todas as soluções",{"href":158,"dataGaName":152,"dataGaLocation":103},"/pt-br/solutions/",[160,185,208],{"title":161,"description":162,"link":163,"items":168},"Automação","CI/CD e automação para acelerar a implantação",{"config":164},{"icon":165,"href":166,"dataGaName":167,"dataGaLocation":103},"AutomatedCodeAlt","/pt-br/solutions/delivery-automation/","automated software delivery",[169,173,176,181],{"text":170,"config":171},"CI/CD",{"href":172,"dataGaLocation":103,"dataGaName":170},"/pt-br/solutions/continuous-integration/",{"text":134,"config":174},{"href":139,"dataGaLocation":103,"dataGaName":175},"gitlab duo agent platform - product menu",{"text":177,"config":178},"Gerenciamento de código-fonte",{"href":179,"dataGaLocation":103,"dataGaName":180},"/pt-br/solutions/source-code-management/","Source Code Management",{"text":182,"config":183},"Entrega automatizada de software",{"href":166,"dataGaLocation":103,"dataGaName":184},"Automated software delivery",{"title":186,"description":187,"link":188,"items":193},"Segurança","Acelere a entrega de código sem comprometer a segurança",{"config":189},{"href":190,"dataGaName":191,"dataGaLocation":103,"icon":192},"/pt-br/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[194,198,203],{"text":195,"config":196},"Testes de segurança de aplicações",{"href":190,"dataGaName":197,"dataGaLocation":103},"Application security testing",{"text":199,"config":200},"Segurança da cadeia de suprimentos de software",{"href":201,"dataGaLocation":103,"dataGaName":202},"/pt-br/solutions/supply-chain/","Software supply chain security",{"text":204,"config":205},"Conformidade de software",{"href":206,"dataGaName":207,"dataGaLocation":103},"/pt-br/solutions/software-compliance/","software compliance",{"title":209,"link":210,"items":215},"Medição",{"config":211},{"icon":212,"href":213,"dataGaName":214,"dataGaLocation":103},"DigitalTransformation","/pt-br/solutions/visibility-measurement/","visibility and measurement",[216,220,225],{"text":217,"config":218},"Visibilidade e métricas",{"href":213,"dataGaLocation":103,"dataGaName":219},"Visibility and Measurement",{"text":221,"config":222},"Gestão de fluxo de valor do GitLab",{"href":223,"dataGaLocation":103,"dataGaName":224},"/pt-br/solutions/value-stream-management/","Value Stream Management",{"text":226,"config":227},"Análise e insights",{"href":228,"dataGaLocation":103,"dataGaName":229},"/pt-br/solutions/analytics-and-insights/","Analytics and insights",{"title":231,"type":154,"items":232},"GitLab para",[233,239,245],{"text":234,"config":235},"Enterprise",{"icon":236,"href":237,"dataGaLocation":103,"dataGaName":238},"Building","/pt-br/enterprise/","enterprise",{"text":240,"config":241},"Pequenas empresas",{"icon":242,"href":243,"dataGaLocation":103,"dataGaName":244},"Work","/pt-br/small-business/","small business",{"text":246,"config":247},"Setor público",{"icon":248,"href":249,"dataGaLocation":103,"dataGaName":250},"Organization","/pt-br/solutions/public-sector/","public sector",{"text":252,"config":253},"Preços",{"href":254,"dataGaName":255,"dataGaLocation":103,"dataNavLevelOne":255},"/pt-br/pricing/","pricing",{"text":257,"config":258,"menu":260},"Recursos",{"dataNavLevelOne":259},"resources",{"type":154,"link":261,"columns":265,"feature":358},{"text":262,"config":263},"Confira todos os recursos",{"href":264,"dataGaName":259,"dataGaLocation":103},"/pt-br/resources/",[266,298,325],{"title":267,"items":268},"Primeiros passos",[269,274,279,283,288,293],{"text":270,"config":271},"Instalação",{"href":272,"dataGaName":273,"dataGaLocation":103},"/pt-br/install/","install",{"text":275,"config":276},"Guias de início rápido",{"href":277,"dataGaName":278,"dataGaLocation":103},"/pt-br/get-started/","quick setup checklists",{"text":145,"config":280},{"href":281,"dataGaLocation":103,"dataGaName":282},"https://university.gitlab.com/","learn",{"text":284,"config":285},"Documentação do produto",{"href":286,"dataGaName":287,"dataGaLocation":103},"https://docs.gitlab.com/","product documentation",{"text":289,"config":290},"Vídeos de melhores práticas",{"href":291,"dataGaName":292,"dataGaLocation":103},"/pt-br/getting-started-videos/","best practice videos",{"text":294,"config":295},"Integrações",{"href":296,"dataGaName":297,"dataGaLocation":103},"/pt-br/integrations/","integrations",{"title":299,"items":300},"Descubra",[301,306,311,316,320],{"text":302,"config":303},"Histórias de sucesso de clientes",{"href":304,"dataGaName":305,"dataGaLocation":103},"/pt-br/customers/","customer success stories",{"text":307,"config":308},"Blog",{"href":309,"dataGaName":310,"dataGaLocation":103},"/blog/","blog",{"text":312,"config":313},"Demo Hub",{"href":314,"dataGaName":315,"dataGaLocation":103},"/demo-hub/","demo hub",{"text":317,"config":318},"The Source",{"href":319,"dataGaName":310,"dataGaLocation":103},"/pt-br/the-source/",{"text":321,"config":322},"Trabalho remoto",{"href":323,"dataGaName":324,"dataGaLocation":103},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":326,"items":327},"Conecte-se",[328,333,338,343,348,353],{"text":329,"config":330},"Serviços do GitLab",{"href":331,"dataGaName":332,"dataGaLocation":103},"/pt-br/services/","services",{"text":334,"config":335},"Contribua",{"href":336,"dataGaName":337,"dataGaLocation":103},"https://contributors.gitlab.com","contribute",{"text":339,"config":340},"Comunidade",{"href":341,"dataGaName":342,"dataGaLocation":103},"/community/","community",{"text":344,"config":345},"Fórum",{"href":346,"dataGaName":347,"dataGaLocation":103},"https://forum.gitlab.com/","forum",{"text":349,"config":350},"Eventos",{"href":351,"dataGaName":352,"dataGaLocation":103},"/events/","events",{"text":354,"config":355},"Parceiros",{"href":356,"dataGaName":357,"dataGaLocation":103},"/pt-br/partners/","partners",{"config":359,"title":362,"text":363,"link":364},{"background":360,"textColor":361},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Novidades no GitLab","Acompanhe as melhorias e os recursos mais recentes.",{"text":365,"config":366},"Confira as novidades",{"href":367,"dataGaName":368,"dataGaLocation":103},"/pt-br/whats-new/","whats new",{"text":370,"config":371,"menu":373},"Empresa",{"dataNavLevelOne":372},"company",{"type":154,"columns":374},[375],{"items":376},[377,382,388,390,395,400,405,410,415,420],{"text":378,"config":379},"Sobre",{"href":380,"dataGaName":381,"dataGaLocation":103},"/pt-br/company/","about",{"text":383,"config":384,"footerGa":387},"Vagas",{"href":385,"dataGaName":386,"dataGaLocation":103},"/jobs/","jobs",{"dataGaName":386},{"text":349,"config":389},{"href":351,"dataGaName":352,"dataGaLocation":103},{"text":391,"config":392},"Liderança",{"href":393,"dataGaName":394,"dataGaLocation":103},"/company/team/e-group/","leadership",{"text":396,"config":397},"Manual",{"href":398,"dataGaName":399,"dataGaLocation":103},"https://handbook.gitlab.com/","handbook",{"text":401,"config":402},"Relações com investidores",{"href":403,"dataGaName":404,"dataGaLocation":103},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":406,"config":407},"Trust Center",{"href":408,"dataGaName":409,"dataGaLocation":103},"/pt-br/security/","trust center",{"text":411,"config":412},"AI Transparency Center",{"href":413,"dataGaName":414,"dataGaLocation":103},"/pt-br/ai-transparency-center/","ai transparency center",{"text":416,"config":417},"Boletim informativo",{"href":418,"dataGaName":419,"dataGaLocation":103},"/company/contact/#contact-forms","newsletter",{"text":421,"config":422},"Imprensa",{"href":423,"dataGaName":424,"dataGaLocation":103},"/press/","press",{"text":426,"config":427,"menu":428},"Entre em contato",{"dataNavLevelOne":372},{"type":154,"columns":429},[430],{"items":431},[432,437,442],{"text":433,"config":434},"Fale com a equipe de vendas",{"href":435,"dataGaName":436,"dataGaLocation":103},"/pt-br/sales/","talk to sales",{"text":438,"config":439},"Portal de ajuda",{"href":440,"dataGaName":441,"dataGaLocation":103},"https://support.gitlab.com/hc/en-us","support portal",{"text":443,"config":444},"Portal de clientes",{"href":445,"dataGaName":446,"dataGaLocation":103},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":448,"login":449,"suggestions":456},"Fechar",{"text":450,"link":451},"Para pesquisar repositórios e projetos, faça login em",{"text":452,"config":453},"gitlab.com",{"href":117,"dataGaName":454,"dataGaLocation":455},"search login","search",{"text":457,"default":458},"Sugestões",[459,462,467,469,474,479],{"text":134,"config":460},{"href":139,"dataGaName":461,"dataGaLocation":455},"GitLab Duo Agent Platform",{"text":463,"config":464},"Sugestões de código (AI)",{"href":465,"dataGaName":466,"dataGaLocation":455},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":170,"config":468},{"href":172,"dataGaName":170,"dataGaLocation":455},{"text":470,"config":471},"GitLab na AWS",{"href":472,"dataGaName":473,"dataGaLocation":455},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":475,"config":476},"GitLab no Google Cloud",{"href":477,"dataGaName":478,"dataGaLocation":455},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":142,"config":480},{"href":147,"dataGaName":481,"dataGaLocation":455},"Why GitLab?",{"freeTrial":483,"mobileIcon":488,"desktopIcon":493,"secondaryButton":496},{"text":484,"config":485},"Iniciar avaliação gratuita",{"href":486,"dataGaName":108,"dataGaLocation":487},"https://gitlab.com/-/trials/new/","nav",{"altText":489,"config":490},"Ícone do GitLab",{"src":491,"dataGaName":492,"dataGaLocation":487},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":489,"config":494},{"src":495,"dataGaName":492,"dataGaLocation":487},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":267,"config":497},{"href":498,"dataGaName":499,"dataGaLocation":487},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":501,"mobileIcon":505,"desktopIcon":507},{"text":502,"config":503},"Saiba mais sobre o GitLab Duo",{"href":139,"dataGaName":504,"dataGaLocation":487},"gitlab duo",{"altText":489,"config":506},{"src":491,"dataGaName":492,"dataGaLocation":487},{"altText":489,"config":508},{"src":495,"dataGaName":492,"dataGaLocation":487},{"button":510,"mobileIcon":515,"desktopIcon":517},{"text":511,"config":512},"/switch",{"href":513,"dataGaName":514,"dataGaLocation":487},"#contact","switch",{"altText":489,"config":516},{"src":491,"dataGaName":492,"dataGaLocation":487},{"altText":489,"config":518},{"src":519,"dataGaName":492,"dataGaLocation":487},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":521,"mobileIcon":526,"desktopIcon":528},{"text":522,"config":523},"Voltar para preços",{"href":254,"dataGaName":524,"dataGaLocation":487,"icon":525},"back to pricing","GoBack",{"altText":489,"config":527},{"src":491,"dataGaName":492,"dataGaLocation":487},{"altText":489,"config":529},{"src":495,"dataGaName":492,"dataGaLocation":487},{"title":531,"button":532,"config":536},"GitLab Orbit chegou: a camada de contexto para agentes de IA.",{"text":145,"config":533},{"href":534,"dataGaName":535,"dataGaLocation":103},"/pt-br/gitlab-orbit/","orbit",{"layout":537,"disabled":29},"release",{"data":539},{"text":540,"source":541,"edit":547,"contribute":552,"config":556,"items":561,"minimal":766},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":542,"config":543},"Ver a origem da página",{"href":544,"dataGaName":545,"dataGaLocation":546},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":548,"config":549},"Editar esta página",{"href":550,"dataGaName":551,"dataGaLocation":546},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":334,"config":553},{"href":554,"dataGaName":555,"dataGaLocation":546},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":557,"facebook":558,"youtube":559,"linkedin":560},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[562,608,659,701,733],{"title":252,"links":563,"subMenu":578},[564,568,573],{"text":565,"config":566},"Confira os planos",{"href":254,"dataGaName":567,"dataGaLocation":546},"view plans",{"text":569,"config":570},"Por que escolher o GitLab Premium?",{"href":571,"dataGaName":572,"dataGaLocation":546},"/pt-br/pricing/premium/","why premium",{"text":574,"config":575},"Por que escolher o GitLab Ultimate?",{"href":576,"dataGaName":577,"dataGaLocation":546},"/pt-br/pricing/ultimate/","why ultimate",[579],{"title":580,"links":581},"Entre em contato conosco",[582,584,586,588,593,598,603],{"text":433,"config":583},{"href":435,"dataGaName":113,"dataGaLocation":546},{"text":438,"config":585},{"href":440,"dataGaName":441,"dataGaLocation":546},{"text":443,"config":587},{"href":445,"dataGaName":446,"dataGaLocation":546},{"text":589,"config":590},"Status",{"href":591,"dataGaName":592,"dataGaLocation":546},"https://status.gitlab.com/","status",{"text":594,"config":595},"Termos de uso",{"href":596,"dataGaName":597,"dataGaLocation":546},"/terms/","terms of use",{"text":599,"config":600},"Aviso de privacidade",{"href":601,"dataGaName":602,"dataGaLocation":546},"/pt-br/privacy/","privacy statement",{"text":604,"config":605},"Preferências de cookies",{"dataGaName":606,"dataGaLocation":546,"id":607,"isOneTrustButton":91},"cookie preferences","ot-sdk-btn",{"title":150,"links":609,"subMenu":618},[610,614],{"text":611,"config":612},"Plataforma DevSecOps",{"href":132,"dataGaName":613,"dataGaLocation":546},"devsecops platform",{"text":615,"config":616},"Desenvolvimento auxiliado por IA",{"href":139,"dataGaName":617,"dataGaLocation":546},"ai-assisted development",[619],{"title":620,"links":621},"Tópicos",[622,626,629,634,639,644,649,654],{"text":170,"config":623},{"href":624,"dataGaName":625,"dataGaLocation":546},"/pt-br/topics/ci-cd/","cicd",{"text":17,"config":627},{"href":19,"dataGaName":628,"dataGaLocation":546},"gitops",{"text":630,"config":631},"DevOps",{"href":632,"dataGaName":633,"dataGaLocation":546},"/pt-br/topics/devops/","devops",{"text":635,"config":636},"Controle de versão",{"href":637,"dataGaName":638,"dataGaLocation":546},"/pt-br/topics/version-control/","version control",{"text":640,"config":641},"DevSecOps",{"href":642,"dataGaName":643,"dataGaLocation":546},"/pt-br/topics/devsecops/","devsecops",{"text":645,"config":646},"De nuvem nativa",{"href":647,"dataGaName":648,"dataGaLocation":546},"/pt-br/topics/cloud-native/","cloud native",{"text":650,"config":651},"IA para programação",{"href":652,"dataGaName":653,"dataGaLocation":546},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":655,"config":656},"IA agêntica",{"href":657,"dataGaName":658,"dataGaLocation":546},"/pt-br/topics/agentic-ai/","agentic ai",{"title":660,"links":661},"Soluções",[662,665,667,672,676,679,682,685,687,689,691,696],{"text":195,"config":663},{"href":190,"dataGaName":664,"dataGaLocation":546},"Application Security Testing",{"text":182,"config":666},{"href":166,"dataGaName":167,"dataGaLocation":546},{"text":668,"config":669},"Desenvolvimento ágil",{"href":670,"dataGaName":671,"dataGaLocation":546},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":673,"config":674},"SCM",{"href":179,"dataGaName":675,"dataGaLocation":546},"source code management",{"text":170,"config":677},{"href":172,"dataGaName":678,"dataGaLocation":546},"continuous integration & delivery",{"text":221,"config":680},{"href":223,"dataGaName":681,"dataGaLocation":546},"value stream management",{"text":17,"config":683},{"href":684,"dataGaName":628,"dataGaLocation":546},"/pt-br/solutions/gitops/",{"text":234,"config":686},{"href":237,"dataGaName":238,"dataGaLocation":546},{"text":240,"config":688},{"href":243,"dataGaName":244,"dataGaLocation":546},{"text":246,"config":690},{"href":249,"dataGaName":250,"dataGaLocation":546},{"text":692,"config":693},"Educação",{"href":694,"dataGaName":695,"dataGaLocation":546},"/pt-br/solutions/education/","education",{"text":697,"config":698},"Serviços financeiros",{"href":699,"dataGaName":700,"dataGaLocation":546},"/pt-br/solutions/finance/","financial services",{"title":257,"links":702},[703,705,707,709,712,714,717,719,721,723,725,727,729,731],{"text":270,"config":704},{"href":272,"dataGaName":273,"dataGaLocation":546},{"text":275,"config":706},{"href":277,"dataGaName":278,"dataGaLocation":546},{"text":145,"config":708},{"href":281,"dataGaName":282,"dataGaLocation":546},{"text":284,"config":710},{"href":286,"dataGaName":711,"dataGaLocation":546},"docs",{"text":307,"config":713},{"href":309,"dataGaName":310,"dataGaLocation":546},{"text":715,"config":716},"Novidades",{"href":367,"dataGaName":368,"dataGaLocation":546},{"text":302,"config":718},{"href":304,"dataGaName":305,"dataGaLocation":546},{"text":321,"config":720},{"href":323,"dataGaName":324,"dataGaLocation":546},{"text":329,"config":722},{"href":331,"dataGaName":332,"dataGaLocation":546},{"text":334,"config":724},{"href":336,"dataGaName":337,"dataGaLocation":546},{"text":339,"config":726},{"href":341,"dataGaName":342,"dataGaLocation":546},{"text":344,"config":728},{"href":346,"dataGaName":347,"dataGaLocation":546},{"text":349,"config":730},{"href":351,"dataGaName":352,"dataGaLocation":546},{"text":354,"config":732},{"href":356,"dataGaName":357,"dataGaLocation":546},{"title":370,"links":734},[735,737,739,741,743,745,750,755,757,759,761],{"text":378,"config":736},{"href":380,"dataGaName":372,"dataGaLocation":546},{"text":383,"config":738},{"href":385,"dataGaName":386,"dataGaLocation":546},{"text":391,"config":740},{"href":393,"dataGaName":394,"dataGaLocation":546},{"text":396,"config":742},{"href":398,"dataGaName":399,"dataGaLocation":546},{"text":401,"config":744},{"href":403,"dataGaName":404,"dataGaLocation":546},{"text":746,"config":747},"Sustentabilidade",{"href":748,"dataGaName":749,"dataGaLocation":546},"/sustainability/","Sustainability",{"text":751,"config":752},"Diversidade, inclusão e pertencimento (DIB)",{"href":753,"dataGaName":754,"dataGaLocation":546},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":406,"config":756},{"href":408,"dataGaName":409,"dataGaLocation":546},{"text":416,"config":758},{"href":418,"dataGaName":419,"dataGaLocation":546},{"text":421,"config":760},{"href":423,"dataGaName":424,"dataGaLocation":546},{"text":762,"config":763},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":764,"dataGaName":765,"dataGaLocation":546},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":767},[768,771,773],{"text":769,"config":770},"Termos",{"href":596,"dataGaName":597,"dataGaLocation":546},{"text":604,"config":772},{"dataGaName":606,"dataGaLocation":546,"id":607,"isOneTrustButton":91},{"text":774,"config":775},"Privacidade",{"href":601,"dataGaName":602,"dataGaLocation":546},{"header":777,"blurb":778,"button":779,"secondaryButton":784},"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":780,"config":781},"Obtenha sua avaliação gratuita",{"href":782,"dataGaName":108,"dataGaLocation":783},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/","feature",{"text":433,"config":785},{"href":435,"dataGaName":113,"dataGaLocation":783},1786803774865]