GitLab - Automatizzazione della revisione del codice con l'IA generativa

GitLab - Automatizzazione della revisione del codice con l'AI generativa

Informazioni su questo codelab

subjectUltimo aggiornamento: mar 24, 2025
account_circleScritto da: Andrey Shakirov

1. Panoramica

In questo lab configurerai la pipeline CI/CD di GitLab e la integrerai con Gemini per automatizzare i passaggi di revisione del codice.

e6923862de67e3f5.png

In questo lab imparerai a:

  • Come aggiungere i passaggi di automazione della revisione del codice GenAI in GitLab
  • Come eseguire il cli devai localmente per automatizzare le revisioni del codice
  • Questo lab presuppone familiarità con gli ambienti Cloud Console e Cloud Shell.

2. Configurazione e requisiti

Configurazione del progetto cloud

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Il nome del progetto è il nome visualizzato per i partecipanti al progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
  • L'ID progetto è univoco per tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca; di solito non ti interessa quale sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come PROJECT_ID). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provare il tuo e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane invariato per tutta la durata del progetto.
  • Per tua informazione, esiste un terzo valore, un Numero progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le API/risorse Cloud. La partecipazione a questo codelab non avrà costi, o quasi. Per arrestare le risorse ed evitare di incorrere in fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud sono idonei al programma Prova senza costi di 300$.

Configurazione dell'ambiente

Apri la chat di Gemini.

bc3c899ac8bcf488.png

In alternativa, digita "Chiedi a Gemini" nella barra di ricerca.

e1e9ad314691368a.png

Abilita l'API Gemini for Google Cloud:

990a0ceea7d05531.png

Fai clic su "Start chatting" e segui una delle domande di esempio o digita il tuo prompt per provarlo.

ed120d672468b412.png

Prompt da provare:

  • Spiega Cloud Run in 5 punti chiave.
  • Sei un Product Manager di Google Cloud Run e devi spiegare Cloud Run a uno studente in 5 brevi punti chiave.
  • Sei un Product Manager di Google Cloud Run e devi spiegare Cloud Run a uno sviluppatore Kubernetes certificato in 5 brevi punti chiave.
  • Sei un Product Manager di Google Cloud Run. Spiega a uno sviluppatore senior quando utilizzeresti Cloud Run rispetto a GKE in 5 brevi punti chiave.

Consulta la guida ai prompt per scoprire di più su come scrivere prompt migliori.

In che modo Gemini for Google Cloud utilizza i tuoi dati

Impegno di Google per la privacy

Google è stata una delle prime aziende del settore a pubblicare un impegno in materia di privacy AI/ML, che illustra la nostra convinzione che i clienti debbano disporre del massimo livello di sicurezza e controllo sui propri dati archiviati nel cloud.

Dati che invii e ricevi

Le domande che fai a Gemini, incluse le informazioni di input o il codice che invii a Gemini per l'analisi o il completamento, sono chiamate prompt. Le risposte o i completamenti di codice che ricevi da Gemini sono chiamati risposte. Gemini non utilizza i tuoi prompt o le relative risposte come dati per addestrare i propri modelli.

Crittografia dei prompt

Quando invii prompt a Gemini, i tuoi dati vengono criptati in transito come input al modello sottostante in Gemini.

Dati del programma generati da Gemini

Gemini viene addestrato sul codice proprietario di Google Cloud e su codice di terze parti selezionato. Sei responsabile della sicurezza, dei test e dell'efficacia del tuo codice, incluse eventuali operazioni di completamento, generazione o analisi del codice offerte da Gemini.

Scopri di più su come Google gestisce i tuoi prompt.

3. Opzioni per testare i prompt

Se vuoi modificare/estendere i prompt devai cli esistenti, hai a disposizione diverse opzioni.

Vertex AI Studio fa parte della piattaforma Vertex AI di Google Cloud, progettata specificamente per semplificare e accelerare lo sviluppo e l'utilizzo dei modelli di IA generativa.

Google AI Studio è uno strumento basato sul web per la prototipazione e la sperimentazione della progettazione di prompt e dell'API Gemini.

L'app web Google Gemini (gemini.google.com) è uno strumento basato sul web progettato per aiutarti a esplorare e utilizzare la potenza dei modelli di IA di Gemini di Google.

4. Crea service account

Attiva Cloud Shell facendo clic sull'icona a destra della barra di ricerca.

3e0c761ca41f315e.png

Nel terminale aperto, abilita i servizi richiesti per utilizzare le API Vertex AI e la chat di Gemini.

gcloud services enable \
    aiplatform
.googleapis.com \
    cloudaicompanion
.googleapis.com \
    cloudresourcemanager
.googleapis.com \
    secretmanager
.googleapis.com

Se ti viene chiesto di autorizzare, fai clic su "Autorizza" per continuare.

6356559df3eccdda.png

