1. 📖 Introdução

Neste codelab, você vai aprender os fundamentos da CLI Gemini e usar a extensão de revisão de código e análise de segurança no seu fluxo de trabalho de desenvolvimento de software.
O que você vai aprender
- Como configurar a CLI do Gemini
- Como configurar a CLI do Gemini
- Como instalar a extensão da CLI do Gemini
- Como usar a extensão da CLI do Gemini para revisão de código e análise de segurança
- Como configurar o MCP para a CLI do Gemini
- Como inspecionar a CLI do Gemini em CI/CD
O que é necessário
- Navegador da Web Google Chrome
- Uma conta do Gmail
- Um projeto do Cloud com uma conta de faturamento ativada
2. 🚀 Preparando a configuração de desenvolvimento do workshop
Etapa 1: selecionar "Projeto ativo" no Console do Cloud
No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud (consulte a seção no canto superior esquerdo do console).

Clique nele para ver uma lista de todos os seus projetos, como neste exemplo:

O valor indicado pela caixa vermelha é o ID DO PROJETO, que será usado em todo o tutorial.
Verifique se o faturamento está ativado para seu projeto do Cloud. Para verificar, clique no ícone de hambúrguer ☰ na barra superior esquerda, que mostra o menu de navegação, e encontre o menu "Faturamento".


Se você encontrar a "Conta de faturamento de teste do Google Cloud Platform" no título Faturamento / Visão geral ( seção superior esquerda do console da nuvem), seu projeto está pronto para ser usado neste tutorial. Caso contrário, volte ao início deste tutorial e resgate a conta de faturamento de teste.

Etapa 2: conhecer o Cloud Shell
Você vai usar o Cloud Shell na maior parte dos tutoriais. Clique em "Ativar o Cloud Shell" na parte de cima do console do Google Cloud. Se for preciso autorizar, clique em Autorizar.


Depois de se conectar ao Cloud Shell, precisamos verificar se o shell ( ou terminal) já está autenticado com nossa conta.
gcloud auth list
Se você vir seu Gmail pessoal como no exemplo de saída abaixo, tudo está certo.
Credentialed Accounts
ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Caso contrário, atualize o navegador e clique em Autorizar quando solicitado. A autorização pode ser interrompida devido a um problema de conexão.
Em seguida, também precisamos verificar se o shell já está configurado com o ID DO PROJETO correto. Se você vir um valor entre parênteses antes do ícone $ no terminal (na captura de tela abaixo, o valor é "your-workshop-project"), esse valor mostra o projeto configurado para sua sessão de shell ativa.

Se o valor mostrado já estiver correto, pule o próximo comando. No entanto, se não estiver correto ou estiver faltando, execute o seguinte comando:
gcloud config set project <YOUR_PROJECT_ID>
Etapa 3: conhecer o editor do Cloud Shell e configurar o diretório de trabalho do aplicativo
Agora, podemos configurar nosso editor de código para fazer algumas coisas de programação. Vamos usar o editor do Cloud Shell para isso.
Clique no botão Abrir editor para abrir um editor do Cloud Shell
.
Agora você vai ver a interface do editor do Cloud Shell, como mostrado abaixo.

Agora, clone o repositório de demonstração com que vamos interagir. Primeiro, precisamos abrir o terminal do editor. Para fazer isso, clique em Terminal -> Novo terminal na barra de menus ou use Ctrl + Shift + C. Isso vai abrir uma janela de terminal na parte de baixo do navegador.

Em seguida, execute este comando no terminal:
git clone https://github.com/alphinside/gemini-cli-code-analysis-demo.git code-analysis-demo
Depois disso, acesse a seção superior do editor do Cloud Shell e clique em Arquivo->Abrir pasta,encontre o diretório nome de usuário e o diretório do repositório clonado code-analysis-demo e clique no botão "OK". Isso vai definir o diretório escolhido como o principal de trabalho. Neste exemplo, o nome de usuário é alvinprayuda. Portanto, o caminho do diretório é mostrado abaixo.


Agora, o diretório de trabalho do Editor do Cloud Shell deve ficar assim:

Agora podemos passar para a próxima fase
3. 🚀 Configuração
Se você quiser instalar a CLI do Gemini no seu sistema local, siga estas etapas:
- Confira se o sistema tem o Node versão 20 ou mais recente.
- Ative a CLI do Gemini de uma destas maneiras:
- Instalar como um pacote global
# Install as an executor
npm install -g @google/gemini-cli
# then run it from terminal
gemini
- Ou execute diretamente da fonte para sempre ter a versão mais recente
npx https://github.com/google-gemini/gemini-cli
Quando você executar o app pela primeira vez, ele vai fazer várias perguntas. Se você executar em um IDE (por exemplo, VSCode), a seguinte pergunta será feita:

