[{"data":1,"prerenderedAt":818},["ShallowReactive",2],{"/pt-br/get-started/continuous-integration":3,"navigation-pt-br":203,"banner-pt-br":605,"footer-pt-br":615},{"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/ee/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","DHpZmPGRXM_8WD5OSJI5aAYtmQ18POvsLcWrmXxtSFE",{"data":204},{"logo":205,"freeTrial":210,"sales":215,"login":220,"items":225,"search":532,"minimal":567,"duo":585,"pricingDeployment":595},{"config":206},{"href":207,"dataGaName":208,"dataGaLocation":209},"/pt-br/","gitlab logo","header",{"text":211,"config":212},"Faça uma avaliação gratuita",{"href":213,"dataGaName":214,"dataGaLocation":209},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&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,349,354,453,513],{"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},"Explore a nossa plataforma",{"href":236,"dataGaName":229,"dataGaLocation":209},"/pt-br/platform/",{"title":238,"description":239,"link":240},"GitLab Duo Agent Platform","IA agentiva 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 usar o GitLab","Veja 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":331},"Produtos",{"dataNavLevelOne":256},"solutions",{"text":258,"config":259},"Confira todas as soluções",{"href":260,"dataGaName":256,"dataGaLocation":209},"/pt-br/solutions/",[262,287,309],{"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 de software automatizada",{"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},"Application Security Testing",{"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},"Software Compliance",{"href":308,"dataGaName":306,"dataGaLocation":209},"/pt-br/solutions/software-compliance/",{"title":310,"link":311,"items":316},"Medição",{"config":312},{"icon":313,"href":314,"dataGaName":315,"dataGaLocation":209},"DigitalTransformation","/pt-br/solutions/visibility-measurement/","visibility and measurement",[317,321,326],{"text":318,"config":319},"Visibilidade e medição",{"href":314,"dataGaLocation":209,"dataGaName":320},"Visibility and Measurement",{"text":322,"config":323},"Gestão de fluxo de valor",{"href":324,"dataGaLocation":209,"dataGaName":325},"/pt-br/solutions/value-stream-management/","Value Stream Management",{"text":327,"config":328},"Análises e insights",{"href":329,"dataGaLocation":209,"dataGaName":330},"/pt-br/solutions/analytics-and-insights/","Analytics and insights",{"title":332,"items":333},"GitLab para",[334,339,344],{"text":335,"config":336},"Grandes empresas",{"href":337,"dataGaLocation":209,"dataGaName":338},"/pt-br/enterprise/","enterprise",{"text":340,"config":341},"Pequenas empresas",{"href":342,"dataGaLocation":209,"dataGaName":343},"/pt-br/small-business/","small business",{"text":345,"config":346},"Setor público",{"href":347,"dataGaLocation":209,"dataGaName":348},"/pt-br/solutions/public-sector/","public sector",{"text":350,"config":351},"Preços",{"href":352,"dataGaName":353,"dataGaLocation":209,"dataNavLevelOne":353},"/pt-br/pricing/","pricing",{"text":355,"config":356,"link":358,"lists":362,"feature":440},"Recursos",{"dataNavLevelOne":357},"resources",{"text":359,"config":360},"Confira todos os recursos",{"href":361,"dataGaName":357,"dataGaLocation":209},"/pt-br/resources/",[363,394,412],{"title":364,"items":365},"Primeiros passos",[366,371,375,379,384,389],{"text":367,"config":368},"Instalação",{"href":369,"dataGaName":370,"dataGaLocation":209},"/pt-br/install/","install",{"text":372,"config":373},"Guias de início rápido",{"href":15,"dataGaName":374,"dataGaLocation":209},"quick setup checklists",{"text":249,"config":376},{"href":377,"dataGaLocation":209,"dataGaName":378},"https://university.gitlab.com/","learn",{"text":380,"config":381},"Documentação do produto",{"href":382,"dataGaName":383,"dataGaLocation":209},"https://docs.gitlab.com/","product documentation",{"text":385,"config":386},"Vídeos de melhores práticas",{"href":387,"dataGaName":388,"dataGaLocation":209},"/pt-br/getting-started-videos/","best practice videos",{"text":390,"config":391},"Integrações",{"href":392,"dataGaName":393,"dataGaLocation":209},"/pt-br/integrations/","integrations",{"title":395,"items":396},"Descubra",[397,402,407],{"text":398,"config":399},"Histórias de sucesso de clientes",{"href":400,"dataGaName":401,"dataGaLocation":209},"/pt-br/customers/","customer success stories",{"text":403,"config":404},"Blog",{"href":405,"dataGaName":406,"dataGaLocation":209},"/blog/","blog",{"text":408,"config":409},"Trabalho remoto",{"href":410,"dataGaName":411,"dataGaLocation":209},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":413,"items":414},"Conecte-se",[415,420,425,430,435],{"text":416,"config":417},"Serviços do GitLab",{"href":418,"dataGaName":419,"dataGaLocation":209},"/pt-br/services/","services",{"text":421,"config":422},"Comunidade",{"href":423,"dataGaName":424,"dataGaLocation":209},"/community/","community",{"text":426,"config":427},"Fórum",{"href":428,"dataGaName":429,"dataGaLocation":209},"https://forum.gitlab.com/","forum",{"text":431,"config":432},"Eventos",{"href":433,"dataGaName":434,"dataGaLocation":209},"/events/","events",{"text":436,"config":437},"Parceiros",{"href":438,"dataGaName":439,"dataGaLocation":209},"/pt-br/partners/","partners",{"backgroundColor":441,"textColor":442,"text":443,"image":444,"link":448},"#2f2a6b","#fff","Insights para o futuro do desenvolvimento de software",{"altText":445,"config":446},"cartão promocional do The Source",{"src":447},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":449,"config":450},"Confira as novidades",{"href":451,"dataGaName":452,"dataGaLocation":209},"/pt-br/the-source/","the source",{"text":454,"config":455,"lists":457},"Empresa",{"dataNavLevelOne":456},"company",[458],{"items":459},[460,465,471,473,478,483,488,493,498,503,508],{"text":461,"config":462},"Sobre",{"href":463,"dataGaName":464,"dataGaLocation":209},"/pt-br/company/","about",{"text":466,"config":467,"footerGa":470},"Vagas",{"href":468,"dataGaName":469,"dataGaLocation":209},"/jobs/","jobs",{"dataGaName":469},{"text":431,"config":472},{"href":433,"dataGaName":434,"dataGaLocation":209},{"text":474,"config":475},"Liderança",{"href":476,"dataGaName":477,"dataGaLocation":209},"/company/team/e-group/","leadership",{"text":479,"config":480},"Equipe",{"href":481,"dataGaName":482,"dataGaLocation":209},"/company/team/","team",{"text":484,"config":485},"Manual",{"href":486,"dataGaName":487,"dataGaLocation":209},"https://handbook.gitlab.com/","handbook",{"text":489,"config":490},"Relacionamento com investidores",{"href":491,"dataGaName":492,"dataGaLocation":209},"https://ir.gitlab.com/","investor relations",{"text":494,"config":495},"Trust Center",{"href":496,"dataGaName":497,"dataGaLocation":209},"/pt-br/security/","trust center",{"text":499,"config":500},"AI Transparency Center",{"href":501,"dataGaName":502,"dataGaLocation":209},"/pt-br/ai-transparency-center/","ai transparency center",{"text":504,"config":505},"Boletim informativo",{"href":506,"dataGaName":507,"dataGaLocation":209},"/company/contact/#contact-forms","newsletter",{"text":509,"config":510},"Imprensa",{"href":511,"dataGaName":512,"dataGaLocation":209},"/press/","press",{"text":514,"config":515,"lists":516},"Fale com a gente",{"dataNavLevelOne":456},[517],{"items":518},[519,522,527],{"text":216,"config":520},{"href":218,"dataGaName":521,"dataGaLocation":209},"talk to sales",{"text":523,"config":524},"Portal de suporte",{"href":525,"dataGaName":526,"dataGaLocation":209},"https://support.gitlab.com","support portal",{"text":528,"config":529},"Portal de clientes",{"href":530,"dataGaName":531,"dataGaLocation":209},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":533,"login":534,"suggestions":541},"Fechar",{"text":535,"link":536},"Para pesquisar repositórios e projetos, faça login em",{"text":537,"config":538},"gitlab.com",{"href":223,"dataGaName":539,"dataGaLocation":540},"search login","search",{"text":542,"default":543},"Sugestões",[544,546,551,553,558,563],{"text":238,"config":545},{"href":243,"dataGaName":238,"dataGaLocation":540},{"text":547,"config":548},"Sugestões de Código (IA)",{"href":549,"dataGaName":550,"dataGaLocation":540},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":272,"config":552},{"href":274,"dataGaName":272,"dataGaLocation":540},{"text":554,"config":555},"GitLab na AWS",{"href":556,"dataGaName":557,"dataGaLocation":540},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":559,"config":560},"GitLab no Google Cloud",{"href":561,"dataGaName":562,"dataGaLocation":540},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":564,"config":565},"Por que escolher o GitLab?",{"href":251,"dataGaName":566,"dataGaLocation":540},"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":364,"config":582},{"href":583,"dataGaName":584,"dataGaLocation":572},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/compare/gitlab-vs-github/","get started",{"freeTrial":586,"mobileIcon":591,"desktopIcon":593},{"text":587,"config":588},"Saiba mais sobre o GitLab Duo",{"href":589,"dataGaName":590,"dataGaLocation":572},"/pt-br/gitlab-duo/","gitlab duo",{"altText":574,"config":592},{"src":576,"dataGaName":577,"dataGaLocation":572},{"altText":574,"config":594},{"src":580,"dataGaName":577,"dataGaLocation":572},{"freeTrial":596,"mobileIcon":601,"desktopIcon":603},{"text":597,"config":598},"Voltar para preços",{"href":352,"dataGaName":599,"dataGaLocation":572,"icon":600},"back to pricing","GoBack",{"altText":574,"config":602},{"src":576,"dataGaName":577,"dataGaLocation":572},{"altText":574,"config":604},{"src":580,"dataGaName":577,"dataGaLocation":572},{"title":606,"button":607,"config":612},"Veja como a IA agêntica transforma a entrega de software",{"text":608,"config":609},"Assista ao GitLab Transcend agora",{"href":610,"dataGaName":611,"dataGaLocation":209},"/pt-br/events/transcend/virtual/","transcend event",{"layout":613,"icon":614},"release","AiStar",{"data":616},{"text":617,"source":618,"edit":624,"contribute":629,"config":634,"items":639,"minimal":810},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":619,"config":620},"Acessar a origem da página",{"href":621,"dataGaName":622,"dataGaLocation":623},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":625,"config":626},"Editar esta página",{"href":627,"dataGaName":628,"dataGaLocation":623},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":630,"config":631},"Contribua",{"href":632,"dataGaName":633,"dataGaLocation":623},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":635,"facebook":636,"youtube":637,"linkedin":638},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[640,663,717,744,778],{"title":227,"links":641,"subMenu":646},[642],{"text":643,"config":644},"Plataforma DevSecOps",{"href":236,"dataGaName":645,"dataGaLocation":623},"devsecops platform",[647],{"title":350,"links":648},[649,653,658],{"text":650,"config":651},"Confira os planos",{"href":352,"dataGaName":652,"dataGaLocation":623},"view plans",{"text":654,"config":655},"Por que escolher o GitLab Premium?",{"href":656,"dataGaName":657,"dataGaLocation":623},"/pt-br/pricing/premium/","why premium",{"text":659,"config":660},"Por que escolher o GitLab Ultimate?",{"href":661,"dataGaName":662,"dataGaLocation":623},"/pt-br/pricing/ultimate/","why ultimate",{"title":664,"links":665},"Soluções",[666,671,674,676,681,686,690,693,696,701,703,705,707,712],{"text":667,"config":668},"Transformação digital",{"href":669,"dataGaName":670,"dataGaLocation":623},"/pt-br/topics/digital-transformation/","digital transformation",{"text":672,"config":673},"Segurança e conformidade",{"href":292,"dataGaName":299,"dataGaLocation":623},{"text":284,"config":675},{"href":268,"dataGaName":269,"dataGaLocation":623},{"text":677,"config":678},"Desenvolvimento ágil",{"href":679,"dataGaName":680,"dataGaLocation":623},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":682,"config":683},"Migração para a nuvem",{"href":684,"dataGaName":685,"dataGaLocation":623},"/pt-br/topics/cloud-native/","cloud transformation",{"text":687,"config":688},"SCM",{"href":281,"dataGaName":689,"dataGaLocation":623},"source code management",{"text":272,"config":691},{"href":274,"dataGaName":692,"dataGaLocation":623},"continuous integration & delivery",{"text":322,"config":694},{"href":324,"dataGaName":695,"dataGaLocation":623},"value stream management",{"text":697,"config":698},"GitOps",{"href":699,"dataGaName":700,"dataGaLocation":623},"/pt-br/solutions/gitops/","gitops",{"text":335,"config":702},{"href":337,"dataGaName":338,"dataGaLocation":623},{"text":340,"config":704},{"href":342,"dataGaName":343,"dataGaLocation":623},{"text":345,"config":706},{"href":347,"dataGaName":348,"dataGaLocation":623},{"text":708,"config":709},"Educação",{"href":710,"dataGaName":711,"dataGaLocation":623},"/pt-br/solutions/education/","education",{"text":713,"config":714},"Serviços financeiros",{"href":715,"dataGaName":716,"dataGaLocation":623},"/pt-br/solutions/finance/","financial services",{"title":355,"links":718},[719,721,723,725,728,730,732,734,736,738,740,742],{"text":367,"config":720},{"href":369,"dataGaName":370,"dataGaLocation":623},{"text":372,"config":722},{"href":15,"dataGaName":374,"dataGaLocation":623},{"text":249,"config":724},{"href":377,"dataGaName":378,"dataGaLocation":623},{"text":380,"config":726},{"href":382,"dataGaName":727,"dataGaLocation":623},"docs",{"text":403,"config":729},{"href":405,"dataGaName":406,"dataGaLocation":623},{"text":398,"config":731},{"href":400,"dataGaName":401,"dataGaLocation":623},{"text":408,"config":733},{"href":410,"dataGaName":411,"dataGaLocation":623},{"text":416,"config":735},{"href":418,"dataGaName":419,"dataGaLocation":623},{"text":421,"config":737},{"href":423,"dataGaName":424,"dataGaLocation":623},{"text":426,"config":739},{"href":428,"dataGaName":429,"dataGaLocation":623},{"text":431,"config":741},{"href":433,"dataGaName":434,"dataGaLocation":623},{"text":436,"config":743},{"href":438,"dataGaName":439,"dataGaLocation":623},{"title":454,"links":745},[746,748,750,752,754,756,758,762,767,769,771,773],{"text":461,"config":747},{"href":463,"dataGaName":456,"dataGaLocation":623},{"text":466,"config":749},{"href":468,"dataGaName":469,"dataGaLocation":623},{"text":474,"config":751},{"href":476,"dataGaName":477,"dataGaLocation":623},{"text":479,"config":753},{"href":481,"dataGaName":482,"dataGaLocation":623},{"text":484,"config":755},{"href":486,"dataGaName":487,"dataGaLocation":623},{"text":489,"config":757},{"href":491,"dataGaName":492,"dataGaLocation":623},{"text":759,"config":760},"Sustainability",{"href":761,"dataGaName":759,"dataGaLocation":623},"/sustainability/",{"text":763,"config":764},"Diversidade, inclusão e pertencimento (DIB)",{"href":765,"dataGaName":766,"dataGaLocation":623},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":494,"config":768},{"href":496,"dataGaName":497,"dataGaLocation":623},{"text":504,"config":770},{"href":506,"dataGaName":507,"dataGaLocation":623},{"text":509,"config":772},{"href":511,"dataGaName":512,"dataGaLocation":623},{"text":774,"config":775},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":776,"dataGaName":777,"dataGaLocation":623},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":514,"links":779},[780,783,788,790,795,800,805],{"text":781,"config":782},"Fale com um especialista",{"href":218,"dataGaName":219,"dataGaLocation":623},{"text":784,"config":785},"Ajuda",{"href":786,"dataGaName":787,"dataGaLocation":623},"/support/","get help",{"text":528,"config":789},{"href":530,"dataGaName":531,"dataGaLocation":623},{"text":791,"config":792},"Status",{"href":793,"dataGaName":794,"dataGaLocation":623},"https://status.gitlab.com/","status",{"text":796,"config":797},"Termos de uso",{"href":798,"dataGaName":799,"dataGaLocation":623},"/terms/","terms of use",{"text":801,"config":802},"Aviso de Privacidade",{"href":803,"dataGaName":804,"dataGaLocation":623},"/pt-br/privacy/","privacy statement",{"text":806,"config":807},"Preferências de cookies",{"dataGaName":808,"dataGaLocation":623,"id":809,"isOneTrustButton":24},"cookie preferences","ot-sdk-btn",{"items":811},[812,814,816],{"text":796,"config":813},{"href":798,"dataGaName":799,"dataGaLocation":623},{"text":801,"config":815},{"href":803,"dataGaName":804,"dataGaLocation":623},{"text":806,"config":817},{"dataGaName":808,"dataGaLocation":623,"id":809,"isOneTrustButton":24},1772652109060]