Esegui i seguenti comandi per creare un nuovo account di servizio e le relative chiavi.

Utilizzerai questo account di servizio per effettuare chiamate API all'API Vertex AI Gemini dalle pipeline CICD.

PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME
='vertex-client'
DISPLAY_NAME
='Vertex Client'
KEY_FILE_NAME
='vertex-client-key'

gcloud iam service
-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"

Concedi i ruoli.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None

gcloud projects add
-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None

gcloud iam service
-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

5. Importa il repository GitHub nel repository GitLab

Vai alla pagina https://gitlab.com/projects/new e seleziona l'opzione "Import project" / "Repository by URL":

URL del repository Git:

https://github.com/GoogleCloudPlatform/genai-for-developers.git

In URL progetto, seleziona il tuo ID utente Gitlab

Imposta Visibilità su Public.

Fai clic su - "Create Project" per avviare il processo di importazione.

Se viene visualizzato un messaggio di errore relativo a un URL repository GitHub non valido, crea un nuovo token GitHub(granulare) con accesso di sola lettura ai repository pubblici e riprova a eseguire l'importazione fornendo il tuo ID utente e il tuo token GitHub.

6. Aggiungere variabili della pipeline CICD di GitLab

A questo punto, abiliterai la pipeline CICD di GitLab a eseguire la revisione del codice quando le modifiche vengono inviate al repository.

Apri il repository GitLab nel browser e vai alla sezione "Settings / CICD"".

Espandi la sezione Variables e fai clic su "Add variable".

Assicurati di deselezionare tutte le caselle di controllo quando aggiungi le nuove variabili.

Esempio:

5644cec84e7303c3.png

Aggiungi tre variabili:

  • PROJECT_ID: il tuo ID progetto Qwiklabs
  • LOCATION - us-central1
  • GOOGLE_CLOUD_CREDENTIALS

Per il valore della variabile GOOGLE_CLOUD_CREDENTIALS, utilizza la chiave dell'account di servizio creata nella sezione precedente. Esegui questo comando in Google Cloud Shell e copia/incolla il valore.

cat ~/vertex-client-key.json

Visualizzazione delle variabili CI/CD:

2f4594ce72be4834.png

7. Esegui la pipeline CICD di GitLab

Apri "Build / Pipelines" nell'interfaccia utente di GitLab e fai clic su "Run Pipeline".

a7518e37dde42366.png

8. Esamina l'output della pipeline GitLab

Apri "Build / Jobs" nell'interfaccia utente di GitLab e controlla l'output della pipeline.

985e4b322fb73b1c.png

Panoramica dei comandi della pipeline

Configurazione della pipeline GitLab: .gitlab-ci.yml

Comando di copertura del test:

devai review testcoverage -c ./sample-app/src

Questo comando devai review testcoverage analizza il codice e la suite di test associata, se disponibile, utilizzando un modello di IA generativa, Gemini. Valuta la copertura dei test del codice fornito, identificando file e metodi con e senza test di unità. Il comando sfrutta quindi il modello per fornire un riepilogo della copertura, incluse metriche come linee e rami/condizioni coperti. In base alla sua analisi, fornisce consigli per migliorare la copertura dei test, suggerisce test specifici da aggiungere e offre consigli generali sulle best practice di test. Infine, l'utente riceve tramite riga di comando l'output della risposta del modello Gemini, che include dettagli quali i file privi di copertura e suggerimenti per migliorare i test esistenti.

Comando di revisione del codice:

devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Il comando devai review code esegue una revisione completa del codice di uno snippet di codice fornito utilizzando un modello di IA generativa. Richiede il codice da esaminare come input (contesto) e una preferenza per il formato di output (output). Sfrutta un modello linguistico di grandi dimensioni per analizzare il codice in termini di correttezza, efficienza, manutenibilità, sicurezza e conformità alle best practice. Il comando crea un prompt dettagliato che indica a Gemini come eseguire la revisione e poi lo invia al modello per valutare il codice fornito. Infine, elabora la risposta di Gemini, formattandola in Markdown, JSON o una tabella in base alle preferenze dell'utente, e restituisce i risultati della revisione.

Comando di revisione della conformità:

devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md

Il comando devai review compliance analizza il codice in base a un insieme di best practice, in genere per le configurazioni di Kubernetes. Utilizza un modello Gemini per esaminare il codice fornito (context) e confrontarlo con gli standard specificati definiti in un file di configurazione separato (config). Il comando sfrutta un prompt per indicare al modello Gemini di comportarsi come un esperto ingegnere Kubernetes e fornire un report sulla conformità. Formatta quindi i risultati come una breve spiegazione, concentrandosi su esempi di codice che mostrano come risolvere eventuali problemi identificati. Infine, il comando stampa l'output della revisione della conformità di Gemini nella console. In questo modo, un utente può verificare facilmente la conformità del proprio codice.

