[{"data":1,"prerenderedAt":875},["ShallowReactive",2],{"/pt-br/get-started/continuous-integration":3,"navigation-pt-br":203,"banner-pt-br":625,"footer-pt-br":636},{"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},"InfoTip","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","VN6ZHjprC-69GNN2ORp99r5QdmDrlUYtBe2UTPnwXjk",{"logo":204,"freeTrial":209,"sales":214,"login":219,"items":224,"search":543,"minimal":577,"duo":595,"switchNav":604,"pricingDeployment":615},{"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},"Fale com a equipe de vendas",{"href":217,"dataGaName":218,"dataGaLocation":208},"/pt-br/sales/","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,462,523],{"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 a plataforma",{"href":237,"dataGaName":228,"dataGaLocation":208},"/pt-br/platform/",{"title":239,"description":240,"link":241},"GitLab Duo Agent Platform","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",{"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":448},{"text":367,"config":368},"Confira todos os recursos",{"href":369,"dataGaName":364,"dataGaLocation":208},"/pt-br/resources/",[371,402,420],{"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],{"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},"Trabalho remoto",{"href":418,"dataGaName":419,"dataGaLocation":208},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":421,"items":422},"Conecte-se",[423,428,433,438,443],{"text":424,"config":425},"Serviços do GitLab",{"href":426,"dataGaName":427,"dataGaLocation":208},"/pt-br/services/","services",{"text":429,"config":430},"Comunidade",{"href":431,"dataGaName":432,"dataGaLocation":208},"/community/","community",{"text":434,"config":435},"Fórum",{"href":436,"dataGaName":437,"dataGaLocation":208},"https://forum.gitlab.com/","forum",{"text":439,"config":440},"Eventos",{"href":441,"dataGaName":442,"dataGaLocation":208},"/events/","events",{"text":444,"config":445},"Parceiros",{"href":446,"dataGaName":447,"dataGaLocation":208},"/pt-br/partners/","partners",{"config":449,"text":452,"image":453,"link":457},{"background":450,"textColor":451},"#2f2a6b","#fff","Insights para o futuro do desenvolvimento de software",{"altText":454,"config":455},"Cartão promocional do The Source",{"src":456},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":458,"config":459},"Confira as novidades",{"href":460,"dataGaName":461,"dataGaLocation":208},"/pt-br/the-source/","the source",{"text":463,"config":464,"menu":466},"Empresa",{"dataNavLevelOne":465},"company",{"type":259,"columns":467},[468],{"items":469},[470,475,481,483,488,493,498,503,508,513,518],{"text":471,"config":472},"Sobre",{"href":473,"dataGaName":474,"dataGaLocation":208},"/pt-br/company/","about",{"text":476,"config":477,"footerGa":480},"Vagas",{"href":478,"dataGaName":479,"dataGaLocation":208},"/jobs/","jobs",{"dataGaName":479},{"text":439,"config":482},{"href":441,"dataGaName":442,"dataGaLocation":208},{"text":484,"config":485},"Liderança",{"href":486,"dataGaName":487,"dataGaLocation":208},"/company/team/e-group/","leadership",{"text":489,"config":490},"Equipe",{"href":491,"dataGaName":492,"dataGaLocation":208},"/company/team/","team",{"text":494,"config":495},"Manual",{"href":496,"dataGaName":497,"dataGaLocation":208},"https://handbook.gitlab.com/","handbook",{"text":499,"config":500},"Relações com investidores",{"href":501,"dataGaName":502,"dataGaLocation":208},"https://ir.gitlab.com/","investor relations",{"text":504,"config":505},"Trust Center",{"href":506,"dataGaName":507,"dataGaLocation":208},"/pt-br/security/","trust center",{"text":509,"config":510},"AI Transparency Center",{"href":511,"dataGaName":512,"dataGaLocation":208},"/pt-br/ai-transparency-center/","ai transparency center",{"text":514,"config":515},"Boletim informativo",{"href":516,"dataGaName":517,"dataGaLocation":208},"/company/contact/#contact-forms","newsletter",{"text":519,"config":520},"Imprensa",{"href":521,"dataGaName":522,"dataGaLocation":208},"/press/","press",{"text":524,"config":525,"menu":526},"Fale com a gente",{"dataNavLevelOne":465},{"type":259,"columns":527},[528],{"items":529},[530,533,538],{"text":215,"config":531},{"href":217,"dataGaName":532,"dataGaLocation":208},"talk to sales",{"text":534,"config":535},"Portal de ajuda",{"href":536,"dataGaName":537,"dataGaLocation":208},"https://support.gitlab.com","support portal",{"text":539,"config":540},"Portal de clientes",{"href":541,"dataGaName":542,"dataGaLocation":208},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":544,"login":545,"suggestions":552},"Fechar",{"text":546,"link":547},"Para pesquisar repositórios e projetos, faça login em",{"text":548,"config":549},"gitlab.com",{"href":222,"dataGaName":550,"dataGaLocation":551},"search login","search",{"text":553,"default":554},"Sugestões",[555,557,562,564,569,574],{"text":239,"config":556},{"href":244,"dataGaName":239,"dataGaLocation":551},{"text":558,"config":559},"Sugestões de código (AI)",{"href":560,"dataGaName":561,"dataGaLocation":551},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":275,"config":563},{"href":277,"dataGaName":275,"dataGaLocation":551},{"text":565,"config":566},"GitLab na AWS",{"href":567,"dataGaName":568,"dataGaLocation":551},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":570,"config":571},"GitLab no Google Cloud",{"href":572,"dataGaName":573,"dataGaLocation":551},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":247,"config":575},{"href":252,"dataGaName":576,"dataGaLocation":551},"Why GitLab?",{"freeTrial":578,"mobileIcon":583,"desktopIcon":588,"secondaryButton":591},{"text":579,"config":580},"Iniciar avaliação gratuita",{"href":581,"dataGaName":213,"dataGaLocation":582},"https://gitlab.com/-/trials/new/","nav",{"altText":584,"config":585},"Ícone do GitLab",{"src":586,"dataGaName":587,"dataGaLocation":582},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":584,"config":589},{"src":590,"dataGaName":587,"dataGaLocation":582},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":372,"config":592},{"href":593,"dataGaName":594,"dataGaLocation":582},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":596,"mobileIcon":600,"desktopIcon":602},{"text":597,"config":598},"Saiba mais sobre o GitLab Duo",{"href":244,"dataGaName":599,"dataGaLocation":582},"gitlab duo",{"altText":584,"config":601},{"src":586,"dataGaName":587,"dataGaLocation":582},{"altText":584,"config":603},{"src":590,"dataGaName":587,"dataGaLocation":582},{"button":605,"mobileIcon":610,"desktopIcon":612},{"text":606,"config":607},"/switch",{"href":608,"dataGaName":609,"dataGaLocation":582},"#contact","switch",{"altText":584,"config":611},{"src":586,"dataGaName":587,"dataGaLocation":582},{"altText":584,"config":613},{"src":614,"dataGaName":587,"dataGaLocation":582},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":616,"mobileIcon":621,"desktopIcon":623},{"text":617,"config":618},"Voltar para preços",{"href":359,"dataGaName":619,"dataGaLocation":582,"icon":620},"back to pricing","GoBack",{"altText":584,"config":622},{"src":586,"dataGaName":587,"dataGaLocation":582},{"altText":584,"config":624},{"src":590,"dataGaName":587,"dataGaLocation":582},{"title":626,"button":627,"config":632},"Veja como a IA agêntica transforma a entrega de software",{"text":628,"config":629},"Inscreva-se no GitLab Transcend em 10 de junho",{"href":630,"dataGaName":631,"dataGaLocation":208},"/pt-br/releases/whats-new/#sign-up","transcend event",{"layout":633,"icon":634,"disabled":635},"release","AiStar",false,{"data":637},{"text":638,"source":639,"edit":645,"contribute":650,"config":655,"items":660,"minimal":865},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":640,"config":641},"Ver a origem da página",{"href":642,"dataGaName":643,"dataGaLocation":644},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":646,"config":647},"Editar esta página",{"href":648,"dataGaName":649,"dataGaLocation":644},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":651,"config":652},"Contribua",{"href":653,"dataGaName":654,"dataGaLocation":644},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":656,"facebook":657,"youtube":658,"linkedin":659},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[661,707,760,803,830],{"title":357,"links":662,"subMenu":677},[663,667,672],{"text":664,"config":665},"Confira os planos",{"href":359,"dataGaName":666,"dataGaLocation":644},"view plans",{"text":668,"config":669},"Por que escolher o GitLab Premium?",{"href":670,"dataGaName":671,"dataGaLocation":644},"/pt-br/pricing/premium/","why premium",{"text":673,"config":674},"Por que escolher o GitLab Ultimate?",{"href":675,"dataGaName":676,"dataGaLocation":644},"/pt-br/pricing/ultimate/","why ultimate",[678],{"title":679,"links":680},"Entre em contato conosco",[681,683,685,687,692,697,702],{"text":215,"config":682},{"href":217,"dataGaName":218,"dataGaLocation":644},{"text":534,"config":684},{"href":536,"dataGaName":537,"dataGaLocation":644},{"text":539,"config":686},{"href":541,"dataGaName":542,"dataGaLocation":644},{"text":688,"config":689},"Status",{"href":690,"dataGaName":691,"dataGaLocation":644},"https://status.gitlab.com/","status",{"text":693,"config":694},"Termos de uso",{"href":695,"dataGaName":696,"dataGaLocation":644},"/terms/","terms of use",{"text":698,"config":699},"Aviso de privacidade",{"href":700,"dataGaName":701,"dataGaLocation":644},"/pt-br/privacy/","privacy statement",{"text":703,"config":704},"Preferências de cookies",{"dataGaName":705,"dataGaLocation":644,"id":706,"isOneTrustButton":24},"cookie preferences","ot-sdk-btn",{"title":255,"links":708,"subMenu":717},[709,713],{"text":710,"config":711},"Plataforma DevSecOps",{"href":237,"dataGaName":712,"dataGaLocation":644},"devsecops platform",{"text":714,"config":715},"Desenvolvimento auxiliado por IA",{"href":244,"dataGaName":716,"dataGaLocation":644},"ai-assisted development",[718],{"title":719,"links":720},"Tópicos",[721,725,730,735,740,745,750,755],{"text":275,"config":722},{"href":723,"dataGaName":724,"dataGaLocation":644},"/pt-br/topics/ci-cd/","cicd",{"text":726,"config":727},"GitOps",{"href":728,"dataGaName":729,"dataGaLocation":644},"/pt-br/topics/gitops/","gitops",{"text":731,"config":732},"DevOps",{"href":733,"dataGaName":734,"dataGaLocation":644},"/pt-br/topics/devops/","devops",{"text":736,"config":737},"Controle de versão",{"href":738,"dataGaName":739,"dataGaLocation":644},"/pt-br/topics/version-control/","version control",{"text":741,"config":742},"DevSecOps",{"href":743,"dataGaName":744,"dataGaLocation":644},"/pt-br/topics/devsecops/","devsecops",{"text":746,"config":747},"De nuvem nativa",{"href":748,"dataGaName":749,"dataGaLocation":644},"/pt-br/topics/cloud-native/","cloud native",{"text":751,"config":752},"IA para programação",{"href":753,"dataGaName":754,"dataGaLocation":644},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":756,"config":757},"IA agêntica",{"href":758,"dataGaName":759,"dataGaLocation":644},"/pt-br/topics/agentic-ai/","agentic ai",{"title":761,"links":762},"Soluções",[763,766,768,773,777,780,784,787,789,791,793,798],{"text":300,"config":764},{"href":295,"dataGaName":765,"dataGaLocation":644},"Application Security Testing",{"text":287,"config":767},{"href":271,"dataGaName":272,"dataGaLocation":644},{"text":769,"config":770},"Desenvolvimento ágil",{"href":771,"dataGaName":772,"dataGaLocation":644},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":774,"config":775},"SCM",{"href":284,"dataGaName":776,"dataGaLocation":644},"source code management",{"text":275,"config":778},{"href":277,"dataGaName":779,"dataGaLocation":644},"continuous integration & delivery",{"text":781,"config":782},"Gestão de fluxo de valor do GitLab",{"href":328,"dataGaName":783,"dataGaLocation":644},"value stream management",{"text":726,"config":785},{"href":786,"dataGaName":729,"dataGaLocation":644},"/pt-br/solutions/gitops/",{"text":339,"config":788},{"href":342,"dataGaName":343,"dataGaLocation":644},{"text":345,"config":790},{"href":348,"dataGaName":349,"dataGaLocation":644},{"text":351,"config":792},{"href":354,"dataGaName":355,"dataGaLocation":644},{"text":794,"config":795},"Educação",{"href":796,"dataGaName":797,"dataGaLocation":644},"/pt-br/solutions/education/","education",{"text":799,"config":800},"Serviços financeiros",{"href":801,"dataGaName":802,"dataGaLocation":644},"/pt-br/solutions/finance/","financial services",{"title":362,"links":804},[805,807,809,811,814,816,818,820,822,824,826,828],{"text":375,"config":806},{"href":377,"dataGaName":378,"dataGaLocation":644},{"text":380,"config":808},{"href":15,"dataGaName":382,"dataGaLocation":644},{"text":250,"config":810},{"href":385,"dataGaName":386,"dataGaLocation":644},{"text":388,"config":812},{"href":390,"dataGaName":813,"dataGaLocation":644},"docs",{"text":411,"config":815},{"href":413,"dataGaName":414,"dataGaLocation":644},{"text":406,"config":817},{"href":408,"dataGaName":409,"dataGaLocation":644},{"text":416,"config":819},{"href":418,"dataGaName":419,"dataGaLocation":644},{"text":424,"config":821},{"href":426,"dataGaName":427,"dataGaLocation":644},{"text":429,"config":823},{"href":431,"dataGaName":432,"dataGaLocation":644},{"text":434,"config":825},{"href":436,"dataGaName":437,"dataGaLocation":644},{"text":439,"config":827},{"href":441,"dataGaName":442,"dataGaLocation":644},{"text":444,"config":829},{"href":446,"dataGaName":447,"dataGaLocation":644},{"title":463,"links":831},[832,834,836,838,840,842,844,849,854,856,858,860],{"text":471,"config":833},{"href":473,"dataGaName":465,"dataGaLocation":644},{"text":476,"config":835},{"href":478,"dataGaName":479,"dataGaLocation":644},{"text":484,"config":837},{"href":486,"dataGaName":487,"dataGaLocation":644},{"text":489,"config":839},{"href":491,"dataGaName":492,"dataGaLocation":644},{"text":494,"config":841},{"href":496,"dataGaName":497,"dataGaLocation":644},{"text":499,"config":843},{"href":501,"dataGaName":502,"dataGaLocation":644},{"text":845,"config":846},"Sustentabilidade",{"href":847,"dataGaName":848,"dataGaLocation":644},"/sustainability/","Sustainability",{"text":850,"config":851},"Diversidade, inclusão e pertencimento (DIB)",{"href":852,"dataGaName":853,"dataGaLocation":644},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":504,"config":855},{"href":506,"dataGaName":507,"dataGaLocation":644},{"text":514,"config":857},{"href":516,"dataGaName":517,"dataGaLocation":644},{"text":519,"config":859},{"href":521,"dataGaName":522,"dataGaLocation":644},{"text":861,"config":862},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":863,"dataGaName":864,"dataGaLocation":644},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":866},[867,870,872],{"text":868,"config":869},"Termos",{"href":695,"dataGaName":696,"dataGaLocation":644},{"text":703,"config":871},{"dataGaName":705,"dataGaLocation":644,"id":706,"isOneTrustButton":24},{"text":873,"config":874},"Privacidade",{"href":700,"dataGaName":701,"dataGaLocation":644},1777934877330]