Em seguida, ele vai pedir várias opções para autenticação.

Há várias opções:
- Se você escolher Fazer login com o Google, uma página de autenticação do Google será aberta no navegador. Basta aceitar.
- Se preferir usar uma chave da API Gemini, crie uma na página do AI Studio e, em seguida, crie o arquivo .env no diretório de trabalho com a variável GEMINI_API_KEY definida ou execute o comando
export GEMINI_API_KEY="your-api-key"na linha de comando. - Se você escolher usar a Vertex AI, vai precisar de um projeto como o que você configurou anteriormente, criar um arquivo .env e definir GOOGLE_CLOUD_PROJECT e GOOGLE_CLOUD_LOCATION.
Se quiser mudar esses métodos de autenticação, execute o comando /auth na CLI do Gemini ou edite o arquivo de configuração. Se você quiser editar o arquivo de configuração diretamente, no Linux ele estará em $HOME/.gemini/settings.json . Você vai ver e editar o tipo security e auth.
{
"security": {
"auth": {
"selectedType": "vertex-ai" # or "gemini-api-key" or "oauth-personal"
}
}
}

4. 🚀 Comandos básicos e ferramentas integradas
Agora, vamos testar a CLI do Gemini para saber mais sobre ela. Se você estiver procurando um comando básico que possa ser usado, digite /help para mostrar todos os comandos disponíveis.

/help
Você vai ver uma saída como esta 
A CLI do Gemini é um agente de IA e, portanto, tem ferramentas equipadas para resolver a tarefa dada pelo usuário. Para conferir as ferramentas integradas, execute o comando /tools.

/tools
A saída será semelhante a esta:

É possível notar que a CLI do Gemini tem vários recursos, como leitura e gravação em arquivos, pesquisa na Web e muito mais. Várias dessas ferramentas exigiam confirmação do usuário por padrão devido ao risco potencial.
Agora vamos ver como funciona. Execute estes comandos na CLI do Gemini.

Find top 10 OWASP security issue and write it down to owasp.md
Você vai notar que ele vai invocar a ferramenta GoogleSearch e depois escrever o resultado usando WriteFile. Se você usa uma IDE, ela vai aparecer como uma opção de diff e exibição, seja para aceitar ou rejeitar as sugestões. Aqui, você pode ver que a CLI do Gemini pede permissão para gravar o arquivo.

5. 🚀 Extensões
Para melhorar a saída de uma tarefa específica com um agente de IA, os desafios são como criar um comando adequado, gerenciar uma engenharia de contexto adequada com a integração de ferramentas adequadas e assim por diante.
As extensões da CLI do Gemini são comandos e integrações pré-empacotados e fáceis de instalar que podem se conectar a ferramentas externas. Cada extensão contém um "playbook" integrado sobre como usar as ferramentas de forma eficaz e pode ser composta destes componentes:
- Comandos de barra personalizados
- Configurações do MCP
- Arquivos de contexto

Instalar extensões de segurança
Por exemplo, neste tutorial, vamos mostrar como instalar as extensões code-review e security.
Execute o comando a seguir para instalar as extensões security no terminal:
gemini extensions install https://github.com/gemini-cli-extensions/security
As seguintes perguntas vão aparecer. Basta pressionar Enter para aceitar.
Installing extension "gemini-cli-security". **Extensions may introduce unexpected behavior. Ensure you have investigated the extension source and trust the author.** This extension will run the following MCP servers: * securityServer (local): node /home/alvinprayuda/.gemini/extensions/gemini-cli-security/mcp-server/dist/security.js This extension will append info to your gemini.md context using GEMINI.md Do you want to continue? [Y/n]: Extension "gemini-cli-security" installed successfully and enabled.
Instalar extensões de revisão de código
Em seguida, instale a extensão code-review executando o comando abaixo:
gemini extensions install https://github.com/gemini-cli-extensions/code-review
Depois de terminar, execute a CLI do Gemini novamente.
gemini
e execute o comando /extensions. Você vai ver que essas duas extensões já estão instaladas.

/extensions
Agora vamos fazer uma execução prática no repositório de amostra que você clonou anteriormente.
6. 🚀 Modo interativo: aplicativo de extensão de análise de segurança de código
A extensão de segurança é uma extensão de código aberto da CLI do Gemini criada para melhorar a segurança do repositório. A extensão adiciona um novo comando à CLI do Gemini que analisa mudanças no código para identificar vários riscos e vulnerabilidades de segurança.
Agora vamos preparar nosso repositório de demonstração. Execute o seguinte comando para mudar para a ramificação em que as mudanças com risco de segurança já foram aplicadas:
git checkout refactor/analysis-demo
Depois disso, execute a CLI do Gemini no terminal.
gemini
Em seguida, vamos executar as extensões

/security:analyze
Isso vai iniciar um processo de longa duração. Durante o processo, você vai receber várias interrupções pedindo sua permissão para executar operações específicas, como mkdir, conforme mostrado abaixo.

Esse é um mecanismo de proteção para garantir que os usuários saibam o que será executado pela CLI Gemini. Para o restante do tutorial, você pode sempre permitir ( opção 2).
Essa extensão vai invocar um processo de longa duração. Você pode ver a criação de um arquivo de planejamento no diretório .gemini_security e a lista de verificação com os processos concluídos ou não. Como mostrado neste exemplo abaixo:

Vai levar algum tempo para concluir as tarefas. Enquanto isso, podemos verificar a origem dessas extensões no repositório do GitHub. Esse URL mostra o comando usado para executar todos esses processos de verificação de segurança.

Como você pode ver, para fazer essa verificação, o comando é usado como a CLI do Gemini para fazer uma verificação de duas etapas: a etapa de reconhecimento e a etapa de investigação mais detalhada.
Se você encontrar o seguinte comando na CLI do Gemini, escolha a opção 2 para desativar a detecção de loops.

Em seguida, peça para a CLI do Gemini continuar

continue
Esse é um mecanismo para evitar loops infinitos e improdutivos de chamadas de função, que será aprimorado com o tempo.
Depois de concluído, o relatório vai aparecer no terminal interativo. Para facilitar, vamos instruir a CLI do Gemini a gravar em security-analysis.md

write the result to security-analysis.md file
Agora você pode inspecionar o resultado gravado no arquivo.
7. 🚀 Modo não interativo: aplicativo de extensão de revisão de código
A extensão code-review adiciona um novo comando à CLI do Gemini que analisa mudanças no código para identificar vários problemas de qualidade.
Essa extensão pode ser executada no modo não interativo da CLI do Gemini, ou seja, todo o processo pode ser executado sem a necessidade de entrar no shell da CLI do Gemini. Para executar a CLI do Gemini no modo não interativo, use o seguinte padrão de comando:
gemini "put your command here"
No entanto, é importante observar que a execução no modo não interativo desativa qualquer operação de ferramentas que exija permissão do usuário. Portanto, precisamos adicionar a flag --yolo para aprovar automaticamente todas as ações, o que significa ativar todas as ferramentas durante o modo não interativo.
Vamos executar a extensão code-review com o seguinte comando:
gemini "/code-review" --yolo -e code-review > code-review.md
Esse comando grava o resultado da saída da CLI do Gemini no arquivo code-review.md. Observe a flag -e aqui. Ela controla qual extensão será ativada durante a sessão. Aqui, ativamos apenas a extensão code-review e desativamos as outras.
Isso vai levar um tempo, mas depois de concluído, você verá um resultado semelhante ao mostrado abaixo gravado no arquivo markdown.
Here are the results of the code review.
While the recent changes to rename `get_products` and `get_product` to `GetProducts` and `GetProduct` are minor, the codebase has some inconsistencies in its naming conventions. For instance, other functions like `create_product` use `snake_case`, while the newly renamed functions use `PascalCase`. For better code quality and readability, I recommend using a consistent naming convention throughout the project.
More importantly, I have identified several security vulnerabilities in the `main.py` file. Here is a summary of the findings:
### 1. SQL Injection
* **Severity**: High
* **Location**:
* `main.py:99` in `get_products_by_category`
* `main.py:146` in `search_products`
* `main.py:372` in `get_user_transactions`
* `main.py:438` in `adjust_inventory_by_query`
* **Description**: The endpoints directly use f-strings to construct SQL queries, making them vulnerable to SQL injection attacks. An attacker could manipulate the input to execute arbitrary SQL commands, potentially leading to data breaches or unauthorized modifications.
* **Recommendation**: Use parameterized queries or an ORM to handle database interactions. This will ensure that user input is properly sanitized and prevent SQL injection attacks.
### 2. Server-Side Request Forgery (SSRF)
* **Severity**: High
* **Location**: `main.py:265` in `fetch_url`
* **Description**: The `fetch_url` endpoint allows users to specify an arbitrary URL, which the server then requests. This can be exploited to make requests to internal services or local files, leading to information disclosure or other security breaches.
* **Recommendation**: Implement a whitelist of allowed domains or protocols to restrict the URLs that can be requested. Additionally, you can disable redirects and use a timeout to limit the impact of an attack.
### 3. Information Exposure
* **Severity**: Medium
* **Location**: `main.py:423` in `get_environment_variables`
* **Description**: The `get_environment_variables` endpoint exposes all environment variables to the user. This can include sensitive information such as API keys, database credentials, and other secrets.
* **Recommendation**: Remove this endpoint or restrict access to it to authorized users. If you need to expose some environment variables, do so selectively and avoid exposing sensitive information.
8. 🚀 Suporte ao protocolo de contexto de modelo
Agora, como inspecionamos antes nas explicações da extensão, a CLI do Gemini pode se conectar a servidores MCP, que são aplicativos que fornecem ferramentas e recursos pelo protocolo de contexto de modelo. Essa conexão permite que a CLI do Gemini interaja com sistemas e fontes de dados externos usando servidores MCP como pontes para seu ambiente local e serviços externos, como APIs.

Se você quiser fazer sua própria configuração do servidor MCP, modifique o arquivo .gemini/settings.json e adicione as seguintes configurações :
{
...
# Previous settings above if any
"mcpServers": {
"server_name": {
# MCP server configurations here
}
}
}
Neste tutorial, vamos configurar a conexão com nossa conta do GitHub para enviar os dados do relatório anterior para o GitHub.
Como configurar o servidor MCP do GitHub
Primeiro, vamos criar o arquivo de configuração do projeto da CLI do Gemini. Execute este comando
mkdir -p .gemini && touch .gemini/settings.json
Em seguida, abra o arquivo .gemini/settings.json e preencha com a seguinte configuração:
{
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "your-personal-access-token"
},
"timeout": 5000
}
}
}
Agora, vamos precisar do seu token de acesso pessoal do GitHub. Por isso, verifique se você já tem uma conta do GitHub.
Faça login no GitHub e acesse Configurações.

Depois disso, role a tela para baixo, encontre e clique em Configurações do desenvolvedor.

Em seguida, selecione Tokens de acesso pessoal e escolha Tokens (clássico).


Dê um nome ao seu token de acesso pessoal e marque os escopos repo.

Em seguida, role a tela para baixo e clique no botão Gerar token.
Clique no botão Gerar novo token e selecione Gerar novo token (clássico). Depois disso, copie o token gerado e escreva-o em .gemini/settings.json.

Assim, seu arquivo .gemini/settings.json vai ser semelhante ao exemplo a seguir:
{
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "ghp-xxxx"
},
"timeout": 5000
}
}
}
Agora, vamos verificar a conexão. Execute este comando para acessar a CLI do Gemini
gemini
Em seguida, execute o comando /mcp. O MCP do GitHub já vai estar configurado corretamente.

/mcp
Em seguida, vamos testar essa conexão do MCP enviando este comando

Aggregate the findings from @code-review.md and @security-analysis.md into a single report and ensure no duplicates issues reported. Post this report as a comment on the relevant pull request for the current git branch on GitHub and display the pull request URL for manual review
Observe a notação @code-review.md e @security-analysis.md aqui. É assim que referenciamos os arquivos a serem transmitidos para a CLI do Gemini. Esse comando vai ler o conteúdo dos dois arquivos e enviar um comentário para a solicitação de pull relacionada a essa ramificação usando a conexão MCP do GitHub. Depois disso, confira o URL da solicitação de pull para verificar.

9. 💡CLI do Gemini no fluxo de trabalho de CI/CD
Se você usa o GitHub, pode incorporar facilmente a CLI do Gemini no seu pipeline de CI/CD usando a run-gemini-cli GitHub Action. Ele atua como um agente autônomo para tarefas de programação rotineiras críticas e como um colaborador on demand a quem você pode delegar trabalho rapidamente.
Você pode usar o Gemini para fazer revisões de solicitações de pull, triagem de problemas, análise e modificação de código e muito mais usando a conversa do Gemini diretamente nos repositórios do GitHub.
O exemplo dessa integração pode ser inspecionado nesta solicitação de envio, em que usamos a extensão de segurança da CLI do Gemini no runner e fornecemos as revisões quando a solicitação de envio é criada.




10. 💡Conheça outras extensões da CLI do Gemini

Você também pode conferir mais extensões em https://geminicli.com/extensions . Confira outras ferramentas interessantes!
11. 🧹 Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste codelab, siga estas etapas:
- No console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.