[{"data":1,"prerenderedAt":942},["ShallowReactive",2],{"/pt-br/get-started/continuous-integration":3,"navigation-pt-br":205,"banner-pt-br":622,"footer-pt-br":635,"footer-source-/pt-br/get-started/continuous-integration/":842},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"_id":198,"_type":199,"title":200,"_source":201,"_file":202,"_stem":203,"_extension":204},"/pt-br/get-started/continuous-integration","get-started",false,"",{"title":9,"ogTitle":9,"description":10,"ogDescription":10},"Guia rápido para GitLab Continuous Integration","Você será guiado através do processo de configurar um projeto no GitLab e criar uma configuração CI simples no código.",[12,21,28,156],{"type":13,"componentName":13,"componentContent":14},"CommonBreadcrumbs",{"crumbs":15},[16,20],{"title":17,"config":18},"Comece aqui",{"href":19},"/pt-br/get-started/",{"title":9},{"type":22,"componentName":22,"componentContent":23},"CommonArticleHero",{"title":9,"readTime":24,"text":25,"config":26},"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":27},true,{"type":29,"componentName":29,"componentContent":30},"CommonSideNavigationWithTree",{"anchors":31,"components":62},{"text":32,"data":33},"Nesta página",[34,38,42,46,50,54,58],{"text":35,"config":36},"Passo 1: Criar um novo Projeto/Repositório",{"href":37},"#step-1",{"text":39,"config":40},"Passo 2: Configurar a CI",{"href":41},"#step-2",{"text":43,"config":44},"Passo 3 - Fazer commit da mudança e executar o pipeline",{"href":45},"#step-3",{"text":47,"config":48},"Passo 4 - Ver execução do pipeline e resultados dos testes",{"href":49},"#step-4",{"text":51,"config":52},"Passo 5 - Falhar o pipeline",{"href":53},"#step-5",{"text":55,"config":56},"Passo 6 - Implementar condições de falha em todo o pipeline",{"href":57},"#step-6",{"text":59,"config":60},"Passo 7 - Melhorar sua configuração com templates de pipeline integrados",{"href":61},"#step-7",[63,73],{"type":64,"componentName":64,"componentContent":65},"CommonCopy",{"config":66,"cards":67},{"noDecoration":27},[68],{"config":69,"title":71,"description":72},{"icon":70},"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":74,"componentName":74,"componentContent":75},"GetStartedAccordion",{"groups":76},[77,89,116,124,132,140,148],{"config":78,"header":35,"show":80,"hide":81,"items":82},{"id":79},"step-1","Mostrar tudo","Ocultar tudo",[83,86],{"header":84,"content":85},"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":87,"content":88},"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":90,"header":39,"show":80,"hide":81,"items":92},{"id":91},"step-2",[93,95,98,101,104,107,110,113],{"header":84,"content":94},"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":96,"content":97},"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":99,"content":100},"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```\n  stages:\n    - build\n    - test\n    - package\n```",{"header":102,"content":103},"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":105,"content":106},"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```\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":108,"content":109},"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```\n  test:\n    stage: test\n    script: cat compiled.txt | grep -q 'Hello world '\n```",{"header":111,"content":112},"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```\n  package:\n    stage: package\n    script: cat compiled.txt | gzip > packaged.gz\n    artifacts:\n      paths:\n        - packaged.gz\n```",{"header":114,"content":115},"Seu pipeline completo deve ficar assim","```\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":117,"header":43,"show":80,"hide":81,"items":119},{"id":118},"step-3",[120,122],{"header":84,"content":121},"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":87,"content":123},"* 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":125,"header":47,"show":80,"hide":81,"items":127},{"id":126},"step-4",[128,130],{"header":84,"content":129},"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":87,"content":131},"* 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":133,"header":51,"show":80,"hide":81,"items":135},{"id":134},"step-5",[136,138],{"header":84,"content":137},"Vamos alterar o valor esperado no job de teste, o job de teste falhará assim como todo o pipeline falhará.",{"header":87,"content":139},"* 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":141,"header":55,"show":80,"hide":81,"items":143},{"id":142},"step-6",[144,146],{"header":84,"content":145},"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":87,"content":147},"* 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```\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":149,"header":59,"show":80,"hide":81,"items":151},{"id":150},"step-7",[152,154],{"header":84,"content":153},"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":87,"content":155},"Inclua o template de qualidade de código no seu **.gitlab-ci.yml** adicionando este código abaixo do bloco stages.\n\n```\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":157,"componentName":157,"componentContent":158},"CommonCardGrid",{"config":159,"title":162,"cards":163},{"columns":160,"theme":161},3,"purple","Próximos passos",[164,176,187],{"image":165,"title":168,"description":169,"button":170},{"altText":7,"config":166},{"src":167},"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":171,"config":172},"Demo visão geral CI",{"href":173,"dataGaName":174,"dataGaLocation":175},"https://youtu.be/WKR-7clknsA","CI overview demo","body",{"image":177,"title":180,"description":181,"button":182},{"altText":7,"config":178},{"src":179},"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":183,"config":184},"Issues",{"href":185,"dataGaName":186,"dataGaLocation":175},"https://docs.gitlab.com/ee/user/project/issues/","issues",{"image":188,"title":191,"description":192,"button":193},{"altText":7,"config":189},{"src":190},"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":194,"config":195},"Segurança de aplicações",{"href":196,"dataGaName":197,"dataGaLocation":175},"/blog/getting-started-with-gitlab-application-security/","Application security","content:pt-br:get-started:continuous-integration.yml","yaml","Continuous Integration","content","pt-br/get-started/continuous-integration.yml","pt-br/get-started/continuous-integration","yml",{"_path":206,"_dir":207,"_draft":6,"_partial":6,"_locale":7,"data":208,"_id":618,"_type":199,"title":619,"_source":201,"_file":620,"_stem":621,"_extension":204},"/shared/pt-br/main-navigation","pt-br",{"logo":209,"freeTrial":214,"sales":219,"login":224,"items":229,"search":559,"minimal":595,"duo":609},{"config":210},{"href":211,"dataGaName":212,"dataGaLocation":213},"/pt-br/","gitlab logo","header",{"text":215,"config":216},"Faça uma avaliação gratuita",{"href":217,"dataGaName":218,"dataGaLocation":213},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":220,"config":221},"Fale com a equipe de vendas",{"href":222,"dataGaName":223,"dataGaLocation":213},"/pt-br/sales/","sales",{"text":225,"config":226},"Fazer login",{"href":227,"dataGaName":228,"dataGaLocation":213},"https://gitlab.com/users/sign_in/","sign in",[230,274,371,376,480,540],{"text":231,"config":232,"cards":234,"footer":257},"Plataforma",{"dataNavLevelOne":233},"platform",[235,241,249],{"title":231,"description":236,"link":237},"A plataforma DevSecOps mais abrangente com tecnologia de IA",{"text":238,"config":239},"Explore a nossa plataforma",{"href":240,"dataGaName":233,"dataGaLocation":213},"/pt-br/platform/",{"title":242,"description":243,"link":244},"GitLab Duo (IA)","Crie software mais rapidamente com a IA em todas as etapas de desenvolvimento",{"text":245,"config":246},"Conheça o GitLab Duo",{"href":247,"dataGaName":248,"dataGaLocation":213},"/pt-br/gitlab-duo/","gitlab duo ai",{"title":250,"description":251,"link":252},"Por que usar o GitLab","Dez razões pelas quais as empresas escolhem o GitLab",{"text":253,"config":254},"Saiba mais",{"href":255,"dataGaName":256,"dataGaLocation":213},"/pt-br/why-gitlab/","why gitlab",{"title":258,"items":259},"Comece a usar",[260,265,270],{"text":261,"config":262},"Engenharia de plataforma",{"href":263,"dataGaName":264,"dataGaLocation":213},"/pt-br/solutions/platform-engineering/","platform engineering",{"text":266,"config":267},"Experiência do desenvolvedor",{"href":268,"dataGaName":269,"dataGaLocation":213},"/pt-br/developer-experience/","Developer experience",{"text":271,"config":272},"MLOps",{"href":273,"dataGaName":271,"dataGaLocation":213},"/pt-br/topics/devops/the-role-of-ai-in-devops/",{"text":275,"left":27,"config":276,"link":278,"lists":282,"footer":353},"Produtos",{"dataNavLevelOne":277},"solutions",{"text":279,"config":280},"Confira todas as soluções",{"href":281,"dataGaName":277,"dataGaLocation":213},"/pt-br/solutions/",[283,309,331],{"title":284,"description":285,"link":286,"items":291},"Automação","CI/CD e automação para acelerar a implantação",{"config":287},{"icon":288,"href":289,"dataGaName":290,"dataGaLocation":213},"AutomatedCodeAlt","/pt-br/solutions/delivery-automation/","automated software delivery",[292,296,300,305],{"text":293,"config":294},"CI/CD",{"href":295,"dataGaLocation":213,"dataGaName":293},"/pt-br/solutions/continuous-integration/",{"text":297,"config":298},"Desenvolvimento auxiliado por IA",{"href":247,"dataGaLocation":213,"dataGaName":299},"AI assisted development",{"text":301,"config":302},"Gerenciamento de código-fonte",{"href":303,"dataGaLocation":213,"dataGaName":304},"/pt-br/solutions/source-code-management/","Source Code Management",{"text":306,"config":307},"Entrega de software automatizada",{"href":289,"dataGaLocation":213,"dataGaName":308},"Automated software delivery",{"title":310,"description":311,"link":312,"items":317},"Segurança","Acelere a entrega de código sem comprometer a segurança",{"config":313},{"href":314,"dataGaName":315,"dataGaLocation":213,"icon":316},"/pt-br/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[318,322,327],{"text":319,"config":320},"Application Security Testing",{"href":314,"dataGaName":321,"dataGaLocation":213},"Application security testing",{"text":323,"config":324},"Segurança da cadeia de suprimentos de software",{"href":325,"dataGaLocation":213,"dataGaName":326},"/pt-br/solutions/supply-chain/","Software supply chain security",{"text":328,"config":329},"Software Compliance",{"href":330,"dataGaName":328,"dataGaLocation":213},"/pt-br/solutions/software-compliance/",{"title":332,"link":333,"items":338},"Medição",{"config":334},{"icon":335,"href":336,"dataGaName":337,"dataGaLocation":213},"DigitalTransformation","/pt-br/solutions/visibility-measurement/","visibility and measurement",[339,343,348],{"text":340,"config":341},"Visibilidade e medição",{"href":336,"dataGaLocation":213,"dataGaName":342},"Visibility and Measurement",{"text":344,"config":345},"Gestão de fluxo de valor",{"href":346,"dataGaLocation":213,"dataGaName":347},"/pt-br/solutions/value-stream-management/","Value Stream Management",{"text":349,"config":350},"Análises e insights",{"href":351,"dataGaLocation":213,"dataGaName":352},"/pt-br/solutions/analytics-and-insights/","Analytics and insights",{"title":354,"items":355},"GitLab para",[356,361,366],{"text":357,"config":358},"Grandes empresas",{"href":359,"dataGaLocation":213,"dataGaName":360},"/pt-br/enterprise/","enterprise",{"text":362,"config":363},"Pequenas empresas",{"href":364,"dataGaLocation":213,"dataGaName":365},"/pt-br/small-business/","small business",{"text":367,"config":368},"Setor público",{"href":369,"dataGaLocation":213,"dataGaName":370},"/pt-br/solutions/public-sector/","public sector",{"text":372,"config":373},"Preços",{"href":374,"dataGaName":375,"dataGaLocation":213,"dataNavLevelOne":375},"/pt-br/pricing/","pricing",{"text":377,"config":378,"link":380,"lists":384,"feature":467},"Recursos",{"dataNavLevelOne":379},"resources",{"text":381,"config":382},"Confira todos os recursos",{"href":383,"dataGaName":379,"dataGaLocation":213},"/pt-br/resources/",[385,416,439],{"title":386,"items":387},"Primeiros passos",[388,393,397,401,406,411],{"text":389,"config":390},"Instalação",{"href":391,"dataGaName":392,"dataGaLocation":213},"/pt-br/install/","install",{"text":394,"config":395},"Guias de início rápido",{"href":19,"dataGaName":396,"dataGaLocation":213},"quick setup checklists",{"text":253,"config":398},{"href":399,"dataGaLocation":213,"dataGaName":400},"https://university.gitlab.com/","learn",{"text":402,"config":403},"Documentação do produto",{"href":404,"dataGaName":405,"dataGaLocation":213},"https://docs.gitlab.com/","product documentation",{"text":407,"config":408},"Vídeos de melhores práticas",{"href":409,"dataGaName":410,"dataGaLocation":213},"/pt-br/getting-started-videos/","best practice videos",{"text":412,"config":413},"Integrações",{"href":414,"dataGaName":415,"dataGaLocation":213},"/pt-br/integrations/","integrations",{"title":417,"items":418},"Descubra",[419,424,429,434],{"text":420,"config":421},"Histórias de sucesso de clientes",{"href":422,"dataGaName":423,"dataGaLocation":213},"/pt-br/customers/","customer success stories",{"text":425,"config":426},"Blog",{"href":427,"dataGaName":428,"dataGaLocation":213},"/blog/","blog",{"text":430,"config":431},"Trabalho remoto",{"href":432,"dataGaName":433,"dataGaLocation":213},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":435,"config":436},"TeamOps",{"href":437,"dataGaName":438,"dataGaLocation":213},"/pt-br/teamops/","teamops",{"title":440,"items":441},"Conecte-se",[442,447,452,457,462],{"text":443,"config":444},"Serviços do GitLab",{"href":445,"dataGaName":446,"dataGaLocation":213},"/pt-br/services/","services",{"text":448,"config":449},"Comunidade",{"href":450,"dataGaName":451,"dataGaLocation":213},"/community/","community",{"text":453,"config":454},"Fórum",{"href":455,"dataGaName":456,"dataGaLocation":213},"https://forum.gitlab.com/","forum",{"text":458,"config":459},"Eventos",{"href":460,"dataGaName":461,"dataGaLocation":213},"/events/","events",{"text":463,"config":464},"Parceiros",{"href":465,"dataGaName":466,"dataGaLocation":213},"/pt-br/partners/","partners",{"backgroundColor":468,"textColor":469,"text":470,"image":471,"link":475},"#2f2a6b","#fff","Insights para o futuro do desenvolvimento de software",{"altText":472,"config":473},"cartão promocional do The Source",{"src":474},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":476,"config":477},"Confira as novidades",{"href":478,"dataGaName":479,"dataGaLocation":213},"/pt-br/the-source/","the source",{"text":481,"config":482,"lists":484},"Empresa",{"dataNavLevelOne":483},"company",[485],{"items":486},[487,492,498,500,505,510,515,520,525,530,535],{"text":488,"config":489},"Sobre",{"href":490,"dataGaName":491,"dataGaLocation":213},"/pt-br/company/","about",{"text":493,"config":494,"footerGa":497},"Vagas",{"href":495,"dataGaName":496,"dataGaLocation":213},"/jobs/","jobs",{"dataGaName":496},{"text":458,"config":499},{"href":460,"dataGaName":461,"dataGaLocation":213},{"text":501,"config":502},"Liderança",{"href":503,"dataGaName":504,"dataGaLocation":213},"/company/team/e-group/","leadership",{"text":506,"config":507},"Equipe",{"href":508,"dataGaName":509,"dataGaLocation":213},"/company/team/","team",{"text":511,"config":512},"Manual",{"href":513,"dataGaName":514,"dataGaLocation":213},"https://handbook.gitlab.com/","handbook",{"text":516,"config":517},"Relacionamento com investidores",{"href":518,"dataGaName":519,"dataGaLocation":213},"https://ir.gitlab.com/","investor relations",{"text":521,"config":522},"Trust Center",{"href":523,"dataGaName":524,"dataGaLocation":213},"/pt-br/security/","trust center",{"text":526,"config":527},"AI Transparency Center",{"href":528,"dataGaName":529,"dataGaLocation":213},"/pt-br/ai-transparency-center/","ai transparency center",{"text":531,"config":532},"Boletim informativo",{"href":533,"dataGaName":534,"dataGaLocation":213},"/company/contact/","newsletter",{"text":536,"config":537},"Imprensa",{"href":538,"dataGaName":539,"dataGaLocation":213},"/press/","press",{"text":541,"config":542,"lists":543},"Fale com a gente",{"dataNavLevelOne":483},[544],{"items":545},[546,549,554],{"text":220,"config":547},{"href":222,"dataGaName":548,"dataGaLocation":213},"talk to sales",{"text":550,"config":551},"Ajuda",{"href":552,"dataGaName":553,"dataGaLocation":213},"/support/","get help",{"text":555,"config":556},"Portal de clientes",{"href":557,"dataGaName":558,"dataGaLocation":213},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":560,"login":561,"suggestions":568},"Fechar",{"text":562,"link":563},"Para pesquisar repositórios e projetos, faça login em",{"text":564,"config":565},"gitlab.com",{"href":227,"dataGaName":566,"dataGaLocation":567},"search login","search",{"text":569,"default":570},"Sugestões",[571,574,579,581,586,591],{"text":242,"config":572},{"href":247,"dataGaName":573,"dataGaLocation":567},"GitLab Duo (AI)",{"text":575,"config":576},"Sugestões de Código (IA)",{"href":577,"dataGaName":578,"dataGaLocation":567},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":293,"config":580},{"href":295,"dataGaName":293,"dataGaLocation":567},{"text":582,"config":583},"GitLab na AWS",{"href":584,"dataGaName":585,"dataGaLocation":567},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":587,"config":588},"GitLab no Google Cloud",{"href":589,"dataGaName":590,"dataGaLocation":567},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":592,"config":593},"Por que escolher o GitLab?",{"href":255,"dataGaName":594,"dataGaLocation":567},"Why GitLab?",{"freeTrial":596,"mobileIcon":601,"desktopIcon":606},{"text":597,"config":598},"Iniciar avaliação gratuita",{"href":599,"dataGaName":218,"dataGaLocation":600},"https://gitlab.com/-/trials/new/","nav",{"altText":602,"config":603},"Ícone do GitLab",{"src":604,"dataGaName":605,"dataGaLocation":600},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":602,"config":607},{"src":608,"dataGaName":605,"dataGaLocation":600},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":610,"mobileIcon":614,"desktopIcon":616},{"text":611,"config":612},"Saiba mais sobre o GitLab Duo",{"href":247,"dataGaName":613,"dataGaLocation":600},"gitlab duo",{"altText":602,"config":615},{"src":604,"dataGaName":605,"dataGaLocation":600},{"altText":602,"config":617},{"src":608,"dataGaName":605,"dataGaLocation":600},"content:shared:pt-br:main-navigation.yml","Main Navigation","shared/pt-br/main-navigation.yml","shared/pt-br/main-navigation",{"_path":623,"_dir":207,"_draft":6,"_partial":6,"_locale":7,"title":624,"button":625,"config":630,"_id":632,"_type":199,"_source":201,"_file":633,"_stem":634,"_extension":204},"/shared/pt-br/banner","A GitLab Duo Agent Platform está agora em beta público!",{"text":626,"config":627},"Experimente o Beta",{"href":628,"dataGaName":629,"dataGaLocation":213},"/pt-br/gitlab-duo/agent-platform/","duo banner",{"layout":631},"release","content:shared:pt-br:banner.yml","shared/pt-br/banner.yml","shared/pt-br/banner",{"_path":636,"_dir":207,"_draft":6,"_partial":6,"_locale":7,"data":637,"_id":838,"_type":199,"title":839,"_source":201,"_file":840,"_stem":841,"_extension":204},"/shared/pt-br/main-footer",{"text":638,"source":639,"edit":645,"contribute":650,"config":655,"items":660,"minimal":830},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":640,"config":641},"Acessar 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,684,738,767,801],{"title":231,"links":662,"subMenu":667},[663],{"text":664,"config":665},"Plataforma DevSecOps",{"href":240,"dataGaName":666,"dataGaLocation":644},"devsecops platform",[668],{"title":372,"links":669},[670,674,679],{"text":671,"config":672},"Confira os planos",{"href":374,"dataGaName":673,"dataGaLocation":644},"view plans",{"text":675,"config":676},"Por que escolher o GitLab Premium?",{"href":677,"dataGaName":678,"dataGaLocation":644},"/pt-br/pricing/premium/","why premium",{"text":680,"config":681},"Por que escolher o GitLab Ultimate?",{"href":682,"dataGaName":683,"dataGaLocation":644},"/pt-br/pricing/ultimate/","why ultimate",{"title":685,"links":686},"Soluções",[687,692,695,697,702,707,711,714,717,722,724,726,728,733],{"text":688,"config":689},"Transformação digital",{"href":690,"dataGaName":691,"dataGaLocation":644},"/pt-br/topics/digital-transformation/","digital transformation",{"text":693,"config":694},"Segurança e conformidade",{"href":314,"dataGaName":321,"dataGaLocation":644},{"text":306,"config":696},{"href":289,"dataGaName":290,"dataGaLocation":644},{"text":698,"config":699},"Desenvolvimento ágil",{"href":700,"dataGaName":701,"dataGaLocation":644},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":703,"config":704},"Migração para a nuvem",{"href":705,"dataGaName":706,"dataGaLocation":644},"/pt-br/topics/cloud-native/","cloud transformation",{"text":708,"config":709},"SCM",{"href":303,"dataGaName":710,"dataGaLocation":644},"source code management",{"text":293,"config":712},{"href":295,"dataGaName":713,"dataGaLocation":644},"continuous integration & delivery",{"text":344,"config":715},{"href":346,"dataGaName":716,"dataGaLocation":644},"value stream management",{"text":718,"config":719},"GitOps",{"href":720,"dataGaName":721,"dataGaLocation":644},"/pt-br/solutions/gitops/","gitops",{"text":357,"config":723},{"href":359,"dataGaName":360,"dataGaLocation":644},{"text":362,"config":725},{"href":364,"dataGaName":365,"dataGaLocation":644},{"text":367,"config":727},{"href":369,"dataGaName":370,"dataGaLocation":644},{"text":729,"config":730},"Educação",{"href":731,"dataGaName":732,"dataGaLocation":644},"/pt-br/solutions/education/","education",{"text":734,"config":735},"Serviços financeiros",{"href":736,"dataGaName":737,"dataGaLocation":644},"/pt-br/solutions/finance/","financial services",{"title":377,"links":739},[740,742,744,746,749,751,753,755,757,759,761,763,765],{"text":389,"config":741},{"href":391,"dataGaName":392,"dataGaLocation":644},{"text":394,"config":743},{"href":19,"dataGaName":396,"dataGaLocation":644},{"text":253,"config":745},{"href":399,"dataGaName":400,"dataGaLocation":644},{"text":402,"config":747},{"href":404,"dataGaName":748,"dataGaLocation":644},"docs",{"text":425,"config":750},{"href":427,"dataGaName":428,"dataGaLocation":644},{"text":420,"config":752},{"href":422,"dataGaName":423,"dataGaLocation":644},{"text":430,"config":754},{"href":432,"dataGaName":433,"dataGaLocation":644},{"text":443,"config":756},{"href":445,"dataGaName":446,"dataGaLocation":644},{"text":435,"config":758},{"href":437,"dataGaName":438,"dataGaLocation":644},{"text":448,"config":760},{"href":450,"dataGaName":451,"dataGaLocation":644},{"text":453,"config":762},{"href":455,"dataGaName":456,"dataGaLocation":644},{"text":458,"config":764},{"href":460,"dataGaName":461,"dataGaLocation":644},{"text":463,"config":766},{"href":465,"dataGaName":466,"dataGaLocation":644},{"title":481,"links":768},[769,771,773,775,777,779,781,785,790,792,794,796],{"text":488,"config":770},{"href":490,"dataGaName":483,"dataGaLocation":644},{"text":493,"config":772},{"href":495,"dataGaName":496,"dataGaLocation":644},{"text":501,"config":774},{"href":503,"dataGaName":504,"dataGaLocation":644},{"text":506,"config":776},{"href":508,"dataGaName":509,"dataGaLocation":644},{"text":511,"config":778},{"href":513,"dataGaName":514,"dataGaLocation":644},{"text":516,"config":780},{"href":518,"dataGaName":519,"dataGaLocation":644},{"text":782,"config":783},"Sustainability",{"href":784,"dataGaName":782,"dataGaLocation":644},"/sustainability/",{"text":786,"config":787},"Diversidade, inclusão e pertencimento (DIB)",{"href":788,"dataGaName":789,"dataGaLocation":644},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":521,"config":791},{"href":523,"dataGaName":524,"dataGaLocation":644},{"text":531,"config":793},{"href":533,"dataGaName":534,"dataGaLocation":644},{"text":536,"config":795},{"href":538,"dataGaName":539,"dataGaLocation":644},{"text":797,"config":798},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":799,"dataGaName":800,"dataGaLocation":644},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":541,"links":802},[803,806,808,810,815,820,825],{"text":804,"config":805},"Fale com um especialista",{"href":222,"dataGaName":223,"dataGaLocation":644},{"text":550,"config":807},{"href":552,"dataGaName":553,"dataGaLocation":644},{"text":555,"config":809},{"href":557,"dataGaName":558,"dataGaLocation":644},{"text":811,"config":812},"Status",{"href":813,"dataGaName":814,"dataGaLocation":644},"https://status.gitlab.com/","status",{"text":816,"config":817},"Termos de uso",{"href":818,"dataGaName":819,"dataGaLocation":644},"/terms/","terms of use",{"text":821,"config":822},"Aviso de Privacidade",{"href":823,"dataGaName":824,"dataGaLocation":644},"/pt-br/privacy/","privacy statement",{"text":826,"config":827},"Preferências de cookies",{"dataGaName":828,"dataGaLocation":644,"id":829,"isOneTrustButton":27},"cookie preferences","ot-sdk-btn",{"items":831},[832,834,836],{"text":816,"config":833},{"href":818,"dataGaName":819,"dataGaLocation":644},{"text":821,"config":835},{"href":823,"dataGaName":824,"dataGaLocation":644},{"text":826,"config":837},{"dataGaName":828,"dataGaLocation":644,"id":829,"isOneTrustButton":27},"content:shared:pt-br:main-footer.yml","Main Footer","shared/pt-br/main-footer.yml","shared/pt-br/main-footer",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":843,"content":844,"_id":198,"_type":199,"title":200,"_source":201,"_file":202,"_stem":203,"_extension":204},{"title":9,"ogTitle":9,"description":10,"ogDescription":10},[845,851,854,923],{"type":13,"componentName":13,"componentContent":846},{"crumbs":847},[848,850],{"title":17,"config":849},{"href":19},{"title":9},{"type":22,"componentName":22,"componentContent":852},{"title":9,"readTime":24,"text":25,"config":853},{"bodyText":27},{"type":29,"componentName":29,"componentContent":855},{"anchors":856,"components":872},{"text":32,"data":857},[858,860,862,864,866,868,870],{"text":35,"config":859},{"href":37},{"text":39,"config":861},{"href":41},{"text":43,"config":863},{"href":45},{"text":47,"config":865},{"href":49},{"text":51,"config":867},{"href":53},{"text":55,"config":869},{"href":57},{"text":59,"config":871},{"href":61},[873,879],{"type":64,"componentName":64,"componentContent":874},{"config":875,"cards":876},{"noDecoration":27},[877],{"config":878,"title":71,"description":72},{"icon":70},{"type":74,"componentName":74,"componentContent":880},{"groups":881},[882,887,898,903,908,913,918],{"config":883,"header":35,"show":80,"hide":81,"items":884},{"id":79},[885,886],{"header":84,"content":85},{"header":87,"content":88},{"config":888,"header":39,"show":80,"hide":81,"items":889},{"id":91},[890,891,892,893,894,895,896,897],{"header":84,"content":94},{"header":96,"content":97},{"header":99,"content":100},{"header":102,"content":103},{"header":105,"content":106},{"header":108,"content":109},{"header":111,"content":112},{"header":114,"content":115},{"config":899,"header":43,"show":80,"hide":81,"items":900},{"id":118},[901,902],{"header":84,"content":121},{"header":87,"content":123},{"config":904,"header":47,"show":80,"hide":81,"items":905},{"id":126},[906,907],{"header":84,"content":129},{"header":87,"content":131},{"config":909,"header":51,"show":80,"hide":81,"items":910},{"id":134},[911,912],{"header":84,"content":137},{"header":87,"content":139},{"config":914,"header":55,"show":80,"hide":81,"items":915},{"id":142},[916,917],{"header":84,"content":145},{"header":87,"content":147},{"config":919,"header":59,"show":80,"hide":81,"items":920},{"id":150},[921,922],{"header":84,"content":153},{"header":87,"content":155},{"type":157,"componentName":157,"componentContent":924},{"config":925,"title":162,"cards":926},{"columns":160,"theme":161},[927,932,937],{"image":928,"title":168,"description":169,"button":930},{"altText":7,"config":929},{"src":167},{"text":171,"config":931},{"href":173,"dataGaName":174,"dataGaLocation":175},{"image":933,"title":180,"description":181,"button":935},{"altText":7,"config":934},{"src":179},{"text":183,"config":936},{"href":185,"dataGaName":186,"dataGaLocation":175},{"image":938,"title":191,"description":192,"button":940},{"altText":7,"config":939},{"src":190},{"text":194,"config":941},{"href":196,"dataGaName":197,"dataGaLocation":175},1761814446533]