[{"data":1,"prerenderedAt":1855},["ShallowReactive",2],{"/pt-br/blog/claude-code-and-gitlab":3,"navigation-pt-br":1133,"banner-pt-br":1559,"footer-pt-br":1566,"blog-post-authors-pt-br-Michael Friedrich":1819,"blog-related-posts-pt-br-claude-code-and-gitlab":1834,"next-steps-pt-br":1835,"blog-share-wrapper-pt-br":1845},{"id":4,"title":5,"authors":6,"body":8,"category":1114,"date":1115,"description":1116,"extension":1117,"externalUrl":1118,"faq":1118,"featured":147,"heroImage":1119,"meta":1120,"navigation":147,"path":1121,"seo":1122,"slug":1125,"stem":1126,"tags":1127,"template":1131,"updatedDate":1118,"__hash__":1132},"blogPosts/pt-br/blog/claude-code-and-gitlab.md","Claude Code e o GitLab: três fluxos de trabalho que realmente entregam",[7],"Michael Friedrich",{"type":9,"value":10,"toc":1099},"minimark",[11,15,18,21,24,37,42,80,85,88,107,155,158,170,174,181,188,201,214,220,229,353,356,365,375,378,381,411,420,426,432,435,448,452,455,462,466,475,485,496,523,533,551,554,573,579,588,591,595,602,611,618,624,627,636,643,649,652,673,676,682,685,694,701,707,710,716,720,729,735,743,758,772,778,781,790,793,799,802,826,832,835,841,845,849,861,1007,1016,1025,1034,1038,1041,1044,1047,1058,1061,1095],[12,13,14],"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.",[12,16,17],{},"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.",[12,19,20],{},"É 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.",[12,22,23],{},"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:",[25,26,27,31,34],"ul",{},[28,29,30],"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í.",[28,32,33],{},"Adicione contexto do GitLab via MCP para que o Claude trabalhe a partir do tíquete real, e não apenas dos arquivos locais.",[28,35,36],{},"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.",[38,39,41],"h2",{"id":40},"pré-requisitos","Pré-requisitos",[43,44,45,54,63,77],"ol",{},[28,46,47,53],{},[48,49,52],"a",{"href":50,"rel":51},"https://code.claude.com/docs/pt/overview",[],"Claude Code"," no terminal, configurado e em execução.",[28,55,56,57,62],{},"Um projeto GitLab com relatos de bugs e issues de proposta de recursos — por exemplo, o ",[48,58,61],{"href":59,"rel":60},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform",[],"projeto Tanuki Iot Platform",".",[28,64,65,66,71,72,62],{},"Para casos de uso específicos: o ",[48,67,70],{"href":68,"rel":69},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/",[],"servidor MCP do GitLab"," e o GitLab Duo Agent Platform com ",[48,73,76],{"href":74,"rel":75},"https://docs.gitlab.com/user/duo_agent_platform/agents/external/",[],"agentes externos",[28,78,79],{},"Para compilar o código: CMake, Make, gcc/clang++ para C++, Maven para Java.",[81,82,84],"h3",{"id":83},"prepare-o-projeto-gitlab","Prepare o projeto GitLab",[12,86,87],{},"Se quiser acompanhar o tutorial, você pode repetir todas as etapas aqui no seu próprio ambiente de desenvolvimento. Para isso:",[25,89,90,97,100],{},[28,91,92,93,96],{},"Importe o ",[48,94,61],{"href":59,"rel":95},[]," para o seu ambiente GitLab, incluindo todos os issues abertos.",[28,98,99],{},"Clone o projeto no seu ambiente local e navegue até ele.",[28,101,102,103,62],{},"Abra um terminal e execute o Claude Code com ",[104,105,106],"code",{},"claude",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-shell shiki shiki-themes github-light","git clone https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\ncd tanuki-iot-platform\n\nclaude\n","shell","",[104,115,116,132,142,149],{"__ignoreMap":113},[117,118,121,125,129],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"s7eDp","git",[117,126,128],{"class":127},"sYBdl"," clone",[117,130,131],{"class":127}," https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\n",[117,133,135,139],{"class":119,"line":134},2,[117,136,138],{"class":137},"sYu0t","cd",[117,140,141],{"class":127}," tanuki-iot-platform\n",[117,143,145],{"class":119,"line":144},3,[117,146,148],{"emptyLinePlaceholder":147},true,"\n",[117,150,152],{"class":119,"line":151},4,[117,153,154],{"class":123},"claude\n",[12,156,157],{},"Faça uma pergunta no prompt para saber mais sobre a finalidade do projeto.",[108,159,163],{"className":160,"code":161,"language":162,"meta":113,"style":113},"language-markdown shiki shiki-themes github-light","Sobre o que é este projeto?\n","markdown",[104,164,165],{"__ignoreMap":113},[117,166,167],{"class":119,"line":120},[117,168,161],{"class":169},"sgsFI",[38,171,173],{"id":172},"comece-a-usar-o-claude-code-com-o-gitlab","Comece a usar o Claude Code com o GitLab",[12,175,176,177,180],{},"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 ",[104,178,179],{},"/dev/ttyACM0"," não está conectado.",[12,182,183],{},[184,185],"img",{"alt":186,"src":187,"title":186},"Issue do GitLab mostrando o relato de bug do travamento do coletor IoT Arduino","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/itfnec4qrlldxfftwnig.png",[12,189,190,191,196,197,200],{},"Depois de ler o relato de bug no ",[48,192,195],{"href":193,"rel":194},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/4",[],"Issue 4",", inspecione o código no arquivo ",[104,198,199],{},"main.cpp",", por exemplo, usando o vim:",[108,202,204],{"className":110,"code":203,"language":112,"meta":113,"style":113},"vim sensors/arduino-iot-collector/src/main.cpp\n",[104,205,206],{"__ignoreMap":113},[117,207,208,211],{"class":119,"line":120},[117,209,210],{"class":123},"vim",[117,212,213],{"class":127}," sensors/arduino-iot-collector/src/main.cpp\n",[12,215,216],{},[184,217],{"alt":218,"src":219,"title":218},"Código-fonte do Arduino IoT Collector aberto no vim","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/mjof3rgdlxjy2trmgehq.png",[12,221,222,223,228],{},"Compile e execute o binário do coletor com o ",[48,224,227],{"href":225,"rel":226},"https://cmake.org/",[],"CMake"," para reproduzir o problema.",[108,230,232],{"className":110,"code":231,"language":112,"meta":113,"style":113},"cmake -S . -B build\ncmake --build build\n\n./build/arduino_iot_collector\nStarting Arduino IoT Collector Application...\nlibc++abi: terminating due to uncaught exception of type std::runtime_error: Failed to initialize Arduino temperature sensor: Arduino port not found: /dev/ttyACM0\n[1]    85289 abort      ./build/arduino_iot_collector\n",[104,233,234,251,260,264,269,287,347],{"__ignoreMap":113},[117,235,236,239,242,245,248],{"class":119,"line":120},[117,237,238],{"class":123},"cmake",[117,240,241],{"class":137}," -S",[117,243,244],{"class":127}," .",[117,246,247],{"class":137}," -B",[117,249,250],{"class":127}," build\n",[117,252,253,255,258],{"class":119,"line":134},[117,254,238],{"class":123},[117,256,257],{"class":137}," --build",[117,259,250],{"class":127},[117,261,262],{"class":119,"line":144},[117,263,148],{"emptyLinePlaceholder":147},[117,265,266],{"class":119,"line":151},[117,267,268],{"class":123},"./build/arduino_iot_collector\n",[117,270,272,275,278,281,284],{"class":119,"line":271},5,[117,273,274],{"class":123},"Starting",[117,276,277],{"class":127}," Arduino",[117,279,280],{"class":127}," IoT",[117,282,283],{"class":127}," Collector",[117,285,286],{"class":127}," Application...\n",[117,288,290,293,296,299,302,305,308,311,314,317,320,322,325,327,330,333,335,338,341,344],{"class":119,"line":289},6,[117,291,292],{"class":123},"libc++abi:",[117,294,295],{"class":127}," terminating",[117,297,298],{"class":127}," due",[117,300,301],{"class":127}," to",[117,303,304],{"class":127}," uncaught",[117,306,307],{"class":127}," exception",[117,309,310],{"class":127}," of",[117,312,313],{"class":127}," type",[117,315,316],{"class":127}," std::runtime_error:",[117,318,319],{"class":127}," Failed",[117,321,301],{"class":127},[117,323,324],{"class":127}," initialize",[117,326,277],{"class":127},[117,328,329],{"class":127}," temperature",[117,331,332],{"class":127}," sensor:",[117,334,277],{"class":127},[117,336,337],{"class":127}," port",[117,339,340],{"class":127}," not",[117,342,343],{"class":127}," found:",[117,345,346],{"class":127}," /dev/ttyACM0\n",[117,348,350],{"class":119,"line":349},7,[117,351,352],{"class":169},"[1]    85289 abort      ./build/arduino_iot_collector\n",[12,354,355],{},"Abra o Claude Code e insira o seguinte pedido:",[108,357,359],{"className":160,"code":358,"language":162,"meta":113,"style":113},"Pode me ajudar a corrigir o sensor do Arduino IoT Collector? Ele está travando.\n",[104,360,361],{"__ignoreMap":113},[117,362,363],{"class":119,"line":120},[117,364,358],{"class":169},[12,366,367,368,370,371,374],{},"O Claude Code pesquisa a base de código (codebase) e identifica o problema no arquivo ",[104,369,199],{},", que lança uma exceção ",[104,372,373],{},"std::runtime_error()",", 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.",[12,376,377],{},"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.",[12,379,380],{},"Você pode usar diferentes formas de trabalhar com o Git no Claude Code:",[25,382,383,389],{},[28,384,385,386],{},"Usar um prompt: ",[104,387,388],{},"Pode me ajudar a criar uma branch do Git, fazer o commit e enviar as alterações?",[28,390,391,392,395,396,399,400,403,404,407,408,410],{},"Executar os comandos do shell: abra o prompt de comando com ",[104,393,394],{},"!",", seguido dos comandos ",[104,397,398],{},"git checkout -b fix-arduino-sensor",", ",[104,401,402],{},"git commit -avm \"...\""," e ",[104,405,406],{},"git push",". A saída do ",[104,409,406],{}," gera uma URL de criação da merge request. Clique nela para abrir o navegador e preencher o formulário.",[12,412,413,414,419],{},"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 ",[48,415,418],{"href":416,"rel":417},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/",[],"GitLab Duo Code Review Flow",", 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.",[12,421,422],{},[184,423],{"alt":424,"src":425,"title":424},"Instruções personalizadas do GitLab Duo Code Review para C++","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/wasta2rqivrvrsjtw1jv.png",[12,427,428],{},[184,429],{"alt":430,"src":431,"title":430},"Comentário com feedback do GitLab Duo Code Review Flow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/r2oalo1xwkpbmeispflo.png",[12,433,434],{},"Veja abaixo uma gravação do Claude Code, do GitLab CI/CD e do GitLab Duo Agent Platform em ação:",[436,437,440,441],"figure",{"className":438},[439],"video_container","\n  ",[442,443,447],"iframe",{"src":444,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/JH4Sae3eDpw","0","true"," ",[38,449,451],{"id":450},"corrigindo-um-bug-em-c-com-o-gitlab-mcp-no-claude-code","Corrigindo um bug em C++ com o GitLab MCP no Claude Code",[12,453,454],{},"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).",[12,456,457,458,461],{},"Para permitir a utilização desse contexto rico do SDLC do GitLab, podemos integrar o ",[48,459,70],{"href":68,"rel":460},[]," para o Claude Code.",[81,463,465],{"id":464},"configure-o-servidor-mcp-do-gitlab","Configure o servidor MCP do GitLab",[12,467,468,469,474],{},"Confirme que o servidor MCP do GitLab está ",[48,470,473],{"href":471,"rel":472},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/#prerequisites",[],"habilitado"," na instância ou no grupo de nível superior.",[12,476,477,478,481,482,62],{},"Abra um novo terminal e adicione o ",[48,479,70],{"href":68,"rel":480},[]," ao Claude Code usando o tipo de transporte ",[104,483,484],{},"http",[12,486,487,488,491,492,495],{},"Substitua ",[104,489,490],{},"gitlab.example.com"," pela sua instância do GitLab ou use ",[104,493,494],{},"GitLab.com",":",[108,497,499],{"className":110,"code":498,"language":112,"meta":113,"style":113},"claude mcp add --transport http GitLab https://gitlab.example.com/api/v4/mcp\n",[104,500,501],{"__ignoreMap":113},[117,502,503,505,508,511,514,517,520],{"class":119,"line":120},[117,504,106],{"class":123},[117,506,507],{"class":127}," mcp",[117,509,510],{"class":127}," add",[117,512,513],{"class":137}," --transport",[117,515,516],{"class":127}," http",[117,518,519],{"class":127}," GitLab",[117,521,522],{"class":127}," https://gitlab.example.com/api/v4/mcp\n",[12,524,525,526,528,529,532],{},"Execute ",[104,527,106],{}," em uma nova sessão do terminal e digite ",[104,530,531],{},"/mcp"," para autenticar com o servidor MCP do GitLab, usando OAuth na página do navegador que será aberta.",[108,534,536],{"className":110,"code":535,"language":112,"meta":113,"style":113},"claude\n\n/mcp\n",[104,537,538,542,546],{"__ignoreMap":113},[117,539,540],{"class":119,"line":120},[117,541,154],{"class":123},[117,543,544],{"class":119,"line":134},[117,545,148],{"emptyLinePlaceholder":147},[117,547,548],{"class":119,"line":144},[117,549,550],{"class":123},"/mcp\n",[12,552,553],{},"Para verificar a conexão, pergunte ao Claude:",[108,555,557],{"className":160,"code":556,"language":162,"meta":113,"style":113},"Quais ferramentas MCP do GitLab estão disponíveis para você?\n\nMostre a versão do servidor MCP do GitLab\n",[104,558,559,564,568],{"__ignoreMap":113},[117,560,561],{"class":119,"line":120},[117,562,563],{"class":169},"Quais ferramentas MCP do GitLab estão disponíveis para você?\n",[117,565,566],{"class":119,"line":134},[117,567,148],{"emptyLinePlaceholder":147},[117,569,570],{"class":119,"line":144},[117,571,572],{"class":169},"Mostre a versão do servidor MCP do GitLab\n",[12,574,575],{},[184,576],{"alt":577,"src":578,"title":577},"Claude Code investigando a versão do servidor MCP do GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/f2ygt6wuuvxxbpticcgt.png",[12,580,581,582,587],{},"Ao autenticar o Claude Code com o servidor MCP do GitLab, a conexão passa pelo ",[48,583,586],{"href":584,"rel":585},"https://datatracker.ietf.org/doc/html/rfc7591",[],"OAuth"," 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.",[12,589,590],{},"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.",[81,592,594],{"id":593},"trabalhe-em-um-issue-de-relato-de-bug","Trabalhe em um issue de relato de bug",[12,596,597,598,601],{},"Vamos buscar o contexto do tíquete no Claude Code referenciando o ",[48,599,195],{"href":193,"rel":600},[]," 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.",[108,603,605],{"className":160,"code":604,"language":162,"meta":113,"style":113},"Pode me ajudar a corrigir o issue 4?\n",[104,606,607],{"__ignoreMap":113},[117,608,609],{"class":119,"line":120},[117,610,604],{"class":169},[12,612,613,614,617],{},"O Claude Code identifica a necessidade de chamar a ferramenta MCP ",[104,615,616],{},"get_issue"," e pede a sua aprovação, sendo que também é possível aprovar o uso futuro automaticamente.",[12,619,620],{},[184,621],{"alt":622,"src":623,"title":622},"Claude Code buscando o contexto do issue com ferramentas MCP","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/tj6dpxbemvvgqnbifzjy.png",[12,625,626],{},"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.",[108,628,630],{"className":160,"code":629,"language":162,"meta":113,"style":113},"Pode criar uma nova branch do Git, fazer o commit das alterações e criar uma nova merge request?\n",[104,631,632],{"__ignoreMap":113},[117,633,634],{"class":119,"line":120},[117,635,629],{"class":169},[12,637,638,639,642],{},"O Claude Code encontra a ferramenta MCP ",[104,640,641],{},"create_merge_request"," e cuida da criação da MR diretamente, sem precisar trocar de contexto para o navegador.",[12,644,645],{},[184,646],{"alt":647,"src":648,"title":647},"Claude Code criou uma MR usando ferramentas MCP, vinculada ao Issue 4","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/bo41ti93yonvsy9q2gbw.png",[12,650,651],{},"No GitLab, o evento de criação da MR dispara automaticamente vários fluxos de trabalho em paralelo:",[25,653,654,657,665],{},[28,655,656],{},"pipeline de CI/CD para builds e testes automatizados",[28,658,659,660],{},"verificação de segurança com o ",[48,661,664],{"href":662,"rel":663},"https://docs.gitlab.com/user/application_security/sast/advanced_sast_cpp/",[],"Advanced SAST para C++",[28,666,667,668,672],{},"um ",[48,669,671],{"href":416,"rel":670},[],"Code Review Flow"," pelo GitLab Duo Agent Platform",[12,674,675],{},"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.",[12,677,678],{},[184,679],{"alt":680,"src":681,"title":680},"Status do pipeline de CI/CD na MR - testes e verificação de segurança","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/yd3kzf9yp4usdldovs1a.png",[12,683,684],{},"Você pode abrir a Merge Request no navegador ou continuar no terminal e enviar o seguinte prompt ao Claude Code:",[108,686,688],{"className":160,"code":687,"language":162,"meta":113,"style":113},"A Merge Request está sendo executada corretamente?\n",[104,689,690],{"__ignoreMap":113},[117,691,692],{"class":119,"line":120},[117,693,687],{"class":169},[12,695,696,697,700],{},"Ele vai usar a ferramenta MCP ",[104,698,699],{},"get_merge_request_pipelines"," para buscar o status do pipeline da MR, confirmando que está verde e pronto para o merge.",[12,702,703],{},[184,704],{"alt":705,"src":706,"title":705},"Claude Code buscando o status do pipeline da MR usando ferramentas MCP","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/s8cwcvc3r5moui2twjpd.png",[12,708,709],{},"Veja a gravação para ver como o Claude Code resolve o problema com a ajuda do servidor MCP do GitLab:",[436,711,440,713],{"className":712},[439],[442,714,447],{"src":715,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/q8XWnmdIaI0",[38,717,719],{"id":718},"claude-code-como-agente-externo-revisor","Claude Code como agente externo revisor",[12,721,722,723,728],{},"Neste último cenário, o Claude Code ajudou a implementar um novo recurso com base nos requisitos do ",[48,724,727],{"href":725,"rel":726},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/24",[],"Issue 24"," — 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.",[12,730,731],{},[184,732],{"alt":733,"src":734,"title":733},"Feedback do GitLab Duo Code Review na MR do servidor de API Spring Boot","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/to7zvyrarrvcnyuuzldi.png",[12,736,737,738,742],{},"Você pode adicionar o Claude Code como parceiro de colaboração em issues, epics e MRs e resolver tarefas em conjunto. Siga a ",[48,739,741],{"href":74,"rel":740},[],"documentação de agentes externos"," para conhecer os pré-requisitos.",[12,744,745,746,749,750,754,755,62],{},"Ative o ",[104,747,748],{},"Claude Agent by GitLab"," no menu do projeto, em ",[751,752,753],"strong",{},"AI > Agents",". Anote o nome da conta de serviço para saber como mencionar ou atribuir o agente depois — ele segue o padrão: ",[104,756,757],{},"@ai-\u003Cnome-do-agente>-\u003Cnome-do-grupo-de-nível-superior>",[12,759,760,761,766,767,62],{},"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 ",[48,762,765],{"href":763,"rel":764},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/merge_requests/78",[],"MR 78",", e o GitLab Duo Code Review segue as ",[48,768,771],{"href":769,"rel":770},"https://docs.gitlab.com/user/duo_agent_platform/customize/review_instructions/?tab=Java",[],"instruções de revisão personalizadas para Java",[12,773,774],{},[184,775],{"alt":776,"src":777,"title":776},"Feedback do GitLab Duo Code Review Flow sobre AllowedOriginPatterns inseguro nos endpoints de API introduzidos na MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/gvgqmcnijllptvnnyyjc.png",[12,779,780],{},"Crie um novo comentário mencionando o Claude Code Agent:",[108,782,784],{"className":160,"code":783,"language":162,"meta":113,"style":113},"@ai-claude-agent-by-gitlab-\u003Cnome-do-grupo-de-nível-superior> Pode me ajudar a resolver o feedback da revisão?\n",[104,785,786],{"__ignoreMap":113},[117,787,788],{"class":119,"line":120},[117,789,783],{"class":169},[12,791,792],{},"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.",[12,794,795],{},[184,796],{"alt":797,"src":798,"title":797},"Feedback do GitLab Duo Code Review resolvido pelo Claude Agent","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079038/pqy8f4xo8n0i7yvkajso.png",[12,800,801],{},"Para garantir que o desenvolvimento de software permaneça dentro das diretrizes de proteção da sua organização, seus próximos passos incluem:",[25,803,804,807,810,818],{},[28,805,806],{},"Resolver o feedback de revisão restante.",[28,808,809],{},"Revisar o aviso nos jobs do pipeline de CI/CD.",[28,811,812,813,62],{},"Revisar as possíveis vulnerabilidades de segurança, usando, por exemplo, a ",[48,814,817],{"href":815,"rel":816},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/agentic_sast_vulnerability_resolution/",[],"Resolução de vulnerabilidades SAST",[28,819,820,821,62],{},"Obter a aprovação da merge request de um desenvolvedor elegível, configurado como ",[48,822,825],{"href":823,"rel":824},"https://docs.gitlab.com/user/project/codeowners/",[],"Code Owner",[12,827,828],{},[184,829],{"alt":830,"src":831,"title":830},"Widgets da merge request mostrando o pipeline de CI/CD, as aprovações exigidas, os achados de segurança e o status do merge","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/uzegwykldauzuxucrpjf.png",[12,833,834],{},"Assista a este vídeo para aprender como o Claude Code pode ajudar com revisões como agente externo no GitLab Duo Agent Platform:",[436,836,440,838],{"className":837},[439],[442,839,447],{"src":840,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/Tw0wNet1HCc",[38,842,844],{"id":843},"dicas-para-usar-o-claude-code-com-o-gitlab","Dicas para usar o Claude Code com o GitLab",[81,846,848],{"id":847},"instruções-personalizadas","Instruções personalizadas",[12,850,851,852,855,856,495],{},"É 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 ",[104,853,854],{},"AGENTS.md",". O Tanuki IoT Platform usa o ",[48,857,860],{"href":858,"rel":859},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/blob/main/AGENTS.md?ref_type=heads&plain=1",[],"seguinte exemplo de produção",[108,862,864],{"className":160,"code":863,"language":162,"meta":113,"style":113},"## Working with sensors\n\n### Before editing\n1. Identify the sensor directory you're working with\n2. Check for an `AGENTS.md` file in that directory\n3. Read sensor-specific instructions before making changes\n4. Follow language-specific style guides\n\n### Making changes\n- Keep changes minimal and focused on the user request\n- Do not refactor existing code unless specifically instructed\n- Preserve original code formatting\n- Only modify code necessary to solve the specific request\n\n### Creating MRs\n- Always run local builds and tests first\n- Create a new branch for changes\n- Automatically create a merge request after successful commits\n- Reference relevant issues or tasks in the MR description\n",[104,865,866,872,876,881,890,904,912,920,925,931,940,948,956,964,969,975,983,991,999],{"__ignoreMap":113},[117,867,868],{"class":119,"line":120},[117,869,871],{"class":870},"surfw","## Working with sensors\n",[117,873,874],{"class":119,"line":134},[117,875,148],{"emptyLinePlaceholder":147},[117,877,878],{"class":119,"line":144},[117,879,880],{"class":870},"### Before editing\n",[117,882,883,887],{"class":119,"line":151},[117,884,886],{"class":885},"sqxcx","1.",[117,888,889],{"class":169}," Identify the sensor directory you're working with\n",[117,891,892,895,898,901],{"class":119,"line":271},[117,893,894],{"class":885},"2.",[117,896,897],{"class":169}," Check for an ",[117,899,900],{"class":137},"`AGENTS.md`",[117,902,903],{"class":169}," file in that directory\n",[117,905,906,909],{"class":119,"line":289},[117,907,908],{"class":885},"3.",[117,910,911],{"class":169}," Read sensor-specific instructions before making changes\n",[117,913,914,917],{"class":119,"line":349},[117,915,916],{"class":885},"4.",[117,918,919],{"class":169}," Follow language-specific style guides\n",[117,921,923],{"class":119,"line":922},8,[117,924,148],{"emptyLinePlaceholder":147},[117,926,928],{"class":119,"line":927},9,[117,929,930],{"class":870},"### Making changes\n",[117,932,934,937],{"class":119,"line":933},10,[117,935,936],{"class":885},"-",[117,938,939],{"class":169}," Keep changes minimal and focused on the user request\n",[117,941,943,945],{"class":119,"line":942},11,[117,944,936],{"class":885},[117,946,947],{"class":169}," Do not refactor existing code unless specifically instructed\n",[117,949,951,953],{"class":119,"line":950},12,[117,952,936],{"class":885},[117,954,955],{"class":169}," Preserve original code formatting\n",[117,957,959,961],{"class":119,"line":958},13,[117,960,936],{"class":885},[117,962,963],{"class":169}," Only modify code necessary to solve the specific request\n",[117,965,967],{"class":119,"line":966},14,[117,968,148],{"emptyLinePlaceholder":147},[117,970,972],{"class":119,"line":971},15,[117,973,974],{"class":870},"### Creating MRs\n",[117,976,978,980],{"class":119,"line":977},16,[117,979,936],{"class":885},[117,981,982],{"class":169}," Always run local builds and tests first\n",[117,984,986,988],{"class":119,"line":985},17,[117,987,936],{"class":885},[117,989,990],{"class":169}," Create a new branch for changes\n",[117,992,994,996],{"class":119,"line":993},18,[117,995,936],{"class":885},[117,997,998],{"class":169}," Automatically create a merge request after successful commits\n",[117,1000,1002,1004],{"class":119,"line":1001},19,[117,1003,936],{"class":885},[117,1005,1006],{"class":169}," Reference relevant issues or tasks in the MR description\n",[12,1008,1009,1010,1015],{},"Essas ",[48,1011,1014],{"href":1012,"rel":1013},"https://docs.gitlab.com/user/duo_agent_platform/customize/agents_md/",[],"instruções personalizadas"," também são processadas por agentes e flows no GitLab Duo Agent Platform.",[12,1017,1018,1019,1022,1023,62],{},"O Claude Code prefere o ",[104,1020,1021],{},"CLAUDE.md",", que também pode ser apontado para o ",[104,1024,854],{},[108,1026,1028],{"className":160,"code":1027,"language":162,"meta":113,"style":113},"@AGENTS.md\n",[104,1029,1030],{"__ignoreMap":113},[117,1031,1032],{"class":119,"line":120},[117,1033,1027],{"class":169},[38,1035,1037],{"id":1036},"resumo","Resumo",[12,1039,1040],{},"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.",[12,1042,1043],{},"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.",[12,1045,1046],{},"Neste tutorial, você viu três formas de unir o Claude Code e o GitLab Duo Agent Platform:",[25,1048,1049,1052,1055],{},[28,1050,1051],{},"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.",[28,1053,1054],{},"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.",[28,1056,1057],{},"Usar um agente externo com tecnologia Claude no GitLab Duo Agent Platform para resolver o feedback de revisão diretamente na MR.",[12,1059,1060],{},"O princípio se mantém o mesmo nos três casos: o Claude avança rápido, o GitLab certifica o trabalho.",[1062,1063,1064,1072,1080],"blockquote",{},[12,1065,1066,1067,62],{},"Se você ainda não usa o GitLab Duo Agent Platform, pode começar com um ",[48,1068,1071],{"href":1069,"rel":1070},"https://about.gitlab.com/pt-br/gitlab-duo-agent-platform/",[],"teste gratuito da ferramenta",[12,1073,1074,1075,62],{},"Se você já usa o GitLab no plano gratuito, pode assinar o GitLab Duo Agent Platform ",[48,1076,1079],{"href":1077,"rel":1078},"https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom",[],"seguindo alguns passos simples",[12,1081,1082,1083,1088,1089,1094],{},"E se você já é assinante do GitLab Premium ou Ultimate, basta ",[48,1084,1087],{"href":1085,"rel":1086},"https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/",[],"ativar o Duo Agent Platform"," e começar a usar os GitLab Credits ",[48,1090,1093],{"href":1091,"rel":1092},"https://docs.gitlab.com/subscriptions/gitlab_credits/#included-credits",[],"incluídos"," na sua assinatura.",[1096,1097,1098],"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}",{"title":113,"searchDepth":134,"depth":134,"links":1100},[1101,1104,1105,1109,1110,1113],{"id":40,"depth":134,"text":41,"children":1102},[1103],{"id":83,"depth":144,"text":84},{"id":172,"depth":134,"text":173},{"id":450,"depth":134,"text":451,"children":1106},[1107,1108],{"id":464,"depth":144,"text":465},{"id":593,"depth":144,"text":594},{"id":718,"depth":134,"text":719},{"id":843,"depth":134,"text":844,"children":1111},[1112],{"id":847,"depth":144,"text":848},{"id":1036,"depth":134,"text":1037},"ai","2026-05-06","Agentes de IA escrevem código rápido. Mas quem entrega? Veja como Claude Code e GitLab Duo Agent Platform vão do relato do bug à correção em produção.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1778087000/qdfsf8kz6ebfnopx9v2e.png",{},"/pt-br/blog/claude-code-and-gitlab",{"config":1123,"title":5,"description":1116},{"noIndex":1124},false,"claude-code-and-gitlab","pt-br/blog/claude-code-and-gitlab",[1128,1129,1130],"AI","tutorial","product","BlogPost","DEVf53kTufyZJnoGHQbY5JQ7DHbkzuDx3kR8-LV_Gy4",{"logo":1134,"freeTrial":1139,"sales":1144,"login":1149,"items":1154,"search":1475,"minimal":1510,"duo":1529,"switchNav":1538,"pricingDeployment":1549},{"config":1135},{"href":1136,"dataGaName":1137,"dataGaLocation":1138},"/pt-br/","gitlab logo","header",{"text":1140,"config":1141},"Obtenha uma avaliação gratuita",{"href":1142,"dataGaName":1143,"dataGaLocation":1138},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br&glm_content=default-saas-trial/","free trial",{"text":1145,"config":1146},"Solicite uma demonstração",{"href":1147,"dataGaName":1148,"dataGaLocation":1138},"/pt-br/sales/?contact-topic=request-demo","sales",{"text":1150,"config":1151},"Fazer login",{"href":1152,"dataGaName":1153,"dataGaLocation":1138},"https://gitlab.com/users/sign_in/","sign in",[1155,1231,1319,1324,1399,1453],{"text":1156,"left":147,"config":1157,"menu":1159},"Plataforma",{"dataNavLevelOne":1158},"platform",{"type":1160,"link":1161,"columns":1165,"feature":1220},"lists",{"text":1162,"config":1163},"Conheça a plataforma",{"href":1164,"dataGaName":1158,"dataGaLocation":1138},"/pt-br/platform/",[1166,1184,1202],{"title":1167,"items":1168},"Execução e fluxos de trabalho",[1169,1174,1179],{"text":1170,"config":1171},"CI/CD",{"href":1172,"dataGaLocation":1138,"dataGaName":1173},"/pt-br/solutions/continuous-integration/","ci/cd",{"text":1175,"config":1176},"Gerenciamento de código-fonte",{"href":1177,"dataGaLocation":1138,"dataGaName":1178},"/pt-br/solutions/source-code-management/","source code management",{"text":1180,"config":1181},"Entrega ágil",{"href":1182,"dataGaLocation":1138,"dataGaName":1183},"/pt-br/solutions/agile-delivery/","agile delivery",{"title":1185,"items":1186},"Segurança e governança",[1187,1192,1197],{"text":1188,"config":1189},"Testes de segurança de aplicações",{"href":1190,"dataGaLocation":1138,"dataGaName":1191},"/pt-br/solutions/application-security-testing/","application security testing",{"text":1193,"config":1194},"Governança e conformidade",{"href":1195,"dataGaLocation":1138,"dataGaName":1196},"/pt-br/solutions/software-compliance/","governance and compliance",{"text":1198,"config":1199},"Segurança da cadeia de suprimentos",{"href":1200,"dataGaLocation":1138,"dataGaName":1201},"/pt-br/solutions/supply-chain/","supply chain security",{"title":1203,"items":1204},"Contexto e IA",[1205,1210,1215],{"text":1206,"config":1207},"Orquestração agêntica",{"href":1208,"dataGaLocation":1138,"dataGaName":1209},"/pt-br/gitlab-duo-agent-platform/","agentic orchestration",{"text":1211,"config":1212},"Grafo de contexto",{"href":1213,"dataGaLocation":1138,"dataGaName":1214},"/pt-br/gitlab-orbit/","context graph",{"text":1216,"config":1217},"Visibilidade e métricas",{"href":1218,"dataGaLocation":1138,"dataGaName":1219},"/pt-br/solutions/visibility-measurement/","visibility and measurement",{"config":1221,"title":1224,"text":1225,"link":1226},{"background":1222,"textColor":1223},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Por que escolher o GitLab?","Uma plataforma única que oferece velocidade e controle em todo o ciclo de vida do seu software.",{"text":1227,"config":1228},"Saiba mais",{"href":1229,"dataGaName":1230,"dataGaLocation":1138},"/pt-br/why-gitlab/","why gitlab",{"text":1232,"left":147,"config":1233,"menu":1235},"Soluções",{"dataNavLevelOne":1234},"solutions",{"type":1160,"link":1236,"columns":1240,"feature":1310},{"text":1237,"config":1238},"Confira todas as soluções",{"href":1239,"dataGaName":1234,"dataGaLocation":1138},"/pt-br/solutions/",[1241,1259,1277],{"title":1242,"items":1243},"Resultados",[1244,1249,1254],{"text":1245,"config":1246},"Modernização de DevOps",{"href":1247,"dataGaLocation":1138,"dataGaName":1248},"/pt-br/assessments/devops-modernization-assessment/","devops modernization",{"text":1250,"config":1251},"Modernização da segurança",{"href":1252,"dataGaLocation":1138,"dataGaName":1253},"/pt-br/assessments/security-modernization-assessment/","security modernization",{"text":1255,"config":1256},"Modernização da IA",{"href":1257,"dataGaLocation":1138,"dataGaName":1258},"/pt-br/assessments/ai-modernization-assessment/","ai modernization",{"title":1260,"items":1261},"Por tamanho",[1262,1267,1272],{"text":1263,"config":1264},"Enterprise",{"href":1265,"dataGaLocation":1138,"dataGaName":1266},"/pt-br/enterprise/","enterprise",{"text":1268,"config":1269},"Pequenas empresas",{"href":1270,"dataGaLocation":1138,"dataGaName":1271},"/pt-br/small-business/","small business",{"text":1273,"config":1274},"Start-ups",{"href":1275,"dataGaLocation":1138,"dataGaName":1276},"/pt-br/solutions/startups/","startups",{"title":1278,"items":1279},"Indústrias",[1280,1285,1290,1295,1300,1305],{"text":1281,"config":1282},"Serviços financeiros",{"href":1283,"dataGaLocation":1138,"dataGaName":1284},"/pt-br/solutions/finance/","financial services",{"text":1286,"config":1287},"Setor público",{"href":1288,"dataGaLocation":1138,"dataGaName":1289},"/pt-br/solutions/public-sector/","public sector",{"text":1291,"config":1292},"Telecomunicações",{"href":1293,"dataGaLocation":1138,"dataGaName":1294},"/pt-br/solutions/telecommunications/","telecommunications",{"text":1296,"config":1297},"Serviços automotivos",{"href":1298,"dataGaLocation":1138,"dataGaName":1299},"/pt-br/solutions/automotive/","automotive",{"text":1301,"config":1302},"Educação",{"href":1303,"dataGaLocation":1138,"dataGaName":1304},"/pt-br/solutions/education/","education",{"text":1306,"config":1307},"Setor aeroespacial",{"href":1308,"dataGaLocation":1138,"dataGaName":1309},"/pt-br/solutions/aerospace/","aerospace",{"config":1311,"title":1312,"text":1313,"link":1314},{"background":1222,"textColor":1223},"GitLab Transcend","Confira nossas inovações mais recentes, anunciadas no último Transcend.",{"text":1315,"config":1316},"Acesse o blog",{"href":1317,"dataGaName":1318,"dataGaLocation":1138},"/blog/gitlab-transcend-announcements/","gitlab transcend",{"text":1320,"config":1321},"Preços",{"href":1322,"dataGaName":1323,"dataGaLocation":1138,"dataNavLevelOne":1323},"/pt-br/pricing/","pricing",{"text":1325,"config":1326,"menu":1328},"Recursos",{"dataNavLevelOne":1327},"resources",{"type":1160,"link":1329,"columns":1333,"feature":1390},{"text":1330,"config":1331},"Confira todos os recursos",{"href":1332,"dataGaName":1327,"dataGaLocation":1138},"/pt-br/resources/",[1334,1362],{"title":1335,"items":1336},"Descubra",[1337,1342,1347,1352,1357],{"text":1338,"config":1339},"Documentação",{"href":1340,"dataGaName":1341,"dataGaLocation":1138},"https://docs.gitlab.com/","docs",{"text":1343,"config":1344},"University",{"href":1345,"dataGaName":1346,"dataGaLocation":1138},"https://university.gitlab.com/","university",{"text":1348,"config":1349},"Demo Series",{"href":1350,"dataGaName":1351,"dataGaLocation":1138},"/pt-br/gitlab-technical-demo-series/","demo series",{"text":1353,"config":1354},"Demo Hub",{"href":1355,"dataGaName":1356,"dataGaLocation":1138},"/pt-br/demo-hub/","demo hub",{"text":1358,"config":1359},"Serviços",{"href":1360,"dataGaName":1361,"dataGaLocation":1138},"/pt-br/services/","services",{"title":1363,"items":1364},"Conecte-se",[1365,1370,1375,1380,1385],{"text":1366,"config":1367},"Blog",{"href":1368,"dataGaName":1369,"dataGaLocation":1138},"/blog/","blog",{"text":1371,"config":1372},"Comunidade",{"href":1373,"dataGaName":1374,"dataGaLocation":1138},"/community/","community",{"text":1376,"config":1377},"Clientes",{"href":1378,"dataGaName":1379,"dataGaLocation":1138},"/pt-br/customers/","customers",{"text":1381,"config":1382},"Parceiros",{"href":1383,"dataGaName":1384,"dataGaLocation":1138},"/pt-br/partners/","partners",{"text":1386,"config":1387},"Eventos",{"href":1388,"dataGaName":1389,"dataGaLocation":1138},"/events/","events",{"config":1391,"title":1392,"text":1393,"link":1394},{"background":1222,"textColor":1223},"Novidades no GitLab","Acompanhe as melhorias e os recursos mais recentes.",{"text":1395,"config":1396},"Confira as novidades",{"href":1397,"dataGaName":1398,"dataGaLocation":1138},"/pt-br/whats-new/","whats new",{"text":1400,"config":1401,"menu":1403},"Empresa",{"dataNavLevelOne":1402},"company",{"type":1160,"columns":1404},[1405],{"items":1406},[1407,1412,1418,1423,1428,1433,1438,1443,1448],{"text":1408,"config":1409},"Sobre",{"href":1410,"dataGaName":1411,"dataGaLocation":1138},"/pt-br/company/","about",{"text":1413,"config":1414,"footerGa":1417},"Vagas",{"href":1415,"dataGaName":1416,"dataGaLocation":1138},"/jobs/","jobs",{"dataGaName":1416},{"text":1419,"config":1420},"Imprensa",{"href":1421,"dataGaName":1422,"dataGaLocation":1138},"/press/","press",{"text":1424,"config":1425},"Manual",{"href":1426,"dataGaName":1427,"dataGaLocation":1138},"https://handbook.gitlab.com/","handbook",{"text":1429,"config":1430},"Liderança",{"href":1431,"dataGaName":1432,"dataGaLocation":1138},"/company/team/e-group/","leadership",{"text":1434,"config":1435},"Relações com investidores",{"href":1436,"dataGaName":1437,"dataGaLocation":1138},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1439,"config":1440},"Trust Center",{"href":1441,"dataGaName":1442,"dataGaLocation":1138},"/pt-br/security/","trust center",{"text":1444,"config":1445},"AI Transparency Center",{"href":1446,"dataGaName":1447,"dataGaLocation":1138},"/pt-br/ai-transparency-center/","ai transparency center",{"text":1449,"config":1450},"Boletim informativo",{"href":1451,"dataGaName":1452,"dataGaLocation":1138},"/company/contact/#contact-forms","newsletter",{"text":1454,"config":1455,"menu":1456},"Entre em contato",{"dataNavLevelOne":1402},{"type":1160,"columns":1457},[1458],{"items":1459},[1460,1465,1470],{"text":1461,"config":1462},"Fale com a equipe de vendas",{"href":1463,"dataGaName":1464,"dataGaLocation":1138},"/pt-br/sales/","talk to sales",{"text":1466,"config":1467},"Portal de ajuda",{"href":1468,"dataGaName":1469,"dataGaLocation":1138},"https://support.gitlab.com/hc/en-us","support portal",{"text":1471,"config":1472},"Portal de clientes",{"href":1473,"dataGaName":1474,"dataGaLocation":1138},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1476,"login":1477,"suggestions":1484},"Fechar",{"text":1478,"link":1479},"Para pesquisar repositórios e projetos, faça login em",{"text":1480,"config":1481},"gitlab.com",{"href":1152,"dataGaName":1482,"dataGaLocation":1483},"search login","search",{"text":1485,"default":1486},"Sugestões",[1487,1490,1495,1497,1502,1507],{"text":1488,"config":1489},"GitLab Duo Agent Platform",{"href":1208,"dataGaName":1488,"dataGaLocation":1483},{"text":1491,"config":1492},"Sugestões de código (AI)",{"href":1493,"dataGaName":1494,"dataGaLocation":1483},"/pt-br/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1170,"config":1496},{"href":1172,"dataGaName":1170,"dataGaLocation":1483},{"text":1498,"config":1499},"GitLab na AWS",{"href":1500,"dataGaName":1501,"dataGaLocation":1483},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":1503,"config":1504},"GitLab no Google Cloud",{"href":1505,"dataGaName":1506,"dataGaLocation":1483},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1224,"config":1508},{"href":1229,"dataGaName":1509,"dataGaLocation":1483},"Why GitLab?",{"freeTrial":1511,"mobileIcon":1516,"desktopIcon":1521,"secondaryButton":1524},{"text":1512,"config":1513},"Iniciar avaliação gratuita",{"href":1514,"dataGaName":1143,"dataGaLocation":1515},"https://gitlab.com/-/trials/new/","nav",{"altText":1517,"config":1518},"Ícone do GitLab",{"src":1519,"dataGaName":1520,"dataGaLocation":1515},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1517,"config":1522},{"src":1523,"dataGaName":1520,"dataGaLocation":1515},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1525,"config":1526},"Primeiros passos",{"href":1527,"dataGaName":1528,"dataGaLocation":1515},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":1530,"mobileIcon":1534,"desktopIcon":1536},{"text":1531,"config":1532},"Saiba mais sobre o GitLab Duo",{"href":1208,"dataGaName":1533,"dataGaLocation":1515},"gitlab duo",{"altText":1517,"config":1535},{"src":1519,"dataGaName":1520,"dataGaLocation":1515},{"altText":1517,"config":1537},{"src":1523,"dataGaName":1520,"dataGaLocation":1515},{"button":1539,"mobileIcon":1544,"desktopIcon":1546},{"text":1540,"config":1541},"/switch",{"href":1542,"dataGaName":1543,"dataGaLocation":1515},"#contact","switch",{"altText":1517,"config":1545},{"src":1519,"dataGaName":1520,"dataGaLocation":1515},{"altText":1517,"config":1547},{"src":1548,"dataGaName":1520,"dataGaLocation":1515},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1550,"mobileIcon":1555,"desktopIcon":1557},{"text":1551,"config":1552},"Voltar para preços",{"href":1322,"dataGaName":1553,"dataGaLocation":1515,"icon":1554},"back to pricing","GoBack",{"altText":1517,"config":1556},{"src":1519,"dataGaName":1520,"dataGaLocation":1515},{"altText":1517,"config":1558},{"src":1523,"dataGaName":1520,"dataGaLocation":1515},{"title":1560,"button":1561,"config":1564},"GitLab Orbit chegou: a camada de contexto para agentes de IA.",{"text":1227,"config":1562},{"href":1213,"dataGaName":1563,"dataGaLocation":1138},"orbit",{"layout":1565,"disabled":1124},"release",{"data":1567},{"text":1568,"source":1569,"edit":1575,"contribute":1580,"config":1585,"items":1590,"minimal":1808},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":1570,"config":1571},"Ver a origem da página",{"href":1572,"dataGaName":1573,"dataGaLocation":1574},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1576,"config":1577},"Editar esta página",{"href":1578,"dataGaName":1579,"dataGaLocation":1574},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1581,"config":1582},"Contribua",{"href":1583,"dataGaName":1584,"dataGaLocation":1574},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1586,"facebook":1587,"youtube":1588,"linkedin":1589},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1591,1637,1692,1734,1775],{"title":1320,"links":1592,"subMenu":1607},[1593,1597,1602],{"text":1594,"config":1595},"Confira os planos",{"href":1322,"dataGaName":1596,"dataGaLocation":1574},"view plans",{"text":1598,"config":1599},"Por que escolher o GitLab Premium?",{"href":1600,"dataGaName":1601,"dataGaLocation":1574},"/pt-br/pricing/premium/","why premium",{"text":1603,"config":1604},"Por que escolher o GitLab Ultimate?",{"href":1605,"dataGaName":1606,"dataGaLocation":1574},"/pt-br/pricing/ultimate/","why ultimate",[1608],{"title":1609,"links":1610},"Entre em contato conosco",[1611,1613,1615,1617,1622,1627,1632],{"text":1461,"config":1612},{"href":1463,"dataGaName":1148,"dataGaLocation":1574},{"text":1466,"config":1614},{"href":1468,"dataGaName":1469,"dataGaLocation":1574},{"text":1471,"config":1616},{"href":1473,"dataGaName":1474,"dataGaLocation":1574},{"text":1618,"config":1619},"Status",{"href":1620,"dataGaName":1621,"dataGaLocation":1574},"https://status.gitlab.com/","status",{"text":1623,"config":1624},"Termos de uso",{"href":1625,"dataGaName":1626,"dataGaLocation":1574},"/terms/","terms of use",{"text":1628,"config":1629},"Aviso de privacidade",{"href":1630,"dataGaName":1631,"dataGaLocation":1574},"/pt-br/privacy/","privacy statement",{"text":1633,"config":1634},"Preferências de cookies",{"dataGaName":1635,"dataGaLocation":1574,"id":1636,"isOneTrustButton":147},"cookie preferences","ot-sdk-btn",{"title":1156,"links":1638,"subMenu":1649},[1639,1641,1643,1645,1647],{"text":1162,"config":1640},{"href":1164,"dataGaName":1158,"dataGaLocation":1574},{"text":1206,"config":1642},{"href":1208,"dataGaName":1209,"dataGaLocation":1574},{"text":1170,"config":1644},{"href":1172,"dataGaName":1173,"dataGaLocation":1574},{"text":1211,"config":1646},{"href":1213,"dataGaName":1214,"dataGaLocation":1574},{"text":1224,"config":1648},{"href":1229,"dataGaName":1230,"dataGaLocation":1574},[1650],{"title":1651,"links":1652},"Tópicos",[1653,1657,1662,1667,1672,1677,1682,1687],{"text":1170,"config":1654},{"href":1655,"dataGaName":1656,"dataGaLocation":1574},"/pt-br/topics/ci-cd/","cicd",{"text":1658,"config":1659},"GitOps",{"href":1660,"dataGaName":1661,"dataGaLocation":1574},"/pt-br/topics/gitops/","gitops",{"text":1663,"config":1664},"DevOps",{"href":1665,"dataGaName":1666,"dataGaLocation":1574},"/pt-br/topics/devops/","devops",{"text":1668,"config":1669},"Controle de versão",{"href":1670,"dataGaName":1671,"dataGaLocation":1574},"/pt-br/topics/version-control/","version control",{"text":1673,"config":1674},"DevSecOps",{"href":1675,"dataGaName":1676,"dataGaLocation":1574},"/pt-br/topics/devsecops/","devsecops",{"text":1678,"config":1679},"De nuvem nativa",{"href":1680,"dataGaName":1681,"dataGaLocation":1574},"/pt-br/topics/cloud-native/","cloud native",{"text":1683,"config":1684},"IA para programação",{"href":1685,"dataGaName":1686,"dataGaLocation":1574},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":1688,"config":1689},"IA agêntica",{"href":1690,"dataGaName":1691,"dataGaLocation":1574},"/pt-br/topics/agentic-ai/","agentic ai",{"title":1232,"links":1693},[1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1721,1725,1730],{"text":1245,"config":1695},{"href":1247,"dataGaName":1248,"dataGaLocation":1574},{"text":1250,"config":1697},{"href":1252,"dataGaName":1253,"dataGaLocation":1574},{"text":1255,"config":1699},{"href":1257,"dataGaName":1258,"dataGaLocation":1574},{"text":1281,"config":1701},{"href":1283,"dataGaName":1284,"dataGaLocation":1574},{"text":1286,"config":1703},{"href":1288,"dataGaName":1289,"dataGaLocation":1574},{"text":1291,"config":1705},{"href":1293,"dataGaName":1294,"dataGaLocation":1574},{"text":1296,"config":1707},{"href":1298,"dataGaName":1299,"dataGaLocation":1574},{"text":1301,"config":1709},{"href":1303,"dataGaName":1304,"dataGaLocation":1574},{"text":1306,"config":1711},{"href":1308,"dataGaName":1309,"dataGaLocation":1574},{"text":1263,"config":1713},{"href":1265,"dataGaName":1266,"dataGaLocation":1574},{"text":1268,"config":1715},{"href":1270,"dataGaName":1271,"dataGaLocation":1574},{"text":1273,"config":1717},{"href":1275,"dataGaName":1276,"dataGaLocation":1574},{"text":1658,"config":1719},{"href":1720,"dataGaName":1661,"dataGaLocation":1574},"/pt-br/solutions/gitops/",{"text":1722,"config":1723},"Análise de composição de software",{"href":1200,"dataGaName":1724,"dataGaLocation":1574},"software composition analysis",{"text":1726,"config":1727},"Gestão de fluxo de valor do GitLab",{"href":1728,"dataGaName":1729,"dataGaLocation":1574},"/pt-br/solutions/value-stream-management/","value stream management",{"text":1731,"config":1732},"Todas as soluções",{"href":1239,"dataGaName":1733,"dataGaLocation":1574},"all solutions",{"title":1325,"links":1735},[1736,1741,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1771],{"text":1737,"config":1738},"Instalação",{"href":1739,"dataGaName":1740,"dataGaLocation":1574},"/pt-br/install/","install",{"text":1742,"config":1743},"Guias de início rápido",{"href":1744,"dataGaName":1745,"dataGaLocation":1574},"/pt-br/get-started/","quick setup checklists",{"text":1338,"config":1747},{"href":1340,"dataGaName":1341,"dataGaLocation":1574},{"text":1343,"config":1749},{"href":1345,"dataGaName":1346,"dataGaLocation":1574},{"text":1348,"config":1751},{"href":1350,"dataGaName":1351,"dataGaLocation":1574},{"text":1353,"config":1753},{"href":1355,"dataGaName":1356,"dataGaLocation":1574},{"text":1358,"config":1755},{"href":1360,"dataGaName":1361,"dataGaLocation":1574},{"text":1366,"config":1757},{"href":1368,"dataGaName":1369,"dataGaLocation":1574},{"text":1371,"config":1759},{"href":1373,"dataGaName":1374,"dataGaLocation":1574},{"text":1376,"config":1761},{"href":1378,"dataGaName":1379,"dataGaLocation":1574},{"text":1381,"config":1763},{"href":1383,"dataGaName":1384,"dataGaLocation":1574},{"text":1386,"config":1765},{"href":1388,"dataGaName":1389,"dataGaLocation":1574},{"text":1449,"config":1767},{"href":1451,"dataGaName":1452,"dataGaLocation":1574},{"text":1769,"config":1770},"Novidades",{"href":1397,"dataGaName":1398,"dataGaLocation":1574},{"text":1772,"config":1773},"Todos os recursos",{"href":1332,"dataGaName":1774,"dataGaLocation":1574},"all resources",{"title":1400,"links":1776},[1777,1779,1781,1783,1785,1787,1789,1791,1793,1798,1803],{"text":1408,"config":1778},{"href":1410,"dataGaName":1402,"dataGaLocation":1574},{"text":1413,"config":1780},{"href":1415,"dataGaName":1416,"dataGaLocation":1574},{"text":1419,"config":1782},{"href":1421,"dataGaName":1422,"dataGaLocation":1574},{"text":1424,"config":1784},{"href":1426,"dataGaName":1427,"dataGaLocation":1574},{"text":1429,"config":1786},{"href":1431,"dataGaName":1432,"dataGaLocation":1574},{"text":1434,"config":1788},{"href":1436,"dataGaName":1437,"dataGaLocation":1574},{"text":1439,"config":1790},{"href":1441,"dataGaName":1442,"dataGaLocation":1574},{"text":1444,"config":1792},{"href":1446,"dataGaName":1447,"dataGaLocation":1574},{"text":1794,"config":1795},"Sustentabilidade",{"href":1796,"dataGaName":1797,"dataGaLocation":1574},"/sustainability/","Sustainability",{"text":1799,"config":1800},"Diversidade, inclusão e pertencimento (DIB)",{"href":1801,"dataGaName":1802,"dataGaLocation":1574},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1804,"config":1805},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":1806,"dataGaName":1807,"dataGaLocation":1574},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1809},[1810,1813,1816],{"text":1811,"config":1812},"Termos",{"href":1625,"dataGaName":1626,"dataGaLocation":1574},{"text":1814,"config":1815},"Cookies",{"dataGaName":1635,"dataGaLocation":1574,"id":1636,"isOneTrustButton":147},{"text":1817,"config":1818},"Privacidade",{"href":1630,"dataGaName":1631,"dataGaLocation":1574},[1820],{"id":1821,"title":7,"body":1118,"config":1822,"content":1824,"description":1118,"extension":1828,"meta":1829,"navigation":147,"path":1830,"seo":1831,"stem":1832,"__hash__":1833},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":1823},"BlogAuthor",{"name":7,"config":1825},{"headshot":1826,"ctfId":1827},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[],{"header":1836,"blurb":1837,"button":1838,"secondaryButton":1843},"Comece a desenvolver mais rápido hoje","Veja o que sua equipe pode fazer com a plataforma de orquestração inteligente para DevSecOps.\n",{"text":1839,"config":1840},"Obtenha sua avaliação gratuita",{"href":1841,"dataGaName":1143,"dataGaLocation":1842},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/","feature",{"text":1461,"config":1844},{"href":1463,"dataGaName":1148,"dataGaLocation":1842},{"header":1846,"text":1847,"button":1851,"disclaimer":1854},"Comece sua avaliação gratuita de\n\n30 dias do GitLab\n",[1848,1849,1850],"Acesso à GitLab Duo Agent Platform","Experimente nossos recursos mais avançados","Automatize tarefas complexas com IA",{"text":1140,"config":1852},{"href":1853,"dataGaName":1143,"dataGaLocation":1369},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/blog/","Não é necessário cartão de crédito.",1790560540816]