<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://about.gitlab.com/blog</id>
    <title>GitLab</title>
    <updated>2026-09-25T10:12:33.290Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>The GitLab Team</name>
    </author>
    <link rel="alternate" href="https://about.gitlab.com/blog"/>
    <link rel="self" href="https://about.gitlab.com/pt-br/atom.xml"/>
    <subtitle>GitLab Blog RSS feed</subtitle>
    <icon>https://about.gitlab.com/favicon.ico</icon>
    <rights>All rights reserved 2026</rights>
    <entry>
        <title type="html"><![CDATA[A importância de implementar segurança como código no DevSecOps]]></title>
        <id>https://about.gitlab.com/pt-br/blog/how-to-security-as-code/</id>
        <link href="https://about.gitlab.com/pt-br/blog/how-to-security-as-code/"/>
        <updated>2026-09-18T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<h2 id="o-que-é-segurança-como-código">O que é segurança como código?</h2><p>A segurança como código é um dos motores do futuro da <a href="/pt-br/topics/devsecops/">segurança de aplicações</a> (application security). Segundo a O&#39;Reilly, <a href="https://www.oreilly.com/library/view/devopssec/9781491971413/ch04.html" rel="">segurança como código é a prática de incorporar segurança às ferramentas e aos fluxos de trabalho de DevOps</a>, mapeando como as alterações de código e infraestrutura acontecem e identificando pontos para adicionar verificações, testes e gates de segurança sem gerar custos ou atrasos desnecessários. Os desenvolvedores podem definir a infraestrutura usando uma linguagem de programação, com a infraestrutura como código. É preciso que o mesmo aconteça para levar a segurança ao ritmo do DevOps — daí a importância da segurança como código.</p><p>Basicamente, a segurança como código consiste em integrar políticas, testes e verificações de segurança diretamente ao pipeline e ao próprio código. Os testes devem ser executados automaticamente a cada commit, com os resultados disponibilizados imediatamente aos desenvolvedores para que possam corrigir os problemas. Ao trazer as verificações de segurança para o código desde o momento em que é escrito, os times economizam tempo e dinheiro, já que simplificam o processo de revisão nas etapas seguintes do ciclo de vida do desenvolvimento de software (SDLC).</p><h2 id="por-que-ela-é-importante">Por que ela é importante?</h2><p>A segurança como código é fundamental para o shift left e para alcançar o <a href="/pt-br/solutions/application-security-testing/">DevSecOps</a>: ela exige que a segurança seja definida desde o início do projeto e codificada para uso repetido e consistente. Dessa forma, os desenvolvedores passam a ter uma opção de autoatendimento para garantir que o próprio código seja seguro.</p><p>Políticas de segurança predefinidas aumentam a eficiência e, ao mesmo tempo, permitem verificações sobre os processos automatizados, prevenindo imprevistos no processo de deploy, como acabar derrubando acidentalmente toda a infraestrutura porque um problema não foi identificado em um ambiente de staging.</p><h2 id="seis-capacidades-de-segurança-como-código-para-priorizar">Seis capacidades de segurança como código para priorizar</h2><p>François Raynaud, fundador e diretor executivo da DevSecCon, afirmou que a segurança como código consiste em tornar a segurança mais transparente e fazer com que profissionais de segurança e desenvolvedores falem a mesma língua. Em outras palavras, os times de segurança precisam entender como os desenvolvedores trabalham e usar isso para ajudá-los a incorporar os controles de segurança necessários ao SDLC. Os desenvolvedores, por sua vez, podem retribuir mantendo-se receptivos à medida que adotam novas ferramentas e práticas para reforçar a segurança durante o desenvolvimento. Veja seis boas práticas e capacidades para incorporar ao seu pipeline:</p><ol><li>Automatize verificações e testes de segurança (como <a href="https://docs.gitlab.com/user/application_security/sast/" rel="">análise estática</a>, <a href="https://docs.gitlab.com/user/application_security/dast/" rel="">análise dinâmica</a> e testes de penetração) dentro do seu pipeline, para que possam ser reutilizados em todos os projetos e ambientes.</li><li>Construa um ciclo de feedback contínuo apresentando os resultados aos desenvolvedores, permitindo que corrijam problemas enquanto programam e aprendam boas práticas durante o próprio processo.</li><li>Avalie e monitore as políticas de segurança automatizadas incorporando verificações ao processo. Confirme que dados sensíveis e segredos não estão sendo compartilhados ou publicados por engano.</li><li>Automatize testes manuais complexos ou demorados por meio de scripts personalizados, com aprovação humana dos resultados quando for necessário. Valide a precisão e a eficiência dos scripts de teste para que possam ser replicados em diferentes projetos.</li><li>Teste o código novo em um ambiente de staging, o que permite uma verificação de segurança completa e falhas com baixo impacto, e faça isso a cada commit.</li><li>O monitoramento agendado ou contínuo deve gerar automaticamente logs (ou alertas) em um dashboard de revisão, como o <a href="https://docs.gitlab.com/user/application_security/security_dashboard/" rel="">Security Dashboard do GitLab</a>.</li></ol><h2 id="segurança-como-código-é-uma-boa-prática-para-chegar-a-um-objetivo-maior">Segurança como código é uma boa prática para chegar a um objetivo maior</h2><p>A segurança como código dá um significado prático ao conceito de DevSecOps, mas não deve ser o seu objetivo final. No fundo, ela é um meio de engajar mais pessoas na tarefa de integrar segurança ao longo de todo o SDLC. A ideia vai parecer familiar para desenvolvedores que já praticam infraestrutura como código, pois ela também abre espaço para que a segurança entre em cena, tanto para entender melhor o desenvolvimento de software quanto para ajudar a desenhar as políticas que serão codificadas no processo.</p><p>À medida que o seu time avança para se tornar uma máquina de DevSecOps bem afinada, a segurança como código vai naturalmente se revelar uma solução inteligente dentro de um esforço complexo.</p><h2 id="avaliação-de-metodologia-devsecops-do-gitlab">Avaliação de metodologia DevSecOps do GitLab</h2><p>Implementar um processo de DevSecOps envolve muitos elementos. Por isso, para ajudar você a dominar os principais deles, criamos uma avaliação de metodologia DevSecOps. Avalie-se em 20 capacidades e use essa pontuação para entender o nível de maturidade do seu DevSecOps, além de identificar quais ações o seu time pode tomar para levar o DevSecOps ao próximo nível. <a href="https://about.gitlab.com/pt-br/devsecops/" rel="">Baixe a avaliação aqui.</a></p><p>Imagem de capa por <a href="https://unsplash.com/@tjevans" rel="">Tim Evans</a> no <a href="https://unsplash.com/photos/Uf-c4u1usFQ" rel="">Unsplash</a></p>]]></content>
        <author>
            <name>Vanessa Wegner</name>
            <uri>https://about.gitlab.com/pt-br/blog/authors/vanessa-wegner/</uri>
        </author>
        <published>2026-09-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Git pull vs. git fetch: qual é a diferença?]]></title>
        <id>https://about.gitlab.com/pt-br/blog/git-pull-vs-git-fetch-whats-the-difference/</id>
        <link href="https://about.gitlab.com/pt-br/blog/git-pull-vs-git-fetch-whats-the-difference/"/>
        <updated>2026-09-18T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>O Git é um <a href="https://about.gitlab.com/pt-br/topics/version-control/benefits-distributed-version-control-system/" rel="">sistema de controle de versão distribuído</a> muito popular, sendo usado sempre que é preciso sincronizar o projeto com um repositório remoto. Para isso, cabe ao desenvolvedor escolher os comandos mais adequados para cada momento, e é justamente aí que surge a dúvida entre <code>git fetch</code> e <code>git pull</code>. Neste artigo, explicamos os fundamentos e as diferenças entre os dois comandos, além de detalhar em que situações a utilização de cada um deles faz mais sentido.</p><p>Sumário</p><ul><li><a href="#nocoes-basicas-de-git-fetch-e-git-pull">Noções básicas de git fetch e git pull</a></li><li><a href="#o-que-e-o-git-fetch">O que é o git fetch?</a></li><li><a href="#o-que-e-o-git-pull">O que é o git pull?</a></li><li><a href="#quando-usar-o-git-fetch">Quando usar o git fetch</a></li><li><a href="#quando-usar-o-git-pull">Quando usar o git pull</a></li><li><a href="#perguntas-frequentes-sobre-git-fetch-e-git-pull">Perguntas frequentes sobre git fetch e git pull</a></li></ul><h2 id="noções-básicas-de-git-fetch-e-git-pull">Noções básicas de git fetch e git pull</h2><p>O git fetch e o git pull são comandos Git usados para buscar informações atualizadas em um repositório remoto, porém, cada um faz isso à sua própria maneira. Por um lado, o git fetch baixa as alterações do repositório remoto para o repositório local, sem alterar nada no seu diretório de trabalho atual. Como essas alterações não são mescladas na branch local, você pode conferir o que mudou no repositório remoto sem interromper o que está fazendo. Já o git pull também busca as alterações mais recentes do repositório remoto, exatamente como o git fetch, mas vai um passo além e as mescla automaticamente na branch atual, ou seja, diferentemente do git fetch, ele aplica diretamente as mudanças do repositório remoto ao seu diretório de trabalho local.</p><h2 id="o-que-é-o-git-fetch">O que é o git fetch?</h2><p>O comando <code>git fetch</code> recupera o histórico de commits mais recente do repositório remoto, mas não altera o diretório de trabalho local. Mesmo após buscar as alterações remotas, elas não aparecem refletidas na sua branch local. Por isso, ele é usado principalmente quando você quer conferir o status mais recente do repositório remoto e revisar as mudanças antes de trazê-las para o repositório local. Para aplicar as alterações buscadas à sua branch local, é preciso executar manualmente o <code>git merge</code> ou o <a href="https://docs.gitlab.com/topics/git/git_rebase/" rel="">git rebase</a>.</p><h2 id="o-que-é-o-git-pull">O que é o git pull?</h2><p>O comando <code>git pull</code> combina o <code>git fetch</code> e o <code>git merge</code> (ou o <code>git rebase</code>) em um único comando, permitindo recuperar as alterações do repositório remoto e integrá-las automaticamente à branch local atual.</p><p>Explicando melhor: enquanto o git fetch apenas busca as alterações do repositório remoto sem aplicá-las à branch local, rodar o git pull já integra essas mudanças diretamente na branch local. Isso torna o git pull uma boa opção para refletir rapidamente as modificações remotas na sua branch, mas também traz um ponto de atenção: como tudo acontece de forma automática, é preciso cautela para evitar conflitos, principalmente ao trabalhar em equipe.</p><h2 id="quando-usar-o-git-fetch">Quando usar o git fetch</h2><p>O git fetch é o comando indicado quando você quer apenas buscar as informações mais recentes de um repositório remoto, sem que elas sejam refletidas diretamente na sua branch local. Este é um ponto importante porque usar o git pull traria automaticamente todas as branches remotas para a sua branch local, incluindo eventuais branches problemáticas ou incorretas.</p><p>Por isso, quando alterações estão sendo feitas simultaneamente nas branches remota e local, ou quando há novas pessoas entrando no time, é mais seguro usar o git fetch para trazer primeiro o conteúdo da branch remota e só depois realizar o merge ou o rebase,garantindo mais controle sobre o processo.</p><h2 id="quando-usar-o-git-pull">Quando usar o git pull</h2><p>O git pull realiza mais processos do que o git fetch, já que combina a busca das alterações (git fetch) com a execução do git merge ou do git rebase em uma única etapa. É por isso que ele é recomendado quando você quer refletir rapidamente as mudanças do repositório remoto na sua branch local, sem precisar rodar dois comandos separados.</p><h2 id="perguntas-frequentes-sobre-git-fetch-e-git-pull">Perguntas frequentes sobre git fetch e git pull</h2><h3 id="qual-é-a-diferença-entre-git-pull-e-git-fetch">Qual é a diferença entre git pull e git fetch?</h3><p>O git pull é um comando que executa o git fetch seguido do git merge ou do git rebase. Enquanto o git fetch não afeta o repositório local, o git pull sincroniza automaticamente as alterações do repositório remoto com o repositório local.</p><h3 id="quais-cuidados-devo-ter-ao-usar-o-git-pull">Quais cuidados devo ter ao usar o git pull?</h3><p>Ao executar o git pull, podem surgir conflitos entre as alterações remotas e locais — conflitos de merge são comuns nesse cenário e, quando acontecem, precisam ser resolvidos manualmente. Uma alternativa é usar o <code>git pull --rebase</code>, que permite incorporar as alterações mais recentes já realizando um rebase no processo.</p><h3 id="para-que-serve-o-git-fetch">Para que serve o git fetch?</h3><p>O git fetch é útil para checar e buscar o status mais recente do repositório remoto. Como as alterações buscadas não são refletidas automaticamente na branch local, o comando funciona como uma forma de sincronizar os repositórios local e remoto sem comprometer o trabalho em andamento.</p><h2 id="leia-mais">Leia mais</h2><ul><li><a href="https://about.gitlab.com/blog/whats-new-in-git-2-46-0/" rel="">Novidades do Git 2.46</a></li><li><a href="https://docs.gitlab.com/topics/git/" rel="">Aprenda Git</a></li><li><a href="https://docs.gitlab.com/administration/gitaly/" rel="">Conheça o GitLab Gitaly</a></li><li><a href="https://about.gitlab.com/blog/git-command-line-on-windows-with-git-bash/" rel="">Conheça a linha de comando do Git no Windows</a></li></ul>]]></content>
        <author>
            <name>GitLab</name>
            <uri>https://about.gitlab.com/pt-br/blog/authors/gitlab/</uri>
        </author>
        <published>2026-09-18T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Como se manter atualizado com as boas práticas de CI/CD?]]></title>
        <id>https://about.gitlab.com/pt-br/blog/how-to-keep-up-with-ci-cd-best-practices/</id>
        <link href="https://about.gitlab.com/pt-br/blog/how-to-keep-up-with-ci-cd-best-practices/"/>
        <updated>2026-09-17T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Integração contínua e entrega contínua (CI/CD) estão no centro de toda prática de DevSecOps bem-sucedida. Ou seja, times que desejam entregar um desenvolvimento de software moderno precisam se manter atualizados com as boas práticas de <a href="https://about.gitlab.com/pt-br/topics/ci-cd/" rel="">CI/CD</a>. Veja o que você precisa saber para garantir que o seu time está no caminho certo.</p><h2 id="o-que-é-cicd">O que é CI/CD?</h2><p>CI/CD é um processo tecnológico, é uma mentalidade, é uma sequência de etapas... o CI/CD é tudo isso. Em resumo, a integração contínua (CI - Continuous Integration) permite que os times de DevSecOps otimizem o desenvolvimento de código usando automação. Explicando melhor, a CI simplifica os builds dos softwares e a integração do código-fonte, viabiliza o controle de versão e promove maior colaboração por meio da automação. Onde a CI termina, a entrega contínua (CD - Continuous Delivery) entra em ação com testes e implantação automatizados. Além de reduzir o tempo manual que os profissionais de operações precisam dedicar à entrega e à implantação, a CD também permite que os times reduzam drasticamente o número de ferramentas necessárias para gerenciar o ciclo de vida. Ao integrar verificações de segurança e conformidade logo no início do pipeline, o CI/CD viabiliza uma abordagem de segurança shift left, que identifica e resolve problemas antes que cheguem aos ambientes de produção.</p><h2 id="quais-são-as-boas-práticas-para-o-cicd">Quais são as boas práticas para o CI/CD?</h2><p>Se você quer ter sucesso com o CI/CD, é preciso transformar a integração, a entrega e a implantação contínuas no seu mantra, já que elas são a base das práticas de desenvolvimento de software. O objetivo do DevSecOps é levar o software aos usuários mais rápido do que os métodos tradicionais, logo, essas práticas de desenvolvimento ajudam a tornar isso realidade.
