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