1. Descripción general
En este lab, configurarás la canalización de CICD de GitLab y la integrarás con Gemini para automatizar los pasos de revisión de código.

Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Cómo agregar pasos de automatización de la revisión de código con IA generativa en GitLab
- Cómo ejecutar la CLI de devai de forma local para automatizar las revisiones de código
Requisitos previos
- Para este lab, se da por sentado que el usuario tiene conocimientos previos sobre los entornos de shell y la consola de Cloud.
2. Configuración y requisitos
Configuración del proyecto de Cloud
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.



- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como
PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Configuración del entorno
Abre el chat de Gemini.

También puedes escribir "Pregúntale a Gemini" en la barra de búsqueda.

Habilita la API de Gemini para Google Cloud:

Haz clic en "Start chatting" y sigue una de las preguntas de ejemplo o escribe tu propia instrucción para probarlo.

Instrucciones que puedes probar:
- Explica Cloud Run en 5 puntos clave.
- Eres el gerente de productos de Google Cloud Run. Explícale a un estudiante qué es Cloud Run en 5 puntos clave breves.
- Eres el gerente de productos de Google Cloud Run. Explícale Cloud Run a un desarrollador certificado de Kubernetes en 5 puntos clave breves.
- Eres el gerente de productos de Google Cloud Run. Explícale a un desarrollador sénior en 5 puntos clave breves cuándo usarías Cloud Run en lugar de GKE.
Consulta la Guía de instrucciones para obtener más información sobre cómo escribir mejores instrucciones.
Cómo Gemini for Google Cloud usa tus datos
Compromiso de Google con la privacidad
Google fue uno de los primeros en el sector en publicar un compromiso de privacidad con la IA y el AA, que describe nuestra creencia de que los clientes deben tener el nivel más alto de seguridad y control sobre sus datos que se almacenan en la nube.
Datos que envías y recibes
Las preguntas que le haces a Gemini, incluida cualquier información de entrada o código que envíes para que Gemini lo analice o complete, se denominan instrucciones. Las respuestas o las sugerencias de código que recibes de Gemini se denominan respuestas. Gemini no usa tus instrucciones ni sus respuestas como datos para entrenar sus modelos.
Encriptación de instrucciones
Cuando envías instrucciones a Gemini, tus datos se encriptan en tránsito como entrada para el modelo subyacente en Gemini.
Datos del programa generados por Gemini
Gemini se entrena con código propio de Google Cloud y con código de terceros seleccionado. Eres responsable de la seguridad, las pruebas y la eficacia de tu código, incluida cualquier finalización, generación o análisis de código que te ofrezca Gemini.
Obtén más información sobre cómo Google maneja tus instrucciones.
3. Opciones para probar mensajes
Si deseas cambiar o extender las instrucciones existentes de la CLI de DevAI, tienes varias opciones para hacerlo.
Vertex AI Studio forma parte de la plataforma Vertex AI de Google Cloud y está diseñado específicamente para simplificar y acelerar el desarrollo y el uso de modelos de IA generativa.
Google AI Studio es una herramienta basada en la Web para crear prototipos y experimentar con la ingeniería de instrucciones y la API de Gemini.
- App web de Gemini (gemini.google.com)
La app web de Google Gemini (gemini.google.com) es una herramienta basada en la Web diseñada para ayudarte a explorar y utilizar el poder de los modelos de IA de Gemini de Google.
- App de Google Gemini para dispositivos móviles en Android y app de Google en iOS
4. Crear una cuenta de servicio.
Para activar Cloud Shell, haz clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

En la terminal abierta, habilita los servicios necesarios para usar las APIs de Vertex AI y el chat de Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
Si se te solicita autorización, haz clic en "Autorizar" para continuar.

Ejecuta los siguientes comandos para crear una cuenta de servicio y claves nuevas.
Usarás esta cuenta de servicio para realizar llamadas a la API de Gemini de Vertex AI desde las canalizaciones de 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"
Otorga roles.
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 un repo de GitHub a un repo de GitLab
Ve a https://gitlab.com/projects/new y selecciona la opción “Import project” o “Repository by URL”:
URL del repositorio de Git:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
En URL del proyecto, selecciona tu ID de usuario de GitLab.
Establece la visibilidad en Public.
Haz clic en "Create Project" para iniciar el proceso de importación.
Si ves un error sobre una URL de repositorio de GitHub no válida, crea un token de GitHub nuevo(detallado) con acceso de solo lectura a los repositorios públicos y vuelve a intentar la importación con tu ID de usuario y token de GitHub.
6. Agrega variables de canalización de CICD de GitLab
A continuación, habilitarás la canalización de CICD de GitLab para que ejecute la revisión de código cuando se envíen cambios al repositorio.
Abre el repositorio de GitLab en el navegador y navega a la sección "Settings / CICD"".
Expande la sección Variables y haz clic en "Add variable".
Asegúrate de desmarcar todas las casillas de verificación cuando agregues las variables nuevas.
Ejemplo:

Agrega 3 variables:
PROJECT_ID: Es el ID de tu proyecto de Qwiklabs.LOCATION: us-central1GOOGLE_CLOUD_CREDENTIALS
Para el valor de la variable GOOGLE_CLOUD_CREDENTIALS, usa la clave de la cuenta de servicio que se creó en la sección anterior. Ejecuta este comando en Google Cloud Shell y copia y pega el valor.
cat ~/vertex-client-key.json
Vista de Variables de CI/CD:

7. Ejecuta la canalización de CICD de GitLab
Abre "Build / Pipelines" en la IU de GitLab y haz clic en "Run Pipeline".

8. Revisa el resultado de la canalización de GitLab
Abre "Build / Jobs" en la IU de GitLab y revisa el resultado de la canalización.

Descripción general de los comandos de canalización
Configuración de la canalización de GitLab: .gitlab-ci.yml
Comando de cobertura de pruebas:
devai review testcoverage -c ./sample-app/src
Este comando devai review testcoverage analiza el código y su conjunto de pruebas asociado, si está disponible, con un modelo de IA generativa, Gemini. Evalúa la cobertura de pruebas del código proporcionado, identifica los archivos y los métodos con y sin pruebas de unidades. Luego, el comando aprovecha el modelo para proporcionar un resumen de la cobertura, incluidas métricas como las líneas y las ramas o condiciones cubiertas. Según su análisis, hace recomendaciones para mejorar la cobertura de las pruebas, sugiere pruebas específicas para agregar y ofrece consejos generales sobre las prácticas recomendadas de las pruebas. Por último, genera la respuesta del modelo de Gemini, que incluye detalles como los archivos que no tienen cobertura y sugerencias para mejorar las pruebas existentes para el usuario a través de la línea de comandos.
Comando de revisión de código:
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
El comando devai review code realiza una revisión integral del fragmento de código proporcionado con un modelo de IA generativa. Toma el código que se revisará como entrada (contexto) y una preferencia de formato de salida (salida). Utiliza un modelo de lenguaje extenso para analizar el código en cuanto a corrección, eficiencia, capacidad de mantenimiento, seguridad y cumplimiento de las prácticas recomendadas. El comando crea una instrucción detallada que le indica a Gemini cómo realizar la revisión y, luego, se la envía al modelo para que evalúe el código proporcionado. Por último, procesa la respuesta de Gemini, la formatea en Markdown, JSON o una tabla según las preferencias del usuario y muestra los resultados de la revisión.
Comando de revisión de cumplimiento:
devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md
El comando devai review compliance analiza el código en función de un conjunto de prácticas recomendadas, generalmente para las configuraciones de Kubernetes. Utiliza un modelo de Gemini para revisar el código proporcionado (context) y compararlo con los estándares especificados definidos en un archivo de configuración independiente (config). El comando aprovecha una instrucción para indicarle al modelo de Gemini que actúe como un ingeniero experto en Kubernetes y proporcione un informe de cumplimiento. Luego, da formato a los hallazgos como una breve explicación, enfocándose en muestras de código que demuestran cómo abordar los problemas identificados. Por último, el comando imprime el resultado de la revisión de cumplimiento de Gemini en la consola. Esto permite que el usuario audite fácilmente su código para verificar el cumplimiento.
9. Clona el repositorio de GitLab
Regresa a la terminal de Google Cloud Shell y clona el repositorio.
cd ~
mkdir gitlab
cd gitlab
Reemplaza los campos por tu ID de usuario de GitLab y la URL del repositorio que acabas de crear.
git clone https://gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
Cambia el directorio y abre el archivo .gitlab-ci.yml. Si cambiaste el nombre del repositorio durante la importación, actualiza el nombre de la carpeta antes de ejecutar los siguientes comandos.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
10. Cómo explicar código con Gemini Code Assist
Haz clic con el botón derecho en cualquier lugar del archivo .gitlab-ci.yml y selecciona Gemini Code Assist > Explain.

Explicación de la revisión:

11. Desarrollo de la CLI de DevAI
En esta sección, realizarás cambios en devai cli.
Para comenzar, configura el entorno virtual de Python, instala los requisitos y ejecuta el comando de muestra.
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
Configura las variables de entorno requeridas.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
Ejecuta el comando de revisión de código para verificar que todo funcione correctamente:
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
Revisa los resultados con la vista previa de Markdown en el editor de Cloud Shell.
Usa la paleta de comandos y selecciona "Markdown: Open Preview".



12. Explora los comandos de la CLI de devai
Comando de revisión de la cobertura de pruebas
devai review testcoverage -c ~/genai-for-developers/sample-app/src > testcoverage.md
cloudshell edit testcoverage.md
Comando de revisión del cumplimiento
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 de revisión del rendimiento
devai review performance -c ~/genai-for-developers/sample-app/src/main/java > performance-review.md
cloudshell edit performance-review.md
Comando de revisión de seguridad
devai review security -c ~/genai-for-developers/sample-app/src/main/java > security-review.md
cloudshell edit security-review.md
Comandos de revisión de bloqueadores
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/gitlab/genai-for-developers/sample-app/setup.md
Revisión y resumen de imágenes o diagramas
Diagrama de entrada [~/genai-for-developers/images/extension-diagram.png]:

Comando de revisión:
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
Resultado:
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.
Análisis de diferencias de imágenes:
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
Resultado:
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.
Análisis de archivos de video:
devai review video \
-f "/tmp/video.mp4" \
-p "Review user journey video and create unit tests using jest framework"
Comando de generación de documentación
devai document readme -c ~/gitlab/genai-for-developers/sample-app/src/main/
Resultado:
# 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. ...
Revisa los comandos disponibles de la CLI de devai en el editor de Cloud Shell:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/README.md
También puedes revisar el archivo README.md en el repositorio de GitHub.
13. ¡Felicitaciones!
¡Felicitaciones! Completaste el codelab.
Temas abordados:
- Cómo agregar pasos de automatización de revisión de código con IA generativa en GitLab
- Ejecuta la CLI de devai de forma local
Pasos siguientes:
- Pronto habrá más sesiones prácticas.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
©2024 Google LLC Todos los derechos reservados. Google y el logotipo de Google son marcas de Google LLC. El resto de los nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que están asociados.