Veja as práticas mais essenciais, em ordem de importância:</p><ol><li><strong>Use uma plataforma DevSecOps unificada:</strong> consolide suas ferramentas de CI/CD em uma única plataforma para reduzir a sobrecarga de manutenção, minimizar a mudança de contexto e aumentar a colaboração. Menos ferramentas significam menos complexidade para a integração e uma experiência melhor entre os times de desenvolvimento, segurança e operações.</li><li><strong>Automatize tudo:</strong> continue ajustando o pipeline de CI/CD para garantir que o estado de &quot;automação contínua&quot; seja alcançado. Isso inclui testes automatizados, verificações de segurança, implantação e provisionamento de infraestrutura.</li><li><strong>Falhe rápido:</strong> do lado da CI, os desenvolvedores que fazem o commit de código precisam saber o mais rápido possível se há problemas, para que possam reverter e corrigir enquanto ainda está fresco na memória. A ideia do &quot;falhar rápido&quot; também ajuda a reduzir a troca de contexto dos desenvolvedores, o que deixa os profissionais de DevSecOps mais satisfeitos.</li><li><strong>Faça commits com frequência:</strong> quanto mais regulares forem os commits de código, mais benefícios os times de DevSecOps vão perceber. Alterações pequenas e frequentes são mais fáceis de revisar, testar e implantar com segurança.</li><li><strong>Antecipe a segurança (shift left):</strong> o CI/CD oferece uma boa oportunidade para integrar verificações de segurança, avaliações de vulnerabilidade e checagens de conformidade mais cedo no processo.</li><li><strong>Aproveite a IA para solucionar problemas no pipeline:</strong> use ferramentas com IA para diagnosticar automaticamente falhas no pipeline, identificar causas raiz e sugerir correções, reduzindo o tempo de resolução de horas para minutos.</li><li><strong>Use feature flags:</strong> desacople o deploy (ou seja, a implantação) do release usando as feature flags. Isso permite subir o código em produção sem expor novas funcionalidades aos usuários, possibilitando lançamentos mais seguros e reversões instantâneas.</li><li><strong>Monitore tudo:</strong> implemente uma observabilidade abrangente, incluindo métricas da aplicação, logs e KPIs de negócio. Configure alertas para limites críticos, tanto técnicos quanto de negócio.</li><li><strong>Mantenha o pipeline como código:</strong> armazene a configuração do seu pipeline de CI/CD no controle de versão, junto com o código da sua aplicação. Isso garante que as alterações no pipeline sejam rastreadas, revisadas e possam ser revertidas.</li><li><strong>Habilite ciclos de feedback:</strong> garanta que todo o time receba, de forma facilitada, e também contribua com o feedback. Isso inclui monitoramento, alertas, validação pós-implantação e processos de melhoria contínua.</li></ol><h2 id="boas-práticas-de-entrega-contínua">Boas práticas de entrega contínua</h2><p>A entrega/implantação contínua merece um aprofundamento à parte em suas boas práticas, já que a CI costuma roubar a maior parte dos holofotes. Veja as boas práticas essenciais de CD:</p><ul><li><strong>Comece com a sua configuração atual:</strong> não espere por uma plataforma perfeita. Comece identificando os gargalos no seu processo de implantação atual e automatize inicialmente as etapas manuais mais dolorosas.</li><li><strong>Adote estratégias de implantação:</strong> implemente técnicas de entrega progressiva, como <a href="https://docs.gitlab.com/ci/environments/incremental_rollouts/#blue-green-deployment" rel=""><strong>deploy blue-green</strong></a>, <a href="https://docs.gitlab.com/user/project/canary_deployments/" rel=""><strong>canary deployment</strong></a> ou <a href="https://docs.gitlab.com/operations/feature_flags/" rel=""><strong>feature flags</strong></a>, para reduzir riscos e possibilitar rollbacks seguros.</li><li><strong>Mantenha a paridade entre ambientes:</strong> garanta que os ambientes de desenvolvimento, staging e produção sejam o mais parecidos possível. Use infraestrutura como código para eliminar desvios de configuração.</li><li><strong>Automatize a validação de implantação:</strong> crie testes de fumaça (smoke tests) e verificações de integridade automatizados que validem as implantações imediatamente após o release. Assim, as validações que falharem devem disparar rollbacks automáticos.</li><li><strong>Implemente monitoramento abrangente:</strong> monitore tanto métricas técnicas (como tempos de resposta e taxas de erro) quanto KPIs de negócio (como engajamento do usuário e taxas de conversão) para identificar problemas cedo.</li><li><strong>Pratique implantações sem downtime:</strong> projete suas aplicações e o processo de implantação para lidar com atualizações sem interrupção do serviço, usando técnicas como atualizações graduais (rolling updates) ou troca de balanceador de carga (load balancing).</li><li><strong>Mantenha as reversões simples:</strong> garanta que você consiga voltar rapidamente para a versão anterior. Teste seu processo de rollback regularmente e, quando possível, torne-o uma operação de apenas um clique.</li><li><strong>Separe a implantação do lançamento:</strong> use feature flags para implantar código sem expor imediatamente novas funcionalidades aos usuários, permitindo testes mais seguros em produção.</li></ul><h2 id="como-otimizar-o-pipeline-de-cicd">Como otimizar o pipeline de CI/CD</h2><p>Um pipeline de CI/CD é a sequência automatizada de etapas que leva o código do desenvolvimento até a produção. O pipeline típico inclui: <strong>build</strong>, <strong>test</strong>, <strong>security scan</strong>, <strong>deploy</strong> e <strong>monitor</strong>. Embora essas etapas possam ser feitas manualmente, a automação é o processo que realmente torna o CI/CD valioso. Então, se chegou a hora de otimizar o seu pipeline de CI/CD, considere aplicar estas melhorias de desempenho:</p><h3 id="otimize-o-desempenho-do-pipeline">Otimize o desempenho do pipeline</h3><ul><li>Implemente o <a href="https://docs.gitlab.com/ci/caching/" rel="">cache de build</a> para evitar recompilar componentes que não mudaram.</li><li>Use a execução de <a href="https://docs.gitlab.com/ci/jobs/job_rules/#rules-examples" rel="">jobs condicionais</a> para pular etapas desnecessárias quando o código não foi alterado.</li><li>Otimize as imagens Docker com builds multi-stage e imagens base menores.</li></ul><h3 id="melhore-a-visibilidade-do-pipeline">Melhore a visibilidade do pipeline</h3><ul><li>Adicione o monitoramento da duração do pipeline para identificar quais são os estágios lentos.</li><li>Implemente um registro de logs detalhado e uma coleta de artefatos para facilitar a solução de problemas.</li><li>Aproveite os <a href="https://docs.gitlab.com/user/operations_dashboard/" rel="">dashboards de pipeline</a> para mostrar taxas de sucesso e tendências de desempenho.</li></ul><h3 id="otimize-a-eficiência-de-recursos">Otimize a eficiência de recursos</h3><ul><li>Dimensione corretamente seus runners de CI com base no consumo real de recursos.</li><li>Use instâncias spot ou <a href="https://docs.gitlab.com/runner/runner_autoscale/" rel="">autoscaling</a> para recursos de computação mais econômicos.</li><li>Limpe recursos e artefatos temporários após a conclusão do pipeline.</li></ul><h3 id="escale-para-o-crescimento-do-time">Escale para o crescimento do time</h3><ul><li>Use <a href="https://docs.gitlab.com/ci/components/" rel="">componentes de pipeline</a> para manter a consistência entre projetos.</li><li>Use ambientes dinâmicos que sobem e são desativados automaticamente.</li><li>Configure fluxos de <a href="https://docs.gitlab.com/ci/environments/deployment_approvals/" rel="">aprovação de pipeline</a> para implantações em produção.</li></ul><h2 id="estratégia-de-implantação-de-cicd">Estratégia de implantação de CI/CD</h2><p>Lembre-se: o CI/CD tem como objetivo entregar uma aplicação de software ao cliente com mais qualidade e mais rapidez do que antes. Organizações que adotam o CI/CD veem uma melhora significativa na produtividade. O segredo é criar uma estratégia de implantação que funcione para aquela organização específica.
Veja algumas estratégias que ajudam a garantir o sucesso de uma implantação:</p><ul><li><strong>Faça commits de alterações pequenas:</strong> implante mudanças pequenas e incrementais com frequência, em vez de fazer grandes releases. Isto porque alterações pequenas são mais fáceis de testar, revisar e reverter caso surjam problemas, reduzindo o risco da implantação.</li><li><strong>Comece pequeno e depois cresça:</strong> comece com aplicações menos críticas para ganhar confiança e refinar processos antes de partir para sistemas essenciais para o negócio.</li><li><strong>Implemente rollbacks automatizados:</strong> defina critérios claros para reversões automáticas com base em taxas de erro, métricas de desempenho ou verificações de integridade.</li><li><strong>Pratique simulações de deploy:</strong> teste regularmente o seu processo de implantação em ambientes de staging que espelhem o ambiente de produção.</li><li><strong>Estabeleça janelas de implantação:</strong> agende implantações em períodos de baixo tráfego no início e, à medida que a confiança cresça, avance rumo à implantação contínua.</li><li><strong>Monitore o impacto da implantação:</strong> acompanhe tanto métricas técnicas (tempo de resposta, taxas de erro) quanto métricas de negócio (engajamento do usuário, taxas de conversão) após cada implantação.</li></ul><h2 id="como-medir-o-sucesso-do-cicd">Como medir o sucesso do CI/CD</h2><p>Os times de DevSecOps não conseguem saber o quão bem as suas práticas de CI/CD estão indo, a menos que elas sejam quantificadas. Neste sentido, as métricas desempenham um papel importante na melhoria do desempenho do sistema e ajudam a identificar onde é possível agregar valor. Veja as métricas essenciais a serem usadas:</p><h3 id="as-quatro-métricas-do-dora">As quatro métricas do DORA</h3><p>Os times modernos se apoiam no <a href="https://docs.gitlab.com/user/analytics/dora_metrics/" rel="">framework DORA</a>, que identifica quatro métricas-chave fortemente relacionadas ao desempenho organizacional:</p><h3 id="frequência-de-implantação">Frequência de implantação</h3><p>Com que frequência o seu time consegue publicar o código em produção com sucesso. Os times com desempenho de elite implantam várias vezes por dia, enquanto os times de alto desempenho implantam diariamente ou semanalmente. Essa métrica indica a capacidade do seu time de entregar valor e responder às demandas do mercado.</p><h3 id="prazo-de-entrega-das-alterações">Prazo de entrega das alterações</h3><p>Tempo entre o commit do código e a implantação em produção. Os times de elite alcançam prazos de entrega inferiores a um dia; os times de alto desempenho variam entre um dia e uma semana. Se os commits levam semanas para chegar à produção, o seu pipeline precisa de otimização.</p><h3 id="taxa-de-falha-em-alterações">Taxa de falha em alterações</h3><p>Percentual de deploys que causam falhas em produção e exigem hotfixes ou rollbacks. Os times de elite mantêm taxas de falha de até 15%; os times de alto desempenho ficam entre 16% e 30%. Taxas de falha altas indicam problemas de qualidade nas suas práticas de teste e implantação.</p><h3 id="tempo-médio-de-recuperação">Tempo médio de recuperação</h3><p>Com que rapidez o seu time restaura o serviço após falhas no deploy. Os times de elite se recuperam em menos de uma hora; já os times de alto desempenho, em menos de um dia. Uma recuperação rápida exige monitoramento robusto e capacidades de reversão automatizada.</p><h3 id="métricas-adicionais-de-cicd">Métricas adicionais de CI/CD</h3><p>Além das métricas principais do DORA, os times costumam acompanhar estes indicadores operacionais:</p><h3 id="custos-de-infraestrutura">Custos de infraestrutura</h3><p>O CI/CD nativo em nuvem pode gerar despesas significativas se não for bem gerenciado. Práticas eficientes que reduzem os tempos de build e otimizam o uso de recursos impactam diretamente os custos operacionais.</p><h3 id="retenção-de-talentos">Retenção de talentos</h3><p>Desenvolvedores satisfeitos permanecem na empresa. Quando os times colaboram de forma eficaz nas práticas de CI/CD, a retenção aumenta. Taxas de retenção em queda podem sinalizar problemas com ferramentas ou fluxos de implantação, problemas que os desenvolvedores podem hesitar em expressar diretamente.</p><h3 id="o-impacto-do-negócio-das-métricas-de-cicd">O impacto do negócio das métricas de CI/CD</h3><p>Essas métricas técnicas se traduzem diretamente em resultados para o negócio:</p><ul><li>Uma frequência de implantação mais rápida reduz o tempo de lançamento no mercado e melhora a capacidade de resposta ao cliente. Isso representa a <strong>velocidade de inovação e capacidade de resposta ao mercado</strong>.</li><li>Prazos de entrega mais curtos permitem entregar recursos e correções mais rápido, aumentando a satisfação do cliente. Isso mede o <strong>tempo entre a ideia e o valor entregue ao cliente</strong>.</li><li>Taxas de falha menores reduzem os custos de suporte e minimizam o impacto ao cliente causado por problemas em produção. Isso indica a <strong>qualidade e a confiabilidade da experiência do cliente</strong>.</li><li>Um tempo médio de recuperação menor protege a receita durante interrupções e mantém a confiabilidade do serviço. Isso reflete a <strong>continuidade do negócio e a capacidade de mitigação de riscos</strong>.</li></ul><h3 id="vantagem-competitiva">Vantagem competitiva</h3><p>O <a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="">programa de pesquisa DORA</a> constatou que organizações de alta performance demonstram consistentemente melhores resultados de negócio em múltiplas áreas.</p><blockquote><p><strong>Times com métricas de CI/CD sólidas relatam maior produtividade, maior satisfação do cliente e maior capacidade de competir em mercados que estão em constante mudança</strong>.</p></blockquote><h2 id="quais-são-os-benefícios-de-seguir-as-boas-práticas-de-cicd">Quais são os benefícios de seguir as boas práticas de CI/CD?</h2><p>Quando as boas práticas são seguidas, os benefícios do CI/CD são sentidos primeiro pelos seus clientes e, depois, por toda a organização. Veja os principais benefícios:</p><ul><li><strong>Os clientes recebem recursos e correções mais rápido.</strong> O CI/CD permite a entrega rápida de novas funcionalidades e correções de bugs, melhorando diretamente a experiência do usuário e mantendo os clientes satisfeitos com melhorias contínuas.</li><li><strong>Software mais confiável e de maior qualidade.</strong> Testes automatizados e lançamentos graduais significam que menos bugs chegam à produção, resultando em aplicações mais estáveis nas quais os clientes podem confiar.</li><li><strong>Resposta mais rápida ao feedback dos clientes.</strong> Ciclos de desenvolvimento curtos permitem que os times implementem rapidamente solicitações dos clientes e resolvam problemas, mostrando que a opinião deles é valorizada e atendida com agilidade.</li><li><strong>Melhor uptime e desempenho.</strong> Monitoramento automatizado e capacidade de rollbacks rápidos significam que problemas visíveis aos clientes são resolvidos mais rápido, minimizando interrupções no serviço.</li><li><strong>Recursos mais inovadores.</strong> Quando os desenvolvedores gastam menos tempo em processos manuais e apagando incêndios, eles podem focar em construir recursos que realmente agregam valor para o cliente e trazem diferenciais para o produto.</li><li><strong>Suporte ao cliente aprimorado.</strong> Ciclos de implantação mais rápidos significam que problemas relatados pelos clientes podem ser corrigidos e implantados rapidamente, em vez de esperar pelo próximo grande ciclo de lançamento.</li></ul><p>Os benefícios internos vêm naturalmente na sequência: desenvolvedores mais satisfeitos, melhor colaboração entre times, menor sobrecarga operacional e maior retenção de talentos — tudo isso, no fim das contas, contribui para entregar experiências melhores aos clientes.</p><h2 id="como-posso-implementar-o-cicd-na-minha-organização">Como posso implementar o CI/CD na minha organização?</h2><p>Antes de implementar qualquer software, é fundamental determinar quais são os fatores de negócio, sendo que isto também vale para a adoção do CI/CD. Todas as partes interessadas no desenvolvimento devem ser envolvidas logo no início do processo de implementação. Os desenvolvedores devem contribuir com sua visão, já que serão os principais usuários do produto.</p><p>Faça uma pesquisa cuidadosa sobre softwares que viabilizam o CI/CD e pergunte sobre testes gratuitos.</p><p>Embora possa parecer contraintuitivo, já que o CI/CD tem como objetivo acelerar o ritmo da entrega de software usando automações, comece o processo de adoção com uma mentalidade de adaptação devagar e segura. O ganho de eficiência diminui se os bugs continuarem chegando de forma constante à aplicação em produção.</p><p>É importante manter consistência no processo de integração. Execute testes unitários, dispare releases manualmente e acompanhe as métricas. Depois, determine o que pode e deve ser automatizado.</p><blockquote><p>Comece hoje mesmo com o CI/CD assinando um <a href="https://about.gitlab.com/pt-br/free-trial/devsecops/" rel="">teste gratuito do GitLab Ultimate com o Duo Enterprise</a>.</p></blockquote>]]></content>
        <author>
            <name>Itzik Gan Baruch</name>
            <uri>https://about.gitlab.com/pt-br/blog/authors/itzik-gan-baruch/</uri>
        </author>
        <published>2026-09-17T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Primeiros passos com o GitLab: entenda o CI/CD]]></title>
        <id>https://about.gitlab.com/pt-br/blog/getting-started-with-gitlab-understanding-ci-cd/</id>
        <link href="https://about.gitlab.com/pt-br/blog/getting-started-with-gitlab-understanding-ci-cd/"/>
        <updated>2026-09-17T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p><em>Bem-vindo(a) à nossa série &quot;Primeiros passos com o GitLab&quot;, em que ajudamos quem está iniciando agora a se familiarizar com a plataforma DevSecOps do GitLab.</em></p><p>Imagine um fluxo de trabalho em que cada alteração de código é automaticamente compilada, testada e publicada para os seus usuários. É esse o poder da <a href="https://about.gitlab.com/pt-br/topics/ci-cd/" rel="">Integração Contínua/Entrega Contínua (CI/CD)</a>! O CI/CD ajuda você a identificar bugs mais cedo, garante a qualidade do código e entrega software mais rápido e com mais frequência.</p><h3 id="o-que-é-cicd">O que é CI/CD?</h3><ul><li>A <strong>Integração Contínua</strong> (CI) é uma prática de desenvolvimento de software em que os desenvolvedores integram com frequência as alterações de código a um repositório compartilhado, de preferência várias vezes ao dia. Cada integração é então verificada por um processo automatizado de build e teste, permitindo que os times detectem problemas logo no início.</li><li>A <strong>Entrega Contínua</strong> (CD) amplia a CI ao automatizar o pipeline, garantindo que o seu código esteja <em>sempre</em> pronto para o deploy. Assim, você pode implantar sua aplicação em diferentes ambientes (por exemplo, staging, produção) com um único clique ou de forma automática.</li><li>A <strong>Implantação Contínua</strong> (CD) vai um passo além ao implantar automaticamente <em>cada build bem-sucedido</em> em produção. Isso exige um alto grau de confiança nos seus testes automatizados e no processo de implantação.</li></ul><h3 id="por-que-usar-o-gitlab-cicd">Por que usar o GitLab CI/CD?</h3><p>O GitLab CI/CD é um sistema poderoso e integrado que já vem incluído na plataforma do GitLab. Ele oferece uma experiência integrada para automatizar todo o seu ciclo de vida de desenvolvimento de software (SDLC). Com o GitLab CI/CD, você pode:</p><ul><li><strong>Automatizar todo o processo:</strong> compile, teste e suba as suas aplicações com rapidez e facilidade.</li><li><strong>Detectar bugs mais rápido:</strong> encontre e corrija erros antes que cheguem aos ambientes de produção.</li><li><strong>Obter feedback mais rápido:</strong> receba feedback imediato sobre as alterações realizadas no seu código.</li><li><strong>Melhorar a colaboração:</strong> trabalhe em conjunto eficientemente com fluxos de trabalho automatizados.</li><li><strong>Acelerar a entrega:</strong> publique novas versões do software mais rapidamente e com mais frequência.</li><li><strong>Reduzir riscos:</strong> minimize consideravelmente erros no deploy e rollbacks.</li></ul><h3 id="os-elementos-do-gitlab-cicd">Os elementos do GitLab CI/CD</h3><ul><li><code>.gitlab-ci.yml</code><strong>:</strong> este <a href="https://docs.gitlab.com/ci/yaml/" rel="">arquivo YAML</a>, localizado no diretório raiz do seu projeto, define o pipeline de CI/CD, incluindo as etapas, jobs e runners.</li><li><a href="https://docs.gitlab.com/runner/" rel=""><strong>GitLab Runner</strong></a><strong>:</strong> esse agente executa os seus jobs de CI/CD na sua infraestrutura (por exemplo, máquinas físicas, máquinas virtuais, containers Docker ou clusters Kubernetes).</li><li><a href="https://docs.gitlab.com/ci/yaml/#stages" rel=""><strong>Etapas</strong></a><strong>:</strong> as etapas definem a ordem de execução dos seus jobs (por exemplo, build, test e deploy).</li><li><a href="https://docs.gitlab.com/ci/yaml/#job-keywords" rel=""><strong>Jobs</strong></a><strong>:</strong> os jobs são unidades individuais de trabalho dentro de um estágio (por exemplo, compilar código, executar testes e realizar o deploy para staging).</li></ul><h3 id="configurando-o-gitlab-ci">Configurando o GitLab CI</h3><p>Começar com o GitLab CI é simples. Veja um exemplo básico de um arquivo <code>.gitlab-ci.yml</code>:</p><pre className="language-yaml shiki shiki-themes github-light" code="stages:
  - build
  - test
  - deploy

