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