9. Clona il repository GitLab

Torna al terminale Google Cloud Shell e clona il repository.

cd ~
mkdir gitlab
cd gitlab

Sostituisci con il tuo ID utente GitLab e l'URL del repository appena creato.

git clone https://gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git

Cambia directory e apri il file .gitlab-ci.yml. Se hai modificato il nome del repository durante l'importazione, aggiorna il nome della cartella prima di eseguire i seguenti comandi.

cd genai-for-developers

cloudshell edit
.gitlab-ci.yml

10. Spiega il codice con Gemini Code Assist

Fai clic con il tasto destro del mouse in un punto qualsiasi del file .gitlab-ci.yml e seleziona Gemini Code Assist > Explain.

f112229bcb52f48a.png

Spiegazione della recensione:

b07fb4cdf803c141.png

11. Sviluppo dell'interfaccia a riga di comando DevAI

In questa sezione apporterai modifiche a devai cli.

Per iniziare, configura l'ambiente virtuale Python, installa i requisiti ed esegui il comando di esempio.

cd ~/gitlab/genai-for-developers/devai-cli
python3
-m venv venv
. venv/bin/activate
pip3 install
-r src/requirements.txt
pip3 install
--editable ./src
devai echo

Imposta le variabili di ambiente richieste.

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1

Esegui il comando di revisione del codice per verificare che tutto funzioni correttamente:

devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader > code-review.md

cloudshell edit code
-review.md

Esamina i risultati utilizzando l'anteprima di Markdown nell'editor di Cloud Shell.

Utilizza la tavolozza dei comandi e seleziona "Markdown: Open Preview".

9587123b62f12a55.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

12. Esplora i comandi devai cli

Comando di revisione della copertura del test

devai review testcoverage -c ~/genai-for-developers/sample-app/src > testcoverage.md

cloudshell edit testcoverage
.md

Comando di revisione della conformità

devai review compliance --context ~/genai-for-developers/sample-app/k8s --config ~/genai-for-developers/devai-cli/.gemini/styleguide.md > k8s-review.md

cloudshell edit k8s
-review.md

Comando di revisione del rendimento

devai review performance -c ~/genai-for-developers/sample-app/src/main/java > performance-review.md

cloudshell edit performance
-review.md

Comando di revisione della sicurezza

devai review security -c ~/genai-for-developers/sample-app/src/main/java > security-review.md

cloudshell edit security
-review.md

Comandi di revisione degli elementi che bloccano

devai review blockers -c ~/gitlab/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/setup.md

Revisione e riepilogo di immagini/diagrammi

Diagramma di input[~/genai-for-developers/images/extension-diagram.png]:

4b109a74e1aa3fb6.png

Rivedi comando:

devai review image \
 
-f ~/genai-for-developers/images/extension-diagram.png \
 
-p "Review and summarize this diagram" > image-review.md

cloudshell edit image
-review.md

Output:

The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts. 

**Process Flow:**

1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud. 
3. **Vertex AI Review:**  Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally: 
    - Create new JIRA issues directly from the IDE based on the review prompts.
    - Generate new issues in a GitLab repository.

**Key Components:**

* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):**  Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.

**Benefits:**

* **Automated Review Assistance:**  Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews. 
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.

Analisi delle differenze tra immagini:

devai review imgdiff \
 
-c ~/genai-for-developers/images/devai-api.png \
 
-t ~/genai-for-developers/images/devai-api-slack.png > image-diff-review.md

 cloudshell edit image
-diff-review.md

Output:

The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image:

1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 
2. **Storage Bucket:**  The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 
3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI."
4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image.

**Decision Explanation:**

The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.

Analisi dei file video:

devai review video \
 
-f "/tmp/video.mp4" \
 
-p "Review user journey video and create unit tests using jest framework"

Comando di generazione della documentazione

devai document readme -c ~/gitlab/genai-for-developers/sample-app/src/main/

Output:

# Bank of Anthos - Balance Reader Service

## Description

The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster.

## Features

- Securely retrieves account balances using JWT authentication.
- Leverages a local cache for fast balance retrieval.
- Asynchronously processes transactions from a central ledger.
- Provides health check endpoints for Kubernetes liveness and readiness probes.
...

Esamina i comandi devai cli disponibili nell'editor di Cloud Shell:

cloudshell edit ~/gitlab/genai-for-developers/devai-cli/README.md

In alternativa, consulta il file README.md nel repository GitHub.

13. Complimenti!

Complimenti, hai completato il codelab.

Argomenti trattati:

  • Aggiunta di passaggi di automazione della revisione del codice GenAI in GitLab
  • Esegui l'interfaccia a riga di comando devai in locale

Passaggi successivi

  • Saranno presto disponibili altre sessioni pratiche.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina il progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

©2024 Google LLC. Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.