build_job:
  stage: build
  script:
    - echo &quot;Building the application...&quot;

test_job:
  stage: test
  script:
    - echo &quot;Running tests...&quot;

deploy_job:
  stage: deploy
  script:
    - echo &quot;Deploying to production...&quot;
  environment:
    name: production

" language="yaml" meta="" style=""><code><span class="line" line="1"><span class="shJU0">stages</span><span class="sgsFI">:
</span></span><span class="line" line="2"><span class="sgsFI">  - </span><span class="sYBdl">build
</span></span><span class="line" line="3"><span class="sgsFI">  - </span><span class="sYBdl">test
</span></span><span class="line" line="4"><span class="sgsFI">  - </span><span class="sYBdl">deploy
</span></span><span class="line" line="5"><span emptyLinePlaceholder>
</span></span><span class="line" line="6"><span class="shJU0">build_job</span><span class="sgsFI">:
</span></span><span class="line" line="7"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">build
</span></span><span class="line" line="8"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="9"><span class="sgsFI">    - </span><span class="sYBdl">echo &quot;Building the application...&quot;
</span></span><span class="line" line="10"><span emptyLinePlaceholder>
</span></span><span class="line" line="11"><span class="shJU0">test_job</span><span class="sgsFI">:
</span></span><span class="line" line="12"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">test
</span></span><span class="line" line="13"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="14"><span class="sgsFI">    - </span><span class="sYBdl">echo &quot;Running tests...&quot;
</span></span><span class="line" line="15"><span emptyLinePlaceholder>
</span></span><span class="line" line="16"><span class="shJU0">deploy_job</span><span class="sgsFI">:
</span></span><span class="line" line="17"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">deploy
</span></span><span class="line" line="18"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="19"><span class="sgsFI">    - </span><span class="sYBdl">echo &quot;Deploying to production...&quot;
</span></span><span class="line" line="20"><span class="shJU0">  environment</span><span class="sgsFI">:
</span></span><span class="line" line="21"><span class="shJU0">    name</span><span class="sgsFI">: </span><span class="sYBdl">production
</span></span></code></pre><p>Essa configuração define três etapas: &quot;build&quot;, &quot;test&quot; e &quot;deploy&quot;. Cada etapa contém um job que executa um script simples.</p><h3 id="exemplos-de-configuração-de-cicd">Exemplos de configuração de CI/CD</h3><p>Vamos explorar alguns exemplos mais realistas.</p><p><strong>Compilando e implantando uma aplicação Node.js</strong></p><p>A definição de pipeline abaixo mostra o uso do npm para compilar e testar uma aplicação Node.js e do <a href="https://docs.gitlab.com/ci/examples/deployment/" rel="">dpl</a> para implantar a aplicação no Heroku. A etapa de deploy do pipeline utiliza as <a href="https://docs.gitlab.com/ci/variables/" rel="">variáveis de CI/CD do GitLab</a>, que permitem que os desenvolvedores armazenem informações sensíveis (como credenciais) e as utilizem com segurança nos processos de CI/CD. Neste exemplo, uma chave de API para publicar no Heroku é armazenada na variável <code>$HEROKU_API_KEY</code>, usada pela ferramenta dpl.</p><pre className="language-yaml shiki shiki-themes github-light" code="stages:
  - build
  - test
  - deploy

build:
  stage: build
  image: node:latest
  script:
    - npm install
    - npm run build

test:
  stage: test
  image: node:latest
  script:
    - npm run test

deploy:
  stage: deploy
  image: ruby:latest
  script:
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY

" language="yaml" meta="" style=""><code><span class="line" line="1"><span class="shJU0">stages</span><span class="sgsFI">:
</span></span><span class="line" line="2"><span class="sgsFI">  - </span><span class="sYBdl">build
</span></span><span class="line" line="3"><span class="sgsFI">  - </span><span class="sYBdl">test
</span></span><span class="line" line="4"><span class="sgsFI">  - </span><span class="sYBdl">deploy
</span></span><span class="line" line="5"><span emptyLinePlaceholder>
</span></span><span class="line" line="6"><span class="shJU0">build</span><span class="sgsFI">:
</span></span><span class="line" line="7"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">build
</span></span><span class="line" line="8"><span class="shJU0">  image</span><span class="sgsFI">: </span><span class="sYBdl">node:latest
</span></span><span class="line" line="9"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="10"><span class="sgsFI">    - </span><span class="sYBdl">npm install
</span></span><span class="line" line="11"><span class="sgsFI">    - </span><span class="sYBdl">npm run build
</span></span><span class="line" line="12"><span emptyLinePlaceholder>
</span></span><span class="line" line="13"><span class="shJU0">test</span><span class="sgsFI">:
</span></span><span class="line" line="14"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">test
</span></span><span class="line" line="15"><span class="shJU0">  image</span><span class="sgsFI">: </span><span class="sYBdl">node:latest
</span></span><span class="line" line="16"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="17"><span class="sgsFI">    - </span><span class="sYBdl">npm run test
</span></span><span class="line" line="18"><span emptyLinePlaceholder>
</span></span><span class="line" line="19"><span class="shJU0">deploy</span><span class="sgsFI">:
</span></span><span class="line" line="20"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">deploy
</span></span><span class="line" line="21"><span class="shJU0">  image</span><span class="sgsFI">: </span><span class="sYBdl">ruby:latest
</span></span><span class="line" line="22"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="23"><span class="sgsFI">    - </span><span class="sYBdl">gem install dpl
</span></span><span class="line" line="24"><span class="sgsFI">    - </span><span class="sYBdl">dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY
</span></span></code></pre><p><strong>Publicando em diferentes ambientes (staging e produção)</strong></p><p>O GitLab também oferece o conceito de <a href="https://docs.gitlab.com/ci/environments/" rel="">Ambientes (Environments)</a> no CI/CD. Esse recurso permite que os usuários acompanhem as implantações do CI/CD até os seus destinos na infraestrutura. No exemplo abaixo, o pipeline adiciona etapas com uma propriedade de ambiente para staging e produção. Enquanto a etapa deploy_staging sempre executa seu script, a etapa deploy_production exige aprovação manual para evitar publicações acidentais em produção.</p><pre className="language-yaml shiki shiki-themes github-light" code="stages:
  - build
  - test
  - deploy_staging
  - deploy_production

build:
  # ...

test:
  # ...

deploy_staging:
  stage: deploy_staging
  script:
    - echo &quot;Deploying to staging...&quot;
  environment:
    name: staging

deploy_production:
  stage: deploy_production
  script:
    - echo &quot;Deploying to production...&quot;
  environment:
    name: production
  when: manual  # Requires manual approval

