[{"data":1,"prerenderedAt":883},["ShallowReactive",2],{"/pt-br/get-started/continuous-integration":3,"navigation-pt-br":203,"banner-pt-br":634,"footer-pt-br":643},{"id":4,"title":5,"body":6,"category":6,"config":6,"content":7,"description":6,"extension":196,"meta":197,"navigation":24,"path":198,"seo":199,"slug":6,"stem":201,"testContent":6,"type":6,"__hash__":202},"pages/pt-br/get-started/continuous-integration.yml","Continuous Integration",null,[8,18,25,153],{"type":9,"componentName":9,"componentContent":10},"CommonBreadcrumbs",{"crumbs":11},[12,16],{"title":13,"config":14},"Comece aqui",{"href":15},"/pt-br/get-started/",{"title":17},"Guia rápido para GitLab Continuous Integration",{"type":19,"componentName":19,"componentContent":20},"CommonArticleHero",{"title":17,"readTime":21,"text":22,"config":23},"20 min para completar","Bem-vindo ao guia rápido do GitLab CI, onde você será guiado através do processo de configurar um projeto no GitLab e criar uma configuração CI simples no código. Este guia permitirá que você inicie rapidamente sua jornada com o GitLab CI.\n\nAs seguintes tarefas serão apresentadas neste guia rápido:\n\n- Criar um novo projeto.\n- Elaborar sua configuração inicial de CI/CD e executar o pipeline.\n- Acessar e revisar os resultados da execução.\n- Introduzir condições baseadas em regras para determinar execuções de jobs.\n- Aproveitar o poder dos Pipeline Templates para integração perfeita de configurações benéficas.",{"bodyText":24},true,{"type":26,"componentName":26,"componentContent":27},"CommonSideNavigationWithTree",{"anchors":28,"components":59},{"text":29,"data":30},"Nesta página",[31,35,39,43,47,51,55],{"text":32,"config":33},"Passo 1: Criar um novo Projeto/Repositório",{"href":34},"#step-1",{"text":36,"config":37},"Passo 2: Configurar a CI",{"href":38},"#step-2",{"text":40,"config":41},"Passo 3 - Fazer commit da mudança e executar o pipeline",{"href":42},"#step-3",{"text":44,"config":45},"Passo 4 - Ver execução do pipeline e resultados dos testes",{"href":46},"#step-4",{"text":48,"config":49},"Passo 5 - Falhar o pipeline",{"href":50},"#step-5",{"text":52,"config":53},"Passo 6 - Implementar condições de falha em todo o pipeline",{"href":54},"#step-6",{"text":56,"config":57},"Passo 7 - Melhorar sua configuração com templates de pipeline integrados",{"href":58},"#step-7",[60,70],{"type":61,"componentName":61,"componentContent":62},"CommonCopy",{"config":63,"cards":64},{"noDecoration":24},[65],{"config":66,"title":68,"description":69},{"icon":67},"InformationO","Antes de começar","Certifique-se de ter uma conta GitLab. Se você não tem, [cadastre-se aqui](https://gitlab.com/users/sign_up).",{"type":71,"componentName":71,"componentContent":72},"GetStartedAccordion",{"groups":73},[74,86,113,121,129,137,145],{"config":75,"header":32,"show":77,"hide":78,"items":79},{"id":76},"step-1","Mostrar tudo","Ocultar tudo",[80,83],{"header":81,"content":82},"Visão geral do passo","Dentro de um projeto, vários componentes como seu código, configuração de CI, planejamento, análises e membros da equipe são gerenciados. Neste guia, criaremos um novo projeto em branco, contendo apenas um arquivo readme.",{"header":84,"content":85},"Como fazer","* Crie um novo projeto clicando no ícone de mais no lado direito da barra superior e selecionando **Novo projeto/repositório**\n* Selecione **Criar projeto em branco**. Em `Nome do projeto` digite **my-project**.\n* Clique em **Criar projeto**.\n* Parabéns! Você criou com sucesso seu primeiro projeto.",{"config":87,"header":36,"show":77,"hide":78,"items":89},{"id":88},"step-2",[90,92,95,98,101,104,107,110],{"header":81,"content":91},"No GitLab, a configuração de CI é definida em código usando sintaxe YAML. Esta configuração especifica instruções para a máquina runner sobre execução de jobs, ordem dos jobs, condições dos jobs e muito mais. Para definir a configuração de CI, você precisa criar um arquivo chamado **.gitlab-ci.yml**, que deve estar localizado na raiz do seu repositório. Neste guia, utilizaremos o Web IDE para criar e editar este arquivo.",{"header":93,"content":94},"Criando o arquivo de configuração","Para acessar o Web IDE, simplesmente clique no botão rápido Web IDE localizado no seu projeto. Uma vez dentro do Web IDE, navegue até o explorador de arquivos no lado esquerdo. Clique com o botão direito dentro do explorador de arquivos e escolha a opção **Novo Arquivo**. Nomeie o arquivo recém-criado como **.gitlab-ci.yml**.",{"header":96,"content":97},"Definindo os estágios do Pipeline","A ordem de execução dos jobs é determinada pelos estágios definidos na configuração. Neste guia, definiremos três estágios: **build, test e package,** nesta ordem específica. Copie e cole o seguinte código no arquivo **.gitlab-ci.yml**:\n\n```yaml\n  stages:\n    - build\n    - test\n    - package\n```",{"header":99,"content":100},"Definindo os jobs do pipeline","Imagine um cenário onde você precisa criar dois arquivos de texto. É de extrema importância que a concatenação desses arquivos inclua a frase \"Hello world.\" Nosso objetivo é **construir**, **testar** e **empacotar** este requisito utilizando jobs de pipeline.",{"header":102,"content":103},"Definir um Build-Job","Especificaremos um job de build que realiza as seguintes tarefas: criar um arquivo de texto com a palavra \"Hello,\", criar outro arquivo de texto com a palavra \"World,\" e gerar um terceiro arquivo que armazena o conteúdo combinado dos dois arquivos. Salvaremos o terceiro arquivo como um artefato, para que jobs subsequentes nos estágios de test e package possam acessá-lo. Insira o código fornecido abaixo do bloco stages:\n\n```yaml\n  build-job:\n    stage: build\n    script:\n      - echo \"Hello \" | tr -d \"\\n\" > file1.txt\n      - echo \"world\" > file2.txt\n      - cat file1.txt file2.txt > compiled.txt\n    artifacts:\n    paths:\n      - compiled.txt\n```",{"header":105,"content":106},"Definir um job de teste","Para validar a integridade do nosso build, incorporaremos um job de teste. Este job examinará se o arquivo **compiled.txt** realmente contém a frase esperada \"Hello world\". Insira o seguinte código abaixo do job de build:\n\n```yaml\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world '\n```",{"header":108,"content":109},"Definir um job de empacotamento","Após a conclusão bem-sucedida do teste, nosso próximo objetivo é gerar um pacote para nosso código. Para conseguir isso, incluiremos um job de empacotamento. É importante notar que se o teste falhar, todo o pipeline será considerado mal-sucedido e não prosseguirá. Insira o código fornecido abaixo do job de teste:\n\n```yaml\n  package:\n    stage: package\n    script: cat compiled.txt | gzip > packaged.gz\n    artifacts:\n      paths:\n        - packaged.gz\n```",{"header":111,"content":112},"Seu pipeline completo deve ficar assim","```yaml\n  stages:          # Lista de estágios para jobs e sua ordem de execução\n    - build\n    - test\n    - package\n\n  build-job:\n    stage: build\n    script:\n      - echo \"Hello \" | tr -d \"\\n\" > file1.txt\n      - echo \"world\" > file2.txt\n      - cat file1.txt file2.txt > compiled.txt\n    artifacts:\n      paths:\n        - compiled.txt\n\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world'\n\n  package:\n    stage: package\n    script: cat compiled.txt | gzip > packaged.gz\n    artifacts:\n      paths:\n        - packaged.gz\n```\n\nAqui está um link para o [arquivo de configuração](https://gitlab.com/tech-marketing/ci-quickstart/-/blob/main/.gitlab-ci.yml) em nosso projeto de exemplo.\n\nParabéns!! Você construiu seu primeiro pipeline de CI.",{"config":114,"header":40,"show":77,"hide":78,"items":116},{"id":115},"step-3",[117,119],{"header":81,"content":118},"Para ativar a integração contínua (CI) dentro do nosso projeto, devemos fazer push do arquivo **.gitlab-ci.yml** para o repositório. Uma vez que este arquivo esteja localizado na raiz do repositório, cada commit feito no projeto iniciará automaticamente um pipeline de CI. O pipeline inicial começará imediatamente após fazer push deste arquivo para o servidor.",{"header":84,"content":120},"* Clique no ícone Merge localizado à esquerda do explorador de arquivos.\n* Forneça uma mensagem de commit como \"Adicionando configuração de CI.\"\n* Clique em **Commit & Push**.\n* Quando perguntado \"Fazer commit em um novo branch?\" selecione \"Não, usar o branch atual main\".\n* Para retornar ao seu projeto, clique no botão **Ir para o projeto** situado no lado inferior esquerdo.\n\n**Parabéns! Seu projeto agora está configurado com sucesso para iniciar automaticamente um pipeline de CI para cada commit de código.**",{"config":122,"header":44,"show":77,"hide":78,"items":124},{"id":123},"step-4",[125,127],{"header":81,"content":126},"Enquanto o pipeline está executando, você pode monitorar seu status na aba **CI/CD**. Este recurso permite que você acompanhe facilmente o progresso dos seus jobs, incluindo seu status de execução (como se eles iniciaram, passaram, falharam, etc.), bem como qualquer saída gerada pelos seus scripts de job.",{"header":84,"content":128},"* Navegue até o projeto GitLab e localize o menu à esquerda.\n* Clique em **CI/CD** no menu, clique em **Pipelines**.\n* Na página **Pipelines**, localize o botão do pipeline na coluna **Status**. Clique nele para abrir o gráfico do pipeline.\n* Agora, você pode observar os jobs e seus respectivos status dentro do gráfico do pipeline.\n* Para explorar um job específico, clique nele para abrir o console do job. Este console exibe todos os passos executados na máquina Runner.\n* Abra o console do job package para ver os passos que foram processados pelo runner.\n* O job package gera um artefato, você pode baixá-lo clicando no botão **download** localizado no lado direito.\n* Seguindo estes passos, você pode acompanhar efetivamente o status do pipeline, inspecionar detalhes dos jobs e recuperar quaisquer artefatos ou pacotes relevantes produzidos durante a execução do pipeline.\n\n**Parabéns por executar com sucesso seu primeiro pipeline. O pipeline foi bem-sucedido! Você agora visualizou os resultados e baixou o artefato do job.**",{"config":130,"header":48,"show":77,"hide":78,"items":132},{"id":131},"step-5",[133,135],{"header":81,"content":134},"Vamos alterar o valor esperado no job de teste, o job de teste falhará assim como todo o pipeline falhará.",{"header":84,"content":136},"* Edite o job **test** modificando a frase \"Hello World\" para \"hello world\" (com letras minúsculas).\n* Faça commit das mudanças no código e proceda para visualizar o pipeline, similar ao Passo 4.\n* Ao inspecionar o pipeline, você observará que o job de teste falhou. Além disso, o job **package** subsequente não iniciou, e o pipeline em si falhou como esperado.",{"config":138,"header":52,"show":77,"hide":78,"items":140},{"id":139},"step-6",[141,143],{"header":81,"content":142},"No passo 5 vimos que a falha do job fez todo o pipeline falhar. Você pode introduzir lógica no seu pipeline que determina quando uma falha de job causará a falha de todo o pipeline com os seguintes passos:\n\n* Avalie as condições sob as quais você quer que uma falha de job resulte em falha do pipeline. Por exemplo, você pode querer forçar a falha do pipeline se um job falhar no branch main ou padrão, enquanto permite que falhas de jobs em outros branches prossigam com o pipeline.\n* Defina regras que governam o comportamento de falha. Você pode aproveitar variáveis como $CI_COMMIT_BRANCH para verificar o branch atual e tomar decisões baseadas nele.\n* Configure as condições apropriadas e especifique se o job deve ser marcado como **allow_failure: false** ou **allow_failure: true**.",{"header":84,"content":144},"* Adicione condições rules/if ao seu job de teste.\n* Use a palavra-chave **allow_failure** definida como **true** ou **false** baseada no branch.\n\n```yaml\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world'\n    rules:\n      - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH\n        allow_failure: false\n      - if: $CI_COMMIT_BRANCH\n        allow_failure: true\n```",{"config":146,"header":56,"show":77,"hide":78,"items":148},{"id":147},"step-7",[149,151],{"header":81,"content":150},"Para simplificar a configuração do pipeline, você pode aproveitar os templates de pipeline integrados fornecidos pelo GitLab. Estes templates oferecem configurações pré-definidas para casos de uso comuns, como verificações de segurança, deployments AWS, etc.\n\nSiga estes passos para utilizar os templates de pipeline integrados:\n\n* Explore os templates de pipeline disponíveis oferecidos pelo GitLab para vários cenários como build, teste, deploy e muito mais. Estes templates podem ser encontrados [aqui](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/lib/gitlab/ci/templates).\n* Selecione o template que se alinha com seus requisitos.\n* Incorpore o template na sua configuração de pipeline referenciando-o no seu arquivo **.gitlab-ci.yml**. Você pode tipicamente fazer isso importando o template usando a palavra-chave **include** e especificando o caminho ou URL para o arquivo do template.\n\nNeste guia adicionaremos uma verificação de Code Quality à nossa configuração usando o template Code-Quality.",{"header":84,"content":152},"Inclua o template de qualidade de código no seu **.gitlab-ci.yml** adicionando este código abaixo do bloco stages.\n\n```yaml\n  include:\n    - template: Jobs/Code-Quality.gitlab-ci.yml\n```\n\nFaça commit e push desta mudança.\n\nVocê notará que um job Code quality foi adicionado ao seu pipeline. O scanner Code Quality analisará minuciosamente quaisquer mudanças de código commitadas neste repositório e fornecerá feedback valioso, destacando quaisquer problemas de qualidade de código que requerem atenção e melhoria. Esta percepção valiosa permite que você melhore a qualidade geral do seu código e otimize seu desempenho.\n\nÉ isso! Com estes passos, você deve conseguir começar com GitLab CI e automatizar os processos de build e teste do seu projeto.",{"type":154,"componentName":154,"componentContent":155},"CommonCardGrid",{"config":156,"title":159,"cards":160},{"columns":157,"theme":158},3,"purple","Próximos passos",[161,174,185],{"image":162,"title":166,"description":167,"button":168},{"altText":163,"config":164},"",{"src":165},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751663568/tcmwpweaxyr0hsh4m2bf.png?","Quer aprender mais sobre GitLab CI?","Tenha uma introdução rápida ao GitLab CI neste vídeo informativo. Perfeito para iniciantes e aqueles que querem melhorar seu entendimento do GitLab CI.",{"text":169,"config":170},"Demo visão geral CI",{"href":171,"dataGaName":172,"dataGaLocation":173},"https://youtu.be/WKR-7clknsA","CI overview demo","body",{"image":175,"title":178,"description":179,"button":180},{"altText":163,"config":176},{"src":177},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751663863/zgovjo3vv2ik0nbim6db.png?","Utilize Issues","GitLab Issues são usadas para rastrear e gerenciar tarefas, bugs ou solicitações de recursos dentro de um projeto. Elas fornecem um local centralizado para colaboração para discutir, atribuir e acompanhar o progresso dos itens de trabalho.",{"text":181,"config":182},"Issues",{"href":183,"dataGaName":184,"dataGaLocation":173},"https://docs.gitlab.com/user/project/issues/","issues",{"image":186,"title":189,"description":190,"button":191},{"altText":163,"config":187},{"src":188},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1751663742/ggf3qelfxf5bjjopwagh.png?","Adicione verificações de segurança ao seu pipeline","Com as verificações de segurança integradas do GitLab, você pode facilmente incorporá-las na sua configuração de CI. Isso garante que os desenvolvedores recebam feedback instantâneo sobre quaisquer riscos potenciais em suas mudanças de código.",{"text":192,"config":193},"Segurança de aplicações",{"href":194,"dataGaName":195,"dataGaLocation":173},"/blog/getting-started-with-gitlab-application-security/","Application security","yml",{},"/pt-br/get-started/continuous-integration",{"title":17,"ogTitle":17,"description":200,"ogDescription":200},"Você será guiado através do processo de configurar um projeto no GitLab e criar uma configuração CI simples no código.","pt-br/get-started/continuous-integration","ePwMoHoGboR5e7BEIWHVrDbW7LjXW9zhm51WqzQ3j8A",{"logo":204,"freeTrial":209,"sales":214,"login":219,"items":224,"search":551,"minimal":586,"duo":604,"switchNav":613,"pricingDeployment":624},{"config":205},{"href":206,"dataGaName":207,"dataGaLocation":208},"/pt-br/","gitlab logo","header",{"text":210,"config":211},"Obtenha uma avaliação gratuita",{"href":212,"dataGaName":213,"dataGaLocation":208},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br&glm_content=default-saas-trial/","free trial",{"text":215,"config":216},"Solicite uma demonstração",{"href":217,"dataGaName":218,"dataGaLocation":208},"/pt-br/sales/?contact-topic=request-demo","sales",{"text":220,"config":221},"Fazer login",{"href":222,"dataGaName":223,"dataGaLocation":208},"https://gitlab.com/users/sign_in/","sign in",[225,254,356,361,473,529],{"text":226,"config":227,"menu":229},"Plataforma",{"dataNavLevelOne":228},"platform",{"type":230,"columns":231},"cards",[232,238,246],{"title":226,"description":233,"link":234},"A plataforma de orquestração inteligente para DevSecOps",{"text":235,"config":236},"Conheça nossa plataforma",{"href":237,"dataGaName":228,"dataGaLocation":208},"/pt-br/platform/",{"title":239,"description":240,"link":241},"Plataforma de Agente do GitLab Duo","IA agêntica para todo o ciclo de vida do software",{"text":242,"config":243},"Conheça o GitLab Duo",{"href":244,"dataGaName":245,"dataGaLocation":208},"/pt-br/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":247,"description":248,"link":249},"Por que escolher o GitLab?","Saiba os principais motivos pelos quais as empresas escolhem o GitLab",{"text":250,"config":251},"Saiba mais",{"href":252,"dataGaName":253,"dataGaLocation":208},"/pt-br/why-gitlab/","why gitlab",{"text":255,"left":24,"config":256,"menu":258},"Produtos",{"dataNavLevelOne":257},"solutions",{"type":259,"link":260,"columns":264,"feature":335},"lists",{"text":261,"config":262},"Confira todas as soluções",{"href":263,"dataGaName":257,"dataGaLocation":208},"/pt-br/solutions/",[265,290,313],{"title":266,"description":267,"link":268,"items":273},"Automação","CI/CD e automação para acelerar a implantação",{"config":269},{"icon":270,"href":271,"dataGaName":272,"dataGaLocation":208},"AutomatedCodeAlt","/pt-br/solutions/delivery-automation/","automated software delivery",[274,278,281,286],{"text":275,"config":276},"CI/CD",{"href":277,"dataGaLocation":208,"dataGaName":275},"/pt-br/solutions/continuous-integration/",{"text":239,"config":279},{"href":244,"dataGaLocation":208,"dataGaName":280},"gitlab duo agent platform - product menu",{"text":282,"config":283},"Gerenciamento de código-fonte",{"href":284,"dataGaLocation":208,"dataGaName":285},"/pt-br/solutions/source-code-management/","Source Code Management",{"text":287,"config":288},"Entrega automatizada de software",{"href":271,"dataGaLocation":208,"dataGaName":289},"Automated software delivery",{"title":291,"description":292,"link":293,"items":298},"Segurança","Acelere a entrega de código sem comprometer a segurança",{"config":294},{"href":295,"dataGaName":296,"dataGaLocation":208,"icon":297},"/pt-br/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[299,303,308],{"text":300,"config":301},"Testes de segurança de aplicações",{"href":295,"dataGaName":302,"dataGaLocation":208},"Application security testing",{"text":304,"config":305},"Segurança da cadeia de suprimentos de software",{"href":306,"dataGaLocation":208,"dataGaName":307},"/pt-br/solutions/supply-chain/","Software supply chain security",{"text":309,"config":310},"Conformidade de software",{"href":311,"dataGaName":312,"dataGaLocation":208},"/pt-br/solutions/software-compliance/","software compliance",{"title":314,"link":315,"items":320},"Medição",{"config":316},{"icon":317,"href":318,"dataGaName":319,"dataGaLocation":208},"DigitalTransformation","/pt-br/solutions/visibility-measurement/","visibility and measurement",[321,325,330],{"text":322,"config":323},"Visibilidade e métricas",{"href":318,"dataGaLocation":208,"dataGaName":324},"Visibility and Measurement",{"text":326,"config":327},"Gestão de fluxo de valor do GitLab",{"href":328,"dataGaLocation":208,"dataGaName":329},"/pt-br/solutions/value-stream-management/","Value Stream Management",{"text":331,"config":332},"Análise e insights",{"href":333,"dataGaLocation":208,"dataGaName":334},"/pt-br/solutions/analytics-and-insights/","Analytics and insights",{"title":336,"type":259,"items":337},"GitLab para",[338,344,350],{"text":339,"config":340},"Enterprise",{"icon":341,"href":342,"dataGaLocation":208,"dataGaName":343},"Building","/pt-br/enterprise/","enterprise",{"text":345,"config":346},"Pequenas empresas",{"icon":347,"href":348,"dataGaLocation":208,"dataGaName":349},"Work","/pt-br/small-business/","small business",{"text":351,"config":352},"Setor público",{"icon":353,"href":354,"dataGaLocation":208,"dataGaName":355},"Organization","/pt-br/solutions/public-sector/","public sector",{"text":357,"config":358},"Preços",{"href":359,"dataGaName":360,"dataGaLocation":208,"dataNavLevelOne":360},"/pt-br/pricing/","pricing",{"text":362,"config":363,"menu":365},"Recursos",{"dataNavLevelOne":364},"resources",{"type":259,"link":366,"columns":370,"feature":462},{"text":367,"config":368},"Confira todos os recursos",{"href":369,"dataGaName":364,"dataGaLocation":208},"/pt-br/resources/",[371,402,429],{"title":372,"items":373},"Primeiros passos",[374,379,383,387,392,397],{"text":375,"config":376},"Instalação",{"href":377,"dataGaName":378,"dataGaLocation":208},"/pt-br/install/","install",{"text":380,"config":381},"Guias de início rápido",{"href":15,"dataGaName":382,"dataGaLocation":208},"quick setup checklists",{"text":250,"config":384},{"href":385,"dataGaLocation":208,"dataGaName":386},"https://university.gitlab.com/","learn",{"text":388,"config":389},"Documentação do produto",{"href":390,"dataGaName":391,"dataGaLocation":208},"https://docs.gitlab.com/","product documentation",{"text":393,"config":394},"Vídeos de melhores práticas",{"href":395,"dataGaName":396,"dataGaLocation":208},"/pt-br/getting-started-videos/","best practice videos",{"text":398,"config":399},"Integrações",{"href":400,"dataGaName":401,"dataGaLocation":208},"/pt-br/integrations/","integrations",{"title":403,"items":404},"Descubra",[405,410,415,420,424],{"text":406,"config":407},"Histórias de sucesso de clientes",{"href":408,"dataGaName":409,"dataGaLocation":208},"/pt-br/customers/","customer success stories",{"text":411,"config":412},"Blog",{"href":413,"dataGaName":414,"dataGaLocation":208},"/blog/","blog",{"text":416,"config":417},"Demo Hub",{"href":418,"dataGaName":419,"dataGaLocation":208},"/demo-hub/","demo hub",{"text":421,"config":422},"The Source",{"href":423,"dataGaName":414,"dataGaLocation":208},"/pt-br/the-source/",{"text":425,"config":426},"Trabalho remoto",{"href":427,"dataGaName":428,"dataGaLocation":208},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":430,"items":431},"Conecte-se",[432,437,442,447,452,457],{"text":433,"config":434},"Serviços do GitLab",{"href":435,"dataGaName":436,"dataGaLocation":208},"/pt-br/services/","services",{"text":438,"config":439},"Contribua",{"href":440,"dataGaName":441,"dataGaLocation":208},"https://contributors.gitlab.com","contribute",{"text":443,"config":444},"Comunidade",{"href":445,"dataGaName":446,"dataGaLocation":208},"/community/","community",{"text":448,"config":449},"Fórum",{"href":450,"dataGaName":451,"dataGaLocation":208},"https://forum.gitlab.com/","forum",{"text":453,"config":454},"Eventos",{"href":455,"dataGaName":456,"dataGaLocation":208},"/events/","events",{"text":458,"config":459},"Parceiros",{"href":460,"dataGaName":461,"dataGaLocation":208},"/pt-br/partners/","partners",{"config":463,"title":466,"text":467,"link":468},{"background":464,"textColor":465},"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":469,"config":470},"Confira as novidades",{"href":471,"dataGaName":472,"dataGaLocation":208},"/pt-br/whats-new/","whats new",{"text":474,"config":475,"menu":477},"Empresa",{"dataNavLevelOne":476},"company",{"type":259,"columns":478},[479],{"items":480},[481,486,492,494,499,504,509,514,519,524],{"text":482,"config":483},"Sobre",{"href":484,"dataGaName":485,"dataGaLocation":208},"/pt-br/company/","about",{"text":487,"config":488,"footerGa":491},"Vagas",{"href":489,"dataGaName":490,"dataGaLocation":208},"/jobs/","jobs",{"dataGaName":490},{"text":453,"config":493},{"href":455,"dataGaName":456,"dataGaLocation":208},{"text":495,"config":496},"Liderança",{"href":497,"dataGaName":498,"dataGaLocation":208},"/company/team/e-group/","leadership",{"text":500,"config":501},"Manual",{"href":502,"dataGaName":503,"dataGaLocation":208},"https://handbook.gitlab.com/","handbook",{"text":505,"config":506},"Relações com investidores",{"href":507,"dataGaName":508,"dataGaLocation":208},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":510,"config":511},"Trust Center",{"href":512,"dataGaName":513,"dataGaLocation":208},"/pt-br/security/","trust center",{"text":515,"config":516},"AI Transparency Center",{"href":517,"dataGaName":518,"dataGaLocation":208},"/pt-br/ai-transparency-center/","ai transparency center",{"text":520,"config":521},"Boletim informativo",{"href":522,"dataGaName":523,"dataGaLocation":208},"/company/contact/#contact-forms","newsletter",{"text":525,"config":526},"Imprensa",{"href":527,"dataGaName":528,"dataGaLocation":208},"/press/","press",{"text":530,"config":531,"menu":532},"Entre em contato",{"dataNavLevelOne":476},{"type":259,"columns":533},[534],{"items":535},[536,541,546],{"text":537,"config":538},"Fale com a equipe de vendas",{"href":539,"dataGaName":540,"dataGaLocation":208},"/pt-br/sales/","talk to sales",{"text":542,"config":543},"Portal de ajuda",{"href":544,"dataGaName":545,"dataGaLocation":208},"https://support.gitlab.com/hc/en-us","support portal",{"text":547,"config":548},"Portal de clientes",{"href":549,"dataGaName":550,"dataGaLocation":208},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":552,"login":553,"suggestions":560},"Fechar",{"text":554,"link":555},"Para pesquisar repositórios e projetos, faça login em",{"text":556,"config":557},"gitlab.com",{"href":222,"dataGaName":558,"dataGaLocation":559},"search login","search",{"text":561,"default":562},"Sugestões",[563,566,571,573,578,583],{"text":239,"config":564},{"href":244,"dataGaName":565,"dataGaLocation":559},"GitLab Duo Agent Platform",{"text":567,"config":568},"Sugestões de código (AI)",{"href":569,"dataGaName":570,"dataGaLocation":559},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":275,"config":572},{"href":277,"dataGaName":275,"dataGaLocation":559},{"text":574,"config":575},"GitLab na AWS",{"href":576,"dataGaName":577,"dataGaLocation":559},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":579,"config":580},"GitLab no Google Cloud",{"href":581,"dataGaName":582,"dataGaLocation":559},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":247,"config":584},{"href":252,"dataGaName":585,"dataGaLocation":559},"Why GitLab?",{"freeTrial":587,"mobileIcon":592,"desktopIcon":597,"secondaryButton":600},{"text":588,"config":589},"Iniciar avaliação gratuita",{"href":590,"dataGaName":213,"dataGaLocation":591},"https://gitlab.com/-/trials/new/","nav",{"altText":593,"config":594},"Ícone do GitLab",{"src":595,"dataGaName":596,"dataGaLocation":591},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":593,"config":598},{"src":599,"dataGaName":596,"dataGaLocation":591},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":372,"config":601},{"href":602,"dataGaName":603,"dataGaLocation":591},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":605,"mobileIcon":609,"desktopIcon":611},{"text":606,"config":607},"Saiba mais sobre o GitLab Duo",{"href":244,"dataGaName":608,"dataGaLocation":591},"gitlab duo",{"altText":593,"config":610},{"src":595,"dataGaName":596,"dataGaLocation":591},{"altText":593,"config":612},{"src":599,"dataGaName":596,"dataGaLocation":591},{"button":614,"mobileIcon":619,"desktopIcon":621},{"text":615,"config":616},"/switch",{"href":617,"dataGaName":618,"dataGaLocation":591},"#contact","switch",{"altText":593,"config":620},{"src":595,"dataGaName":596,"dataGaLocation":591},{"altText":593,"config":622},{"src":623,"dataGaName":596,"dataGaLocation":591},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":625,"mobileIcon":630,"desktopIcon":632},{"text":626,"config":627},"Voltar para preços",{"href":359,"dataGaName":628,"dataGaLocation":591,"icon":629},"back to pricing","GoBack",{"altText":593,"config":631},{"src":595,"dataGaName":596,"dataGaLocation":591},{"altText":593,"config":633},{"src":599,"dataGaName":596,"dataGaLocation":591},{"title":635,"button":636,"config":640},"GitLab Orbit chegou: a camada de contexto para agentes de IA.",{"text":250,"config":637},{"href":638,"dataGaName":639,"dataGaLocation":208},"/pt-br/gitlab-orbit/","orbit",{"layout":641,"disabled":642},"release",false,{"data":644},{"text":645,"source":646,"edit":652,"contribute":657,"config":661,"items":666,"minimal":873},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":647,"config":648},"Ver a origem da página",{"href":649,"dataGaName":650,"dataGaLocation":651},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":653,"config":654},"Editar esta página",{"href":655,"dataGaName":656,"dataGaLocation":651},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":438,"config":658},{"href":659,"dataGaName":660,"dataGaLocation":651},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":662,"facebook":663,"youtube":664,"linkedin":665},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[667,713,766,808,840],{"title":357,"links":668,"subMenu":683},[669,673,678],{"text":670,"config":671},"Confira os planos",{"href":359,"dataGaName":672,"dataGaLocation":651},"view plans",{"text":674,"config":675},"Por que escolher o GitLab Premium?",{"href":676,"dataGaName":677,"dataGaLocation":651},"/pt-br/pricing/premium/","why premium",{"text":679,"config":680},"Por que escolher o GitLab Ultimate?",{"href":681,"dataGaName":682,"dataGaLocation":651},"/pt-br/pricing/ultimate/","why ultimate",[684],{"title":685,"links":686},"Entre em contato conosco",[687,689,691,693,698,703,708],{"text":537,"config":688},{"href":539,"dataGaName":218,"dataGaLocation":651},{"text":542,"config":690},{"href":544,"dataGaName":545,"dataGaLocation":651},{"text":547,"config":692},{"href":549,"dataGaName":550,"dataGaLocation":651},{"text":694,"config":695},"Status",{"href":696,"dataGaName":697,"dataGaLocation":651},"https://status.gitlab.com/","status",{"text":699,"config":700},"Termos de uso",{"href":701,"dataGaName":702,"dataGaLocation":651},"/terms/","terms of use",{"text":704,"config":705},"Aviso de privacidade",{"href":706,"dataGaName":707,"dataGaLocation":651},"/pt-br/privacy/","privacy statement",{"text":709,"config":710},"Preferências de cookies",{"dataGaName":711,"dataGaLocation":651,"id":712,"isOneTrustButton":24},"cookie preferences","ot-sdk-btn",{"title":255,"links":714,"subMenu":723},[715,719],{"text":716,"config":717},"Plataforma DevSecOps",{"href":237,"dataGaName":718,"dataGaLocation":651},"devsecops platform",{"text":720,"config":721},"Desenvolvimento auxiliado por IA",{"href":244,"dataGaName":722,"dataGaLocation":651},"ai-assisted development",[724],{"title":725,"links":726},"Tópicos",[727,731,736,741,746,751,756,761],{"text":275,"config":728},{"href":729,"dataGaName":730,"dataGaLocation":651},"/pt-br/topics/ci-cd/","cicd",{"text":732,"config":733},"GitOps",{"href":734,"dataGaName":735,"dataGaLocation":651},"/pt-br/topics/gitops/","gitops",{"text":737,"config":738},"DevOps",{"href":739,"dataGaName":740,"dataGaLocation":651},"/pt-br/topics/devops/","devops",{"text":742,"config":743},"Controle de versão",{"href":744,"dataGaName":745,"dataGaLocation":651},"/pt-br/topics/version-control/","version control",{"text":747,"config":748},"DevSecOps",{"href":749,"dataGaName":750,"dataGaLocation":651},"/pt-br/topics/devsecops/","devsecops",{"text":752,"config":753},"De nuvem nativa",{"href":754,"dataGaName":755,"dataGaLocation":651},"/pt-br/topics/cloud-native/","cloud native",{"text":757,"config":758},"IA para programação",{"href":759,"dataGaName":760,"dataGaLocation":651},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":762,"config":763},"IA agêntica",{"href":764,"dataGaName":765,"dataGaLocation":651},"/pt-br/topics/agentic-ai/","agentic ai",{"title":767,"links":768},"Soluções",[769,772,774,779,783,786,789,792,794,796,798,803],{"text":300,"config":770},{"href":295,"dataGaName":771,"dataGaLocation":651},"Application Security Testing",{"text":287,"config":773},{"href":271,"dataGaName":272,"dataGaLocation":651},{"text":775,"config":776},"Desenvolvimento ágil",{"href":777,"dataGaName":778,"dataGaLocation":651},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":780,"config":781},"SCM",{"href":284,"dataGaName":782,"dataGaLocation":651},"source code management",{"text":275,"config":784},{"href":277,"dataGaName":785,"dataGaLocation":651},"continuous integration & delivery",{"text":326,"config":787},{"href":328,"dataGaName":788,"dataGaLocation":651},"value stream management",{"text":732,"config":790},{"href":791,"dataGaName":735,"dataGaLocation":651},"/pt-br/solutions/gitops/",{"text":339,"config":793},{"href":342,"dataGaName":343,"dataGaLocation":651},{"text":345,"config":795},{"href":348,"dataGaName":349,"dataGaLocation":651},{"text":351,"config":797},{"href":354,"dataGaName":355,"dataGaLocation":651},{"text":799,"config":800},"Educação",{"href":801,"dataGaName":802,"dataGaLocation":651},"/pt-br/solutions/education/","education",{"text":804,"config":805},"Serviços financeiros",{"href":806,"dataGaName":807,"dataGaLocation":651},"/pt-br/solutions/finance/","financial services",{"title":362,"links":809},[810,812,814,816,819,821,824,826,828,830,832,834,836,838],{"text":375,"config":811},{"href":377,"dataGaName":378,"dataGaLocation":651},{"text":380,"config":813},{"href":15,"dataGaName":382,"dataGaLocation":651},{"text":250,"config":815},{"href":385,"dataGaName":386,"dataGaLocation":651},{"text":388,"config":817},{"href":390,"dataGaName":818,"dataGaLocation":651},"docs",{"text":411,"config":820},{"href":413,"dataGaName":414,"dataGaLocation":651},{"text":822,"config":823},"Novidades",{"href":471,"dataGaName":472,"dataGaLocation":651},{"text":406,"config":825},{"href":408,"dataGaName":409,"dataGaLocation":651},{"text":425,"config":827},{"href":427,"dataGaName":428,"dataGaLocation":651},{"text":433,"config":829},{"href":435,"dataGaName":436,"dataGaLocation":651},{"text":438,"config":831},{"href":440,"dataGaName":441,"dataGaLocation":651},{"text":443,"config":833},{"href":445,"dataGaName":446,"dataGaLocation":651},{"text":448,"config":835},{"href":450,"dataGaName":451,"dataGaLocation":651},{"text":453,"config":837},{"href":455,"dataGaName":456,"dataGaLocation":651},{"text":458,"config":839},{"href":460,"dataGaName":461,"dataGaLocation":651},{"title":474,"links":841},[842,844,846,848,850,852,857,862,864,866,868],{"text":482,"config":843},{"href":484,"dataGaName":476,"dataGaLocation":651},{"text":487,"config":845},{"href":489,"dataGaName":490,"dataGaLocation":651},{"text":495,"config":847},{"href":497,"dataGaName":498,"dataGaLocation":651},{"text":500,"config":849},{"href":502,"dataGaName":503,"dataGaLocation":651},{"text":505,"config":851},{"href":507,"dataGaName":508,"dataGaLocation":651},{"text":853,"config":854},"Sustentabilidade",{"href":855,"dataGaName":856,"dataGaLocation":651},"/sustainability/","Sustainability",{"text":858,"config":859},"Diversidade, inclusão e pertencimento (DIB)",{"href":860,"dataGaName":861,"dataGaLocation":651},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":510,"config":863},{"href":512,"dataGaName":513,"dataGaLocation":651},{"text":520,"config":865},{"href":522,"dataGaName":523,"dataGaLocation":651},{"text":525,"config":867},{"href":527,"dataGaName":528,"dataGaLocation":651},{"text":869,"config":870},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":871,"dataGaName":872,"dataGaLocation":651},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":874},[875,878,880],{"text":876,"config":877},"Termos",{"href":701,"dataGaName":702,"dataGaLocation":651},{"text":709,"config":879},{"dataGaName":711,"dataGaLocation":651,"id":712,"isOneTrustButton":24},{"text":881,"config":882},"Privacidade",{"href":706,"dataGaName":707,"dataGaLocation":651},1786803774568]