" language="yaml" meta="" style=""><code><span class="line" line="1"><span class="shJU0">stages</span><span class="sgsFI">:
</span></span><span class="line" line="2"><span class="sgsFI">  - </span><span class="sYBdl">build
</span></span><span class="line" line="3"><span class="sgsFI">  - </span><span class="sYBdl">test
</span></span><span class="line" line="4"><span class="sgsFI">  - </span><span class="sYBdl">deploy_staging
</span></span><span class="line" line="5"><span class="sgsFI">  - </span><span class="sYBdl">deploy_production
</span></span><span class="line" line="6"><span emptyLinePlaceholder>
</span></span><span class="line" line="7"><span class="shJU0">build</span><span class="sgsFI">:
</span></span><span class="line" line="8"><span class="sAwPA">  # ...
</span></span><span class="line" line="9"><span emptyLinePlaceholder>
</span></span><span class="line" line="10"><span class="shJU0">test</span><span class="sgsFI">:
</span></span><span class="line" line="11"><span class="sAwPA">  # ...
</span></span><span class="line" line="12"><span emptyLinePlaceholder>
</span></span><span class="line" line="13"><span class="shJU0">deploy_staging</span><span class="sgsFI">:
</span></span><span class="line" line="14"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">deploy_staging
</span></span><span class="line" line="15"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="16"><span class="sgsFI">    - </span><span class="sYBdl">echo &quot;Deploying to staging...&quot;
</span></span><span class="line" line="17"><span class="shJU0">  environment</span><span class="sgsFI">:
</span></span><span class="line" line="18"><span class="shJU0">    name</span><span class="sgsFI">: </span><span class="sYBdl">staging
</span></span><span class="line" line="19"><span emptyLinePlaceholder>
</span></span><span class="line" line="20"><span class="shJU0">deploy_production</span><span class="sgsFI">:
</span></span><span class="line" line="21"><span class="shJU0">  stage</span><span class="sgsFI">: </span><span class="sYBdl">deploy_production
</span></span><span class="line" line="22"><span class="shJU0">  script</span><span class="sgsFI">:
</span></span><span class="line" line="23"><span class="sgsFI">    - </span><span class="sYBdl">echo &quot;Deploying to production...&quot;
</span></span><span class="line" line="24"><span class="shJU0">  environment</span><span class="sgsFI">:
</span></span><span class="line" line="25"><span class="shJU0">    name</span><span class="sgsFI">: </span><span class="sYBdl">production
</span></span><span class="line" line="26"><span class="shJU0">  when</span><span class="sgsFI">: </span><span class="sYBdl">manual</span><span class="sAwPA">  # Requires manual approval
</span></span></code></pre><h3 id="gitlab-auto-devops">GitLab Auto DevOps</h3><p>O <a href="https://docs.gitlab.com/topics/autodevops/" rel="">GitLab Auto DevOps</a> simplifica o CI/CD ao oferecer uma configuração pré-definida que compila, testa e publica suas aplicações automaticamente. Para isso, ele utiliza as boas práticas e padrões do setor para otimizar o seu fluxo de trabalho.</p><p>Para ativar o Auto DevOps:</p><ol><li>Acesse <strong>Settings &gt; CI/CD &gt; General pipelines</strong> no seu projeto.</li><li>Ative a opção <strong>Auto DevOps</strong>.</li></ol><p>O Auto DevOps detecta automaticamente a linguagem e o framework do seu projeto e configura as etapas necessárias de build, test e deploy. Ou seja, você nem precisa criar um arquivo <code>.gitlab-ci.yml</code>.</p><h3 id="catálogo-de-cicd">Catálogo de CI/CD</h3><p>O <a href="https://about.gitlab.com/blog/faq-gitlab-ci-cd-catalog/" rel="">Catálogo de CI/CD</a> é uma lista de projetos com <a href="https://docs.gitlab.com/ci/components/" rel="">componentes de CI/CD</a> publicados para que você possa estender o seu fluxo de trabalho de CI/CD. Assim, qualquer pessoa pode criar um projeto de componente e adicioná-lo ao Catálogo de CI/CD, ou mesmo contribuir para um projeto existente para melhorar os componentes disponíveis. Você pode encontrar os componentes publicados no <a href="https://gitlab.com/explore/catalog" rel="">Catálogo de CI/CD</a> no GitLab.com.</p><blockquote><p><a href="https://about.gitlab.com/blog/tutorial-how-to-set-up-your-first-gitlab-ci-cd-component/" rel="">Tutorial: Saiba como configurar seu primeiro componente de CI/CD do GitLab</a></p></blockquote><h3 id="templates-de-ci">Templates de CI</h3><p>Você também pode criar seus próprios <a href="https://docs.gitlab.com/ci/examples/" rel="">templates de CI</a> para padronizar e reutilizar configurações de CI/CD em vários projetos, o que promove a consistência e reduz a duplicação.</p><p>Para criar um template de CI:</p><ol><li>Crie um arquivo <code>.gitlab-ci.yml</code> em um projeto ou repositório dedicado.</li><li>Defina sua configuração de CI/CD no template.</li><li>No arquivo <code>.gitlab-ci.yml</code> do seu projeto, use a palavra-chave <code>include</code> para incluir o template.</li></ol><h2 id="leve-o-seu-desenvolvimento-para-o-próximo-nível">Leve o seu desenvolvimento para o próximo nível</h2><p>O GitLab CI/CD é uma ferramenta poderosa que pode transformar o seu fluxo de trabalho de desenvolvimento. Ao entender os conceitos de CI/CD, configurar seus pipelines e aproveitar recursos como o Auto DevOps, o Catálogo de CI/CD e os templates de CI, você pode automatizar todo o seu ciclo de vida de desenvolvimento de software e entregar software de alta qualidade mais rápido e com mais eficiência.</p><blockquote><p>Quer saber mais sobre este e outros assuntos, e aprofundar o seu aprendizado? Inscreva-se nos <a href="https://university.gitlab.com/" rel="">cursos da GitLab University</a> ou comece agora mesmo com um <a href="https://about.gitlab.com/pt-br/free-trial/" rel="">teste gratuito do GitLab Ultimate</a>.</p></blockquote><h2 id="série-primeiros-passos-com-o-gitlab">Série &quot;Primeiros passos com o GitLab&quot;</h2><p>Confira mais artigos da nossa série &quot;Primeiros passos com o GitLab&quot;:</p><ul><li><a href="https://about.gitlab.com/blog/getting-started-with-gitlab-how-to-manage-users/" rel="">Como gerenciar usuários</a></li><li><a href="https://about.gitlab.com/blog/getting-started-with-gitlab-how-to-import-your-projects-to-gitlab/" rel="">Como importar seus projetos para o GitLab</a></li><li><a href="https://about.gitlab.com/blog/getting-started-with-gitlab-mastering-project-management/" rel="">Dominando o gerenciamento de projetos</a></li><li><a href="https://about.gitlab.com/blog/automating-agile-workflows-with-the-gitlab-triage-gem/" rel="">Automatizando fluxos de trabalho ágeis com a gem gitlab-triage</a></li><li><a href="https://about.gitlab.com/blog/getting-started-with-gitlab-working-with-ci-cd-variables/" rel="">Trabalhando com variáveis de CI/CD</a></li></ul><style>html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}</style>]]></content>
        <author>
            <name>GitLab</name>
            <uri>https://about.gitlab.com/pt-br/blog/authors/gitlab/</uri>
        </author>
        <published>2026-09-17T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[4 princípios essenciais do DevOps que você precisa conhecer]]></title>
        <id>https://about.gitlab.com/pt-br/blog/4-must-know-devops-principles/</id>
        <link href="https://about.gitlab.com/pt-br/blog/4-must-know-devops-principles/"/>
        <updated>2026-09-15T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>A conhecida metodologia de desenvolvimento de software <a href="/pt-br/topics/devops/">DevOps</a> pode confundir um pouco quem está começando, principalmente quando o conceito se estende para outras áreas, como segurança (DevSecOps), negócios (BizDevOps), entre outras áreas.</p><h2 id="então-o-que-é-devops">Então, o que é DevOps?</h2><p>O DevOps une dois times que antes eram separados - o time de desenvolvimento de software e o time de operações (de TI) – e os transforma em uma frente unida, capaz de criar código seguro ao mesmo tempo em que acelera o ciclo de vida do desenvolvimento de software - SDLC. Os fundamentos do DevOps incluem uma cultura colaborativa e comunicativa, testes automatizados, releases e implantações, além de iterações frequentes. Outro termo bastante usado no universo DevOps é o <a href="https://about.gitlab.com/pt-br/topics/devsecops/" rel="">DevSecOps</a>, que se refere a uma prática de DevOps com ênfase específica em segurança.</p><p>O que realmente importa está no centro da metodologia DevOps: estes quatro princípios-chave, capazes de melhorar a prática de desenvolvimento de software da sua organização.</p><ol><li>Automação do ciclo de vida do desenvolvimento de software</li><li>Colaboração e comunicação</li><li>Melhoria contínua e minimização de desperdício</li><li>Foco intenso nas necessidades do usuário, com ciclos de feedback curtos</li></ol><h2 id="uma-análise-dos-principais-princípios-do-devops">Uma análise dos principais princípios do DevOps</h2><p>Há cerca de 15 anos, surgiu a ideia de unir desenvolvimento e operações de forma integrada. Em 2009, o termo &quot;DevOps&quot; foi cunhado por Patrick Debois, considerado um dos principais gurus da metodologia. O DevOps incorpora boa parte dos princípios do <a href="/pt-br/topics/agile-delivery/">desenvolvimento ágil de software</a>, mas com ênfase especial na quebra dos silos entre desenvolvimento e operações.</p><p>Desde então, o DevOps só cresceu em popularidade, alcançando desde pequenas empresas até grandes corporações com sistemas legados, passando por praticamente todos os portes de negócio. Assim como em outras situações, o DevOps se adapta às necessidades e ao ambiente exclusivo de cada organização, ajustando-se ao que é mais importante para o negócio.</p><p>Por isso, é possível encontrar diversas variações do DevOps, mas, no fundo, todas compartilham estes 4 princípios essenciais:</p><h3 id="automação-do-ciclo-de-vida-do-desenvolvimento-de-software">Automação do ciclo de vida do desenvolvimento de software</h3><p>A automação é o norte de todo time de DevOps. Antes do DevOps, o desenvolvimento de software era um trabalho extremamente manual, que exigia envolvimento humano (e repasses físicos e manuais) em cada etapa do processo. Todo esse envolvimento humano fazia com que as empresas tivessem sorte se conseguissem atualizar ou lançar um novo código uma vez por ano — muitas delas seguiam um ciclo de lançamento de 18 ou 24 meses.</p><p>Hoje, os chamados <a href="/blog/how-to-make-your-devops-team-elite-performers/">“times de DevOps de elite”</a> publicam código várias vezes ao dia — e conseguem fazer isso principalmente graças à automação.</p><p>Para entender o poder e a importância da automação no DevOps, basta pensar nos testes de software: uma etapa frequentemente esquecida e pouco valorizada, mas que costuma levar a culpa por atrasos no lançamento. Não há dúvida de que os testes de software são essenciais; sem eles, as empresas correm o risco de lançar código com falhas ou mesmo códigos inseguros.</p><p>Porém, os testes talvez sejam a etapa mais manual de todo o processo de DevOps, exigindo que as pessoas escrevam casos de teste, executem inúmeros testes, analisem os resultados e, depois, retornem aos desenvolvedores para as correções. De forma resumida, <a href="/blog/want-faster-releases-your-answer-lies-in-automated-software-testing/">não é à toa que os times apontam os testes</a> como o principal motivo pelo qual o código não é lançado no prazo.</p><p>É aí que entra a automação, com a ideia de que os testes de software mais básicos podem acontecer no momento em que o código é escrito. Assim, a automação de testes acelera drasticamente todo o processo e libera os analistas de teste de software para buscar problemas de qualidade de código potencialmente mais graves.</p><p>Embora os testes sejam uma das vitórias mais marcantes da automação no DevOps, eles estão longe de ser a única. A <a href="/pt-br/topics/ci-cd/">integração contínua</a> automatiza o processo de incorporar novo código ao código já existente, enquanto a <a href="/blog/how-to-keep-up-with-ci-cd-best-practices/">implantação contínua</a> ajuda a automatizar os releases. Já o <a href="/pt-br/topics/gitops/infrastructure-as-code/">Infrastructure as Code</a> facilita a automação do processo de provisionamento de ambientes de desenvolvimento.</p><h3 id="colaboração-e-comunicação">Colaboração e comunicação</h3><p>Um bom time de DevOps tem automação, mas um time de DevOps excelente conta também com colaboração e comunicação. A ideia central de unir dev e ops (além de sec, teste, stakeholders etc.) depende da capacidade dos times de colaborar. E isso só é possível quando existe uma comunicação clara e constante.</p><p>Esse pode parecer um princípio simples do DevOps, mas, como quase tudo, a dificuldade está presente nos detalhes. Quem é do time de dev quer escrever código e colocá-lo no ar; quem é de ops foca em ferramentas, compliance e nuvem; e o time de segurança quer garantir que o código seja seguro. Dev, ops e sec não têm as mesmas prioridades, podem não falar a mesma “língua” e tendem a abordar a resolução de problemas sob perspectivas bem diferentes. Um exemplo disso: <a href="/blog/developer-security-divide/">dev e sec ainda não se dão muito bem</a>, em parte porque a lacuna de comunicação e colaboração entre eles permanece grande.</p><p>É preciso esforço para aproximar os times e, muitas vezes, também é preciso <a href="/blog/want-secure-software-development-our-top-5-tips-to-bring-dev-and-sec-together/">pensar fora da caixa</a>. E, em mais uma daquelas situações de “o que veio primeiro: o ovo ou a galinha?”, os times precisam se comunicar para um DevOps bem-sucedido, mas o próprio DevOps também pode levar a uma comunicação melhor e a desenvolvedores mais satisfeitos, segundo os resultados da nossa <a href="/resources/developer-survey/">Pesquisa Global de DevSecOps de 2021</a>.</p><h3 id="melhoria-contínua-e-minimização-de-desperdício">Melhoria contínua e minimização de desperdício</h3><p>Apoiado fortemente em metodologias de desenvolvimento de software anteriores, incluindo <a href="https://searchsoftwarequality.techtarget.com/definition/lean-programming" rel="">Lean</a> e Agile, o DevOps também foca na redução de desperdício e na melhoria contínua. Seja automatizando tarefas repetitivas, como os testes, para não perder tempo, ou reduzindo o número de etapas necessárias para lançar um novo código, times de DevOps bem-estruturados seguem medindo métricas de desempenho para identificar pontos que precisam melhorar.</p><p>Espera-se que os times busquem <a href="/blog/why-improving-continuously-speeds-up-delivery/">melhorar continuamente os tempos de release</a>, reduzir o <a href="https://pipelinedriven.org/article/devops-metric-mean-time-to-recovery-mttr-definition-and-reasoning" rel="">tempo médio de recuperação</a> e o número de bugs encontrados, entre outras métricas.</p><h3 id="foco-intenso-nas-necessidades-do-usuário-com-ciclos-de-feedback-curtos">Foco intenso nas necessidades do usuário, com ciclos de feedback curtos</h3><p>O último princípio essencial do DevOps é a importância de trazer o usuário real para cada etapa do processo. Por meio da automação, da comunicação e colaboração aprimoradas e da melhoria contínua, os times de DevOps conseguem parar por um instante para focar no que os usuários realmente querem — e em como entregar isso a eles. Não há dúvida de que entender a mente do usuário é algo bastante complexo, e <a href="/blog/journey-to-the-outer-loop/">os times podem ter dificuldade em implementar processos</a> para alcançar esse objetivo.</p><p>O outro desafio é que o feedback do usuário, uma vez coletado, precisa ser entregue rapidamente, para que o tempo não seja desperdiçado. É por isso que ciclos de feedback curtos são essenciais, e por isso os times precisam <a href="/blog/journey-to-the-outer-loop/">se dedicar a torná-los ainda mais curtos</a> com o passar do tempo.</p><h2 id="benefícios-de-um-modelo-e-das-práticas-de-devops">Benefícios de um modelo e das práticas de DevOps</h2><p>O que acontece quando os times aplicam o DevOps corretamente? Em nossa pesquisa de 2021, 60% dos desenvolvedores nos disseram que estavam lançando código, pelo menos, duas vezes mais rápido graças ao DevOps. Outros benefícios de um modelo DevOps incluem melhor qualidade de código, tempo de lançamento mais rápido e planejamento mais eficiente.</p><p>E, de bônus, os participantes da pesquisa também nos contaram que ter uma prática de DevOps bem-sucedida deixa os desenvolvedores mais satisfeitos, e existem <a href="/blog/why-software-developer-job-satisfaction-matters-and-how-to-make-it-happen/">dados científicos</a> que mostram que desenvolvedores mais felizes são mais produtivos.</p><h2 id="quais-são-os-desafios-de-implementar-o-devops">Quais são os desafios de implementar o DevOps?</h2><p>O DevOps pode ser desafiador no início, principalmente se for a primeira vez que está sendo implementado em uma organização. Confira alguns dos desafios de implementar o DevOps.</p><ul><li><strong>Quebrar os silos.</strong> Pode ser difícil romper a mentalidade de que desenvolvimento e operações são entidades separadas. Busque entender bem os papéis e as responsabilidades de um time combinado de DevOps.</li><li><strong>Entender os jargões.</strong> O DevOps vem com muitas abreviações, jargões técnicos e uma quantidade enorme de siglas, como CI/CD. Reserve um tempo para estudar e lembre-se de que aprender aos poucos é completamente normal e aceitável.</li><li><strong>Migrar de sistemas legados.</strong> O DevOps pode ser especialmente complicado para times que estão migrando software legado. Muitas ferramentas criadas para DevOps não funcionam com mainframes (só para dar um exemplo), e as integrações podem ser desafiadoras até mesmo para profissionais experientes em DevOps. Também não ajuda o fato de haver escassez de programadores especializados em mainframe e outros sistemas legados.</li><li><strong>Excesso de ferramentas.</strong> Os times gastam tanto tempo integrando e mantendo ferramentas que isso acaba atrapalhando o trabalho real de desenvolver, publicar e monitorar o código. Esse fenômeno é conhecido como “toolchain tax”, o custo oculto da cadeia de ferramentas.</li><li><strong>Lidar com a frustração da curva de aprendizado.</strong> O DevOps é complexo, e aprender como ele funciona é uma maratona, não 100 metros rasos. Tenha paciência e seja compreensivo com o time à medida que a implementação avança, e conte com os recursos disponíveis, como a documentação e representantes da plataforma — e, às vezes, confie no bom e velho processo de tentativa e erro.</li></ul><h2 id="como-começar-a-implementar-o-devops-na-sua-organização">Como começar a implementar o DevOps na sua organização</h2><p>Ao se preparar para começar com o DevOps, é preciso seguir a seguinte preparação:</p><ol><li>Mapeie os objetivos por trás da implementação do DevOps.</li><li>Esclareça os papéis e as responsabilidades de cada participante.</li><li>Comece de forma simples e evolua com a experiência.</li><li>Planeje automatizar o máximo possível.</li><li>Planeje seu toolchain (e lembre-se: toolchains sempre podem ser ajustados).</li><li>Estabeleça checkpoints regulares de progresso.</li><li>Esteja preparado para iterar constantemente (mas só depois de dar tempo suficiente para provar que a iteração é realmente necessária).</li></ol><h2 id="qual-é-o-futuro-do-devops">Qual é o futuro do DevOps?</h2><p>A adoção e o sucesso do DevOps ganharam um enorme impulso graças à pandemia global. Os times superaram parte das questões culturais de “como trabalhar juntos?” e amadureceram para a mentalidade de “como adotar as tecnologias certas?”, segundo os resultados da nossa pesquisa. O uso de tecnologias avançadas, incluindo Kubernetes, <a href="/pt-br/topics/devops-platform/">plataformas de DevOps</a> e inteligência artificial (IA) / machine learning (ML), já dá pistas de como será o futuro do DevOps.</p><p>É seguro esperar mais automação, tomadas de decisão mais inteligentes com IA/ML (começando em áreas como <a href="/blog/the-road-to-smarter-code-reviewer-recommendations/">revisão de código</a>) e uma escolha mais criteriosa de ferramentas, como a adoção contínua de plataformas de DevOps para otimizar o processo.</p>]]></content>
        <author>
            <name>GitLab</name>
            <uri>https://about.gitlab.com/pt-br/blog/authors/gitlab/</uri>
        </author>
        <published>2026-09-15T00:00:00.000Z</published>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Code e o GitLab: três fluxos de trabalho que realmente entregam]]></title>
        <id>https://about.gitlab.com/pt-br/blog/claude-code-and-gitlab/</id>
        <link href="https://about.gitlab.com/pt-br/blog/claude-code-and-gitlab/"/>
        <updated>2026-05-06T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>Os desenvolvedores adoram o Claude Code porque utilizá-lo é como programar em dupla com um engenheiro sênior direto no terminal ou na IDE: ele ajuda você a entender código desconhecido, propor correções e estruturar novos recursos rapidamente.</p><p>Contudo, há um padrão que vale observar: quanto melhores ficam as ferramentas de programação com agentes de IA para escrever código, mais o restante do ciclo de vida do software luta para acompanhar o ritmo. O backlog de bugs cresce. As taxas de falha nos pipelines crescem e as vulnerabilidades de segurança se acumulam mais rápido do que os times conseguem classificá-las. Isso mostra que programar e entregar um software não são a mesma coisa, e essa diferença entre os dois é real.</p><p>É neste ponto que o GitLab entra para acelerar tudo o que vem depois do Claude Code no restante do ciclo de vida do software: CI/CD, verificação de segurança, revisão de código e aprovações, tudo em um só lugar, com um fluxo auditável.</p><p>Este tutorial apresenta três cenários nos quais o Claude Code avança rápido na base de código, enquanto o GitLab cuida de tudo o que transforma esse código em uma mudança certificada e entregue:</p><ul><li>Corrija um bug em C++ com o Claude Code e deixe que o GitLab CI/CD, a verificação de segurança e o Duo Code Review sigam a partir daí.</li><li>Adicione contexto do GitLab via MCP para que o Claude trabalhe a partir do tíquete real, e não apenas dos arquivos locais.</li><li>Use um agente externo do Claude no Duo Agent Platform para resolver o feedback de revisão de código diretamente na merge request - MR.</li></ul><h2 id="pré-requisitos">Pré-requisitos</h2><ol><li><a href="https://code.claude.com/docs/pt/overview" rel="">Claude Code</a> no terminal, configurado e em execução.</li><li>Um projeto GitLab com relatos de bugs e issues de proposta de recursos — por exemplo, o <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform" rel="">projeto Tanuki Iot Platform</a>.</li><li>Para casos de uso específicos: o <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/" rel="">servidor MCP do GitLab</a> e o GitLab Duo Agent Platform com <a href="https://docs.gitlab.com/user/duo_agent_platform/agents/external/" rel="">agentes externos</a>.</li><li>Para compilar o código: CMake, Make, gcc/clang++ para C++, Maven para Java.</li></ol><h3 id="prepare-o-projeto-gitlab">Prepare o projeto GitLab</h3><p>Se quiser acompanhar o tutorial, você pode repetir todas as etapas aqui no seu próprio ambiente de desenvolvimento. Para isso:</p><ul><li>Importe o <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform" rel="">projeto Tanuki Iot Platform</a> para o seu ambiente GitLab, incluindo todos os issues abertos.</li><li>Clone o projeto no seu ambiente local e navegue até ele.</li><li>Abra um terminal e execute o Claude Code com <code>claude</code>.</li></ul><pre className="language-shell shiki shiki-themes github-light" code="git clone https://gitlab.example.com/examplegroup/tanuki-iot-platform.git
cd tanuki-iot-platform

claude
" language="shell" meta="" style=""><code><span class="line" line="1"><span class="s7eDp">git</span><span class="sYBdl"> clone</span><span class="sYBdl"> https://gitlab.example.com/examplegroup/tanuki-iot-platform.git
</span></span><span class="line" line="2"><span class="sYu0t">cd</span><span class="sYBdl"> tanuki-iot-platform
</span></span><span class="line" line="3"><span emptyLinePlaceholder>
</span></span><span class="line" line="4"><span class="s7eDp">claude
</span></span></code></pre><p>Faça uma pergunta no prompt para saber mais sobre a finalidade do projeto.</p><pre className="language-markdown shiki shiki-themes github-light" code="Sobre o que é este projeto?
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">Sobre o que é este projeto?
</span></span></code></pre><h2 id="comece-a-usar-o-claude-code-com-o-gitlab">Comece a usar o Claude Code com o GitLab</h2><p>No nosso primeiro cenário, precisamos corrigir um sensor de hardware escrito em C++. O coletor Arduino lê métricas da placa Arduino Uno R4 conectada via USB e trava quando o dispositivo <code>/dev/ttyACM0</code> não está conectado.</p><p><img alt="Issue do GitLab mostrando o relato de bug do travamento do coletor IoT Arduino" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/itfnec4qrlldxfftwnig.png" title="Issue do GitLab mostrando o relato de bug do travamento do coletor IoT Arduino" /></p><p>Depois de ler o relato de bug no <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/4" rel="">Issue 4</a>, inspecione o código no arquivo <code>main.cpp</code>, por exemplo, usando o vim:</p><pre className="language-shell shiki shiki-themes github-light" code="vim sensors/arduino-iot-collector/src/main.cpp
" language="shell" meta="" style=""><code><span class="line" line="1"><span class="s7eDp">vim</span><span class="sYBdl"> sensors/arduino-iot-collector/src/main.cpp
</span></span></code></pre><p><img alt="Código-fonte do Arduino IoT Collector aberto no vim" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/mjof3rgdlxjy2trmgehq.png" title="Código-fonte do Arduino IoT Collector aberto no vim" /></p><p>Compile e execute o binário do coletor com o <a href="https://cmake.org/" rel="">CMake</a> para reproduzir o problema.</p><pre className="language-shell shiki shiki-themes github-light" code="cmake -S . -B build
cmake --build build

./build/arduino_iot_collector
Starting Arduino IoT Collector Application...
libc++abi: terminating due to uncaught exception of type std::runtime_error: Failed to initialize Arduino temperature sensor: Arduino port not found: /dev/ttyACM0
[1]    85289 abort      ./build/arduino_iot_collector
" language="shell" meta="" style=""><code><span class="line" line="1"><span class="s7eDp">cmake</span><span class="sYu0t"> -S</span><span class="sYBdl"> .</span><span class="sYu0t"> -B</span><span class="sYBdl"> build
</span></span><span class="line" line="2"><span class="s7eDp">cmake</span><span class="sYu0t"> --build</span><span class="sYBdl"> build
</span></span><span class="line" line="3"><span emptyLinePlaceholder>
</span></span><span class="line" line="4"><span class="s7eDp">./build/arduino_iot_collector
</span></span><span class="line" line="5"><span class="s7eDp">Starting</span><span class="sYBdl"> Arduino</span><span class="sYBdl"> IoT</span><span class="sYBdl"> Collector</span><span class="sYBdl"> Application...
</span></span><span class="line" line="6"><span class="s7eDp">libc++abi:</span><span class="sYBdl"> terminating</span><span class="sYBdl"> due</span><span class="sYBdl"> to</span><span class="sYBdl"> uncaught</span><span class="sYBdl"> exception</span><span class="sYBdl"> of</span><span class="sYBdl"> type</span><span class="sYBdl"> std::runtime_error:</span><span class="sYBdl"> Failed</span><span class="sYBdl"> to</span><span class="sYBdl"> initialize</span><span class="sYBdl"> Arduino</span><span class="sYBdl"> temperature</span><span class="sYBdl"> sensor:</span><span class="sYBdl"> Arduino</span><span class="sYBdl"> port</span><span class="sYBdl"> not</span><span class="sYBdl"> found:</span><span class="sYBdl"> /dev/ttyACM0
</span></span><span class="line" line="7"><span class="sgsFI">[1]    85289 abort      ./build/arduino_iot_collector
</span></span></code></pre><p>Abra o Claude Code e insira o seguinte pedido:</p><pre className="language-markdown shiki shiki-themes github-light" code="Pode me ajudar a corrigir o sensor do Arduino IoT Collector? Ele está travando.
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">Pode me ajudar a corrigir o sensor do Arduino IoT Collector? Ele está travando.
</span></span></code></pre><p>O Claude Code pesquisa a base de código (codebase) e identifica o problema no arquivo <code>main.cpp</code>, que lança uma exceção <code>std::runtime_error()</code>, fazendo a aplicação travar imediatamente. O comportamento esperado é registrar um erro de configuração amigável ao usuário e continuar executando a aplicação normalmente.</p><p>Depois de corrigir e compilar o código com sucesso, precisamos criar uma branch do Git, um commit e uma merge request para disparar os pipelines de CI/CD, a verificação de segurança e os fluxos de revisão de código.</p><p>Você pode usar diferentes formas de trabalhar com o Git no Claude Code:</p><ul><li>Usar um prompt: <code>Pode me ajudar a criar uma branch do Git, fazer o commit e enviar as alterações?</code></li><li>Executar os comandos do shell: abra o prompt de comando com <code>!</code>, seguido dos comandos <code>git checkout -b fix-arduino-sensor</code>, <code>git commit -avm &quot;...&quot;</code> e <code>git push</code>. A saída do <code>git push</code> gera uma URL de criação da merge request. Clique nela para abrir o navegador e preencher o formulário.</li></ul><p>Os pipelines de CI/CD são disparados na criação da MR e verificam se o build e os testes estão funcionando. A verificação de segurança garante que nenhuma vulnerabilidade nova seja introduzida. A nova MR dispara automaticamente o <a href="https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/" rel="">GitLab Duo Code Review Flow</a>, que avalia a precisão da correção, de acordo com os guias de estilo de desenvolvimento e as instruções de revisão personalizadas.</p><p><img alt="Instruções personalizadas do GitLab Duo Code Review para C++" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/wasta2rqivrvrsjtw1jv.png" title="Instruções personalizadas do GitLab Duo Code Review para C++" /></p><p><img alt="Comentário com feedback do GitLab Duo Code Review Flow" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/r2oalo1xwkpbmeispflo.png" title="Comentário com feedback do GitLab Duo Code Review Flow" /></p><p>Veja abaixo uma gravação do Claude Code, do GitLab CI/CD e do GitLab Duo Agent Platform em ação:</p><figure className="video_container">
  <iframe src="https://www.youtube.com/embed/JH4Sae3eDpw" frameBorder="0" allowFullScreen="true"> </iframe></figure><h2 id="corrigindo-um-bug-em-c-com-o-gitlab-mcp-no-claude-code">Corrigindo um bug em C++ com o GitLab MCP no Claude Code</h2><p>No cenário anterior, o Claude Code pesquisou o repositório de código local e fez suposições sobre uma possível correção com base no contexto disponível. No entanto, ele não tinha conhecimento do tíquete do GitLab que descrevia o bug, das discussões para a sua depuração e das soluções propostas para resolver o problema em definitivo. Além disso, ele também não levou em conta o histórico de alterações de código anteriores salvas em merge requests e issues com relatos parecidos, que são parte importante do contexto do ciclo de vida do desenvolvimento de software (SDLC).</p><p>Para permitir a utilização desse contexto rico do SDLC do GitLab, podemos integrar o <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/" rel="">servidor MCP do GitLab</a> para o Claude Code.</p><h3 id="configure-o-servidor-mcp-do-gitlab">Configure o servidor MCP do GitLab</h3><p>Confirme que o servidor MCP do GitLab está <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/#prerequisites" rel="">habilitado</a> na instância ou no grupo de nível superior.</p><p>Abra um novo terminal e adicione o <a href="https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/" rel="">servidor MCP do GitLab</a> ao Claude Code usando o tipo de transporte <code>http</code>.</p><p>Substitua <code>gitlab.example.com</code> pela sua instância do GitLab ou use <code>GitLab.com</code>:</p><pre className="language-shell shiki shiki-themes github-light" code="claude mcp add --transport http GitLab https://gitlab.example.com/api/v4/mcp
" language="shell" meta="" style=""><code><span class="line" line="1"><span class="s7eDp">claude</span><span class="sYBdl"> mcp</span><span class="sYBdl"> add</span><span class="sYu0t"> --transport</span><span class="sYBdl"> http</span><span class="sYBdl"> GitLab</span><span class="sYBdl"> https://gitlab.example.com/api/v4/mcp
</span></span></code></pre><p>Execute <code>claude</code> em uma nova sessão do terminal e digite <code>/mcp</code> para autenticar com o servidor MCP do GitLab, usando OAuth na página do navegador que será aberta.</p><pre className="language-shell shiki shiki-themes github-light" code="claude

/mcp
" language="shell" meta="" style=""><code><span class="line" line="1"><span class="s7eDp">claude
</span></span><span class="line" line="2"><span emptyLinePlaceholder>
</span></span><span class="line" line="3"><span class="s7eDp">/mcp
</span></span></code></pre><p>Para verificar a conexão, pergunte ao Claude:</p><pre className="language-markdown shiki shiki-themes github-light" code="Quais ferramentas MCP do GitLab estão disponíveis para você?

Mostre a versão do servidor MCP do GitLab
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">Quais ferramentas MCP do GitLab estão disponíveis para você?
</span></span><span class="line" line="2"><span emptyLinePlaceholder>
</span></span><span class="line" line="3"><span class="sgsFI">Mostre a versão do servidor MCP do GitLab
</span></span></code></pre><p><img alt="Claude Code investigando a versão do servidor MCP do GitLab" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/f2ygt6wuuvxxbpticcgt.png" title="Claude Code investigando a versão do servidor MCP do GitLab" /></p><p>Ao autenticar o Claude Code com o servidor MCP do GitLab, a conexão passa pelo <a href="https://datatracker.ietf.org/doc/html/rfc7591" rel="">OAuth</a> e atua com a sua identidade já existente no GitLab e não com permissões elevadas ou separadas. Na prática, isso significa que o Claude Code só consegue ver projetos, issues (tíquetes), merge requests e outros dados do GitLab que você já tem acesso, seja pela sua conta ou seja pela sua participação em projetos e grupos. Essa é uma importante barreira de proteção: o MCP amplia o contexto dentro da ferramenta de IA, mas não contorna os controles de visibilidade do GitLab nem cria um acesso mais amplo por conta própria.</p><p>Uma segunda barreira de proteção é a aprovação do usuário. Nesse fluxo, o Claude Code identifica a ferramenta MCP que quer chamar e pede aprovação antes de seguir adiante, para que os desenvolvedores continuem no controle sempre que um contexto externo é buscado. Em ambientes sensíveis à segurança, também vale reforçar que os times devem ficar atentos aos dados expostos nos prompts e usar o MCP principalmente com conteúdo confiável do GitLab.</p><h3 id="trabalhe-em-um-issue-de-relato-de-bug">Trabalhe em um issue de relato de bug</h3><p>Vamos buscar o contexto do tíquete no Claude Code referenciando o <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/4" rel="">Issue 4</a> no prompt. Se você não tiver um tíquete no seu projeto, clone/copie o Issue 4 e ajuste o número no prompt.</p><pre className="language-markdown shiki shiki-themes github-light" code="Pode me ajudar a corrigir o issue 4?
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">Pode me ajudar a corrigir o issue 4?
</span></span></code></pre><p>O Claude Code identifica a necessidade de chamar a ferramenta MCP <code>get_issue</code> e pede a sua aprovação, sendo que também é possível aprovar o uso futuro automaticamente.</p><p><img alt="Claude Code buscando o contexto do issue com ferramentas MCP" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/tj6dpxbemvvgqnbifzjy.png" title="Claude Code buscando o contexto do issue com ferramentas MCP" /></p><p>Depois que o Claude Code buscar o contexto necessário do issue, ele começa a analisar diretamente o código-fonte em C++ do sensor. Depois de criar e verificar uma correção, você pode pedir para criar uma nova branch do Git, um commit e uma MR, caso o Claude Code ainda não o faça automaticamente.</p><pre className="language-markdown shiki shiki-themes github-light" code="Pode criar uma nova branch do Git, fazer o commit das alterações e criar uma nova merge request?
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">Pode criar uma nova branch do Git, fazer o commit das alterações e criar uma nova merge request?
</span></span></code></pre><p>O Claude Code encontra a ferramenta MCP <code>create_merge_request</code> e cuida da criação da MR diretamente, sem precisar trocar de contexto para o navegador.</p><p><img alt="Claude Code criou uma MR usando ferramentas MCP, vinculada ao Issue 4" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/bo41ti93yonvsy9q2gbw.png" title="Claude Code criou uma MR usando ferramentas MCP, vinculada ao Issue 4" /></p><p>No GitLab, o evento de criação da MR dispara automaticamente vários fluxos de trabalho em paralelo:</p><ul><li>pipeline de CI/CD para builds e testes automatizados</li><li>verificação de segurança com o <a href="https://docs.gitlab.com/user/application_security/sast/advanced_sast_cpp/" rel="">Advanced SAST para C++</a></li><li>um <a href="https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/" rel="">Code Review Flow</a> pelo GitLab Duo Agent Platform</li></ul><p>Esses fluxos de trabalho automatizados e agênticos dentro do GitLab aceleram a entrega de software tanto quanto o Claude Code acelera o desenvolvimento com IA para a resolução de issues.</p><p><img alt="Status do pipeline de CI/CD na MR - testes e verificação de segurança" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/yd3kzf9yp4usdldovs1a.png" title="Status do pipeline de CI/CD na MR - testes e verificação de segurança" /></p><p>Você pode abrir a Merge Request no navegador ou continuar no terminal e enviar o seguinte prompt ao Claude Code:</p><pre className="language-markdown shiki shiki-themes github-light" code="A Merge Request está sendo executada corretamente?
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">A Merge Request está sendo executada corretamente?
</span></span></code></pre><p>Ele vai usar a ferramenta MCP <code>get_merge_request_pipelines</code> para buscar o status do pipeline da MR, confirmando que está verde e pronto para o merge.</p><p><img alt="Claude Code buscando o status do pipeline da MR usando ferramentas MCP" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/s8cwcvc3r5moui2twjpd.png" title="Claude Code buscando o status do pipeline da MR usando ferramentas MCP" /></p><p>Veja a gravação para ver como o Claude Code resolve o problema com a ajuda do servidor MCP do GitLab:</p><figure className="video_container">
  <iframe src="https://www.youtube.com/embed/q8XWnmdIaI0" frameBorder="0" allowFullScreen="true"> </iframe></figure><h2 id="claude-code-como-agente-externo-revisor">Claude Code como agente externo revisor</h2><p>Neste último cenário, o Claude Code ajudou a implementar um novo recurso com base nos requisitos do <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/24" rel="">Issue 24</a> — um servidor de API Spring Boot com backend REST/Websocket. Os pipelines de CI/CD e as verificações de segurança estão OK, mas há feedback de revisão de código esperando na MR.</p><p><img alt="Feedback do GitLab Duo Code Review na MR do servidor de API Spring Boot" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/to7zvyrarrvcnyuuzldi.png" title="Feedback do GitLab Duo Code Review na MR do servidor de API Spring Boot" /></p><p>Você pode adicionar o Claude Code como parceiro de colaboração em issues, epics e MRs e resolver tarefas em conjunto. Siga a <a href="https://docs.gitlab.com/user/duo_agent_platform/agents/external/" rel="">documentação de agentes externos</a> para conhecer os pré-requisitos.</p><p>Ative o <code>Claude Agent by GitLab</code> no menu do projeto, em <strong>AI &gt; Agents</strong>. Anote o nome da conta de serviço para saber como mencionar ou atribuir o agente depois — ele segue o padrão: <code>@ai-&lt;nome-do-agente&gt;-&lt;nome-do-grupo-de-nível-superior&gt;</code>.</p><p>Em seguida, abra a MR com o feedback de revisão de código e analise as alterações solicitadas. A captura de tela usa a <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/merge_requests/78" rel="">MR 78</a>, e o GitLab Duo Code Review segue as <a href="https://docs.gitlab.com/user/duo_agent_platform/customize/review_instructions/?tab=Java" rel="">instruções de revisão personalizadas para Java</a>.</p><p><img alt="Feedback do GitLab Duo Code Review Flow sobre AllowedOriginPatterns inseguro nos endpoints de API introduzidos na MR" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/gvgqmcnijllptvnnyyjc.png" title="Feedback do GitLab Duo Code Review Flow sobre AllowedOriginPatterns inseguro nos endpoints de API introduzidos na MR" /></p><p>Crie um novo comentário mencionando o Claude Code Agent:</p><pre className="language-markdown shiki shiki-themes github-light" code="@ai-claude-agent-by-gitlab-&lt;nome-do-grupo-de-nível-superior&gt; Pode me ajudar a resolver o feedback da revisão?
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">@ai-claude-agent-by-gitlab-&lt;nome-do-grupo-de-nível-superior&gt; Pode me ajudar a resolver o feedback da revisão?
</span></span></code></pre><p>Essa menção inicia uma nova sessão de agente em segundo plano, configurando o Claude Code Agent, que passa a trabalhar no feedback da revisão. Quando termina, ele segue as instruções para criar um commit no Git e um comentário com um resumo na MR.</p><p><img alt="Feedback do GitLab Duo Code Review resolvido pelo Claude Agent" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079038/pqy8f4xo8n0i7yvkajso.png" title="Feedback do GitLab Duo Code Review resolvido pelo Claude Agent" /></p><p>Para garantir que o desenvolvimento de software permaneça dentro das diretrizes de proteção da sua organização, seus próximos passos incluem:</p><ul><li>Resolver o feedback de revisão restante.</li><li>Revisar o aviso nos jobs do pipeline de CI/CD.</li><li>Revisar as possíveis vulnerabilidades de segurança, usando, por exemplo, a <a href="https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/agentic_sast_vulnerability_resolution/" rel="">Resolução de vulnerabilidades SAST</a>.</li><li>Obter a aprovação da merge request de um desenvolvedor elegível, configurado como <a href="https://docs.gitlab.com/user/project/codeowners/" rel="">Code Owner</a>.</li></ul><p><img alt="Widgets da merge request mostrando o pipeline de CI/CD, as aprovações exigidas, os achados de segurança e o status do merge" src="https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/uzegwykldauzuxucrpjf.png" title="Widgets da merge request mostrando o pipeline de CI/CD, as aprovações exigidas, os achados de segurança e o status do merge" /></p><p>Assista a este vídeo para aprender como o Claude Code pode ajudar com revisões como agente externo no GitLab Duo Agent Platform:</p><figure className="video_container">
  <iframe src="https://www.youtube.com/embed/Tw0wNet1HCc" frameBorder="0" allowFullScreen="true"> </iframe></figure><h2 id="dicas-para-usar-o-claude-code-com-o-gitlab">Dicas para usar o Claude Code com o GitLab</h2><h3 id="instruções-personalizadas">Instruções personalizadas</h3><p>É possível instruir os agentes a compilar e testar o código antes dos commits, manter as alterações mínimas ou entender melhor a arquitetura do projeto usando uma entrada no <code>AGENTS.md</code>. O Tanuki IoT Platform usa o <a href="https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/blob/main/AGENTS.md?ref_type=heads&amp;plain=1" rel="">seguinte exemplo de produção</a>:</p><pre className="language-markdown shiki shiki-themes github-light" code="## Working with sensors

### Before editing
1. Identify the sensor directory you&#39;re working with
2. Check for an `AGENTS.md` file in that directory
3. Read sensor-specific instructions before making changes
4. Follow language-specific style guides

### Making changes
- Keep changes minimal and focused on the user request
- Do not refactor existing code unless specifically instructed
- Preserve original code formatting
- Only modify code necessary to solve the specific request

### Creating MRs
- Always run local builds and tests first
- Create a new branch for changes
- Automatically create a merge request after successful commits
- Reference relevant issues or tasks in the MR description
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="surfw">## Working with sensors
</span></span><span class="line" line="2"><span emptyLinePlaceholder>
</span></span><span class="line" line="3"><span class="surfw">### Before editing
</span></span><span class="line" line="4"><span class="sqxcx">1.</span><span class="sgsFI"> Identify the sensor directory you&#39;re working with
</span></span><span class="line" line="5"><span class="sqxcx">2.</span><span class="sgsFI"> Check for an </span><span class="sYu0t">`AGENTS.md`</span><span class="sgsFI"> file in that directory
</span></span><span class="line" line="6"><span class="sqxcx">3.</span><span class="sgsFI"> Read sensor-specific instructions before making changes
</span></span><span class="line" line="7"><span class="sqxcx">4.</span><span class="sgsFI"> Follow language-specific style guides
</span></span><span class="line" line="8"><span emptyLinePlaceholder>
</span></span><span class="line" line="9"><span class="surfw">### Making changes
</span></span><span class="line" line="10"><span class="sqxcx">-</span><span class="sgsFI"> Keep changes minimal and focused on the user request
</span></span><span class="line" line="11"><span class="sqxcx">-</span><span class="sgsFI"> Do not refactor existing code unless specifically instructed
</span></span><span class="line" line="12"><span class="sqxcx">-</span><span class="sgsFI"> Preserve original code formatting
</span></span><span class="line" line="13"><span class="sqxcx">-</span><span class="sgsFI"> Only modify code necessary to solve the specific request
</span></span><span class="line" line="14"><span emptyLinePlaceholder>
</span></span><span class="line" line="15"><span class="surfw">### Creating MRs
</span></span><span class="line" line="16"><span class="sqxcx">-</span><span class="sgsFI"> Always run local builds and tests first
</span></span><span class="line" line="17"><span class="sqxcx">-</span><span class="sgsFI"> Create a new branch for changes
</span></span><span class="line" line="18"><span class="sqxcx">-</span><span class="sgsFI"> Automatically create a merge request after successful commits
</span></span><span class="line" line="19"><span class="sqxcx">-</span><span class="sgsFI"> Reference relevant issues or tasks in the MR description
</span></span></code></pre><p>Essas <a href="https://docs.gitlab.com/user/duo_agent_platform/customize/agents_md/" rel="">instruções personalizadas</a> também são processadas por agentes e flows no GitLab Duo Agent Platform.</p><p>O Claude Code prefere o <code>CLAUDE.md</code>, que também pode ser apontado para o <code>AGENTS.md</code>.</p><pre className="language-markdown shiki shiki-themes github-light" code="@AGENTS.md
" language="markdown" meta="" style=""><code><span class="line" line="1"><span class="sgsFI">@AGENTS.md
</span></span></code></pre><h2 id="resumo">Resumo</h2><p>As ferramentas de programação com IA tornam as equipes de desenvolvedores mais rápidas na hora de programar. Porém, escrever código e entregar software não são a mesma coisa, e essa diferença entre os dois cresce justamente porque as ferramentas são muito boas na primeira parte. Com elas, mais código é escrito, mas o backlog de bugs aumenta, as taxas de falha nos pipelines sobem e as vulnerabilidades de segurança se acumulam.</p><p>O Claude Code mantém a produtividade onde o código se localiza: entende bases de código desconhecidas, propõe correções e estrutura novos recursos rapidamente. O GitLab Duo Agent Platform é o que transforma essa velocidade — de muitos desenvolvedores em times de software de organizações empresariais — em software seguro que você realmente pode entregar e certificar em diversos marcos de release e projetos. Com o GitLab, o restante do ciclo de vida do software (como as correções no pipeline de CI/CD, a verificação de segurança, a remediação automatizada, revisão de código e muito mais, com fluxos de trabalho que mantêm humanos no controle) permite que cada ação dos agentes de IA seja rastreada e configurada para funcionar dentro das diretrizes de proteção e políticas de segurança da sua organização.</p><p>Neste tutorial, você viu três formas de unir o Claude Code e o GitLab Duo Agent Platform:</p><ul><li>Corrigir um bug com o Claude Code e deixar que o GitLab CI/CD, a verificação de segurança e o Duo Code Review façam o resto.</li><li>Adicionar contexto do GitLab via MCP para que o Claude trabalhe a partir do contexto real salvo no issue do GitLab, e não apenas dos arquivos locais.</li><li>Usar um agente externo com tecnologia Claude no GitLab Duo Agent Platform para resolver o feedback de revisão diretamente na MR.</li></ul><p>O princípio se mantém o mesmo nos três casos: o Claude avança rápido, o GitLab certifica o trabalho.</p><blockquote><p>Se você ainda não usa o GitLab Duo Agent Platform, pode começar com um <a href="https://about.gitlab.com/pt-br/gitlab-duo-agent-platform/" rel="">teste gratuito da ferramenta</a>.</p><p>Se você já usa o GitLab no plano gratuito, pode assinar o GitLab Duo Agent Platform <a href="https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom" rel="">seguindo alguns passos simples</a>.</p><p>E se você já é assinante do GitLab Premium ou Ultimate, basta <a href="https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/" rel="">ativar o Duo Agent Platform</a> e começar a usar os GitLab Credits <a href="https://docs.gitlab.com/subscriptions/gitlab_credits/#included-credits" rel="">incluídos</a> na sua assinatura.</p></blockquote><style>html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .surfw, html code.shiki .surfw{--shiki-default:#005CC5;--shiki-default-font-weight:bold}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}</style>]]></content>
        <author>
            <name>Michael Friedrich</name>
            <uri>https://about.gitlab.com/pt-br/blog/authors/michael-friedrich/</uri>
        </author>
        <published>2026-05-06T00:00:00.000Z</published>
    </entry>
</feed>