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

Qué aprenderás
En este lab, aprenderás a realizar las siguientes tareas:
- Cómo agregar pasos de automatización de revisión de código con IA generativa en GitHub, GitLab y CircleCI
- Cómo usar los agentes y los kits de herramientas de ReAct de LangChain para automatizar tareas como comentar problemas de GitLab y abrir tickets de JIRA
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 Cloud AI Companion:

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. Regístrate en Gemini 1.5 Pro con una ventana de contexto de 1 millón de tokens o obtén más información.
- 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"
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. Bifurca el repo de GitHub en tu repo personal de GitHub
Ve a https://github.com/GoogleCloudPlatform/genai-for-developers/fork y selecciona tu ID de usuario de GitHub como propietario.
Desmarca la opción para copiar solo la rama "principal".
Haz clic en “Create fork”.
6. Habilita los flujos de trabajo de GitHub Actions
Abre el repositorio de GitHub bifurcado en el navegador y cambia a la pestaña "Actions" para habilitar los flujos de trabajo.

7. Agrega secretos del repositorio
Crea un secreto del repositorio en "Settings / Secrets and variables / Actions" en el repositorio de GitHub bifurcado.
Agrega el secreto del repositorio con el nombre "GOOGLE_API_CREDENTIALS".

Cambia a la ventana o pestaña de Google Cloud Shell y ejecuta el siguiente comando en la terminal de Cloud Shell.
cat ~/vertex-client-key.json
Copia el contenido del archivo y pégalo como valor del secreto.

Agrega el secreto PROJECT_ID con el ID de tu proyecto de Qwiklabs como valor 
8. Ejecutar flujo de trabajo de GitHub Actions
Navega a tu repositorio de GitHub en el navegador y ejecuta el flujo de trabajo.
El flujo de trabajo está configurado para ejecutarse en la inserción de código o la ejecución manual.
Selecciona "GenAI For Developers" en Todos los flujos de trabajo y haz clic en "Run workflow" con la rama "main".

Revisa los resultados:

Resultados del comando de cobertura de prueba:
devai review testcoverage -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Resultados del comando de revisión de código:
devai review code -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Resultados del comando de revisión del rendimiento:
devai review performance -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Resultados del comando de revisión de seguridad:
devai review security -c ${{ github.workspace }}/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

Resultados del comando de revisión de bloqueadores:
devai review blockers -c ${{ github.workspace }}/sample-app/pom.xml

9. Clona el repositorio
Regresa a la terminal de Cloud Shell y clona el repositorio.
Crea una carpeta para el repositorio de GitHub.
mkdir github
cd github
Cambia YOUR-GITHUB-USERID por tu ID de usuario de GitHub antes de ejecutar los comandos.
Establece el nombre de usuario y el correo electrónico de Git en la terminal.
Actualiza los valores antes de ejecutar los comandos.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git clone https://github.com/YOUR-GITHUB-USERID/genai-for-developers.git
Cambia la carpeta y abre el archivo de flujo de trabajo en el editor de Cloud Shell.
cd genai-for-developers
cloudshell edit .github/workflows/devai-review.yml
Espera hasta que se muestre el archivo de configuración en el IDE.

10. Habilitar Gemini Code Assist
Haz clic en el ícono “Gemini” en la esquina inferior derecha
.
Haz clic en "Login to Google Cloud" y "Select a Google Cloud Project".



En la ventana emergente, selecciona tu proyecto de Qwiklabs.

11. Cómo explicar código con Gemini Code Assist
Haz clic con el botón derecho en cualquier lugar del archivo devai-review.yml y selecciona Gemini Code Assist > Explain.

Explicación de la revisión:

12. Ejecuta la CLI de DEVAI de forma local
Regresa al Editor de Cloud Shell y abre una terminal nueva.

Vuelve a la terminal de Cloud Shell y ejecuta los siguientes comandos para instalar devai de forma local.
pip3 install devai-cli
Se instaló la CLI, pero no está en la ruta de acceso.
WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Ejecuta el siguiente comando para actualizar la variable de entorno PATH. Reemplaza este valor por el nombre de la carpeta principal del usuario. Por ejemplo: student_00_478dfeb8df15
export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin
Ejecuta el comando de la CLI de DevAI para realizar la revisión de código de forma local. Revisa el resultado de la CLI.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
cd ~/github/genai-for-developers
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Para abrir la secuencia de comandos de revisión, ejecuta el siguiente comando:
cloudshell edit devai-cli/src/devai/commands/review.py
Haz clic con el botón derecho en cualquier lugar del archivo review.py y selecciona Gemini Code Assist > Explain.
Revisa la explicación.

13. Desarrollo de la CLI de DevAI
En esta sección, realizarás cambios en la CLI de devai.
Para comenzar, configura el entorno virtual de Python, instala los requisitos y ejecuta el comando de muestra.
cd ~/github/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
Ejecuta el comando de revisión de cobertura de pruebas para verificar que todo funcione correctamente:
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Revisa los resultados con la vista previa de Markdown en el editor de Cloud Shell.
Crea un archivo nuevo y pega la respuesta de Gemini.
Luego, usa la paleta de comandos y selecciona "Markdown: Open Preview".



14. Explora los comandos de la CLI de devai
Comando de revisión de código
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java
Comando de revisión del rendimiento
devai review performance -c ~/github/genai-for-developers/sample-app/src/main/java
Comando de revisión de seguridad
devai review security -c ~/github/genai-for-developers/sample-app/src/main/java
Comando de revisión de la cobertura de pruebas
devai review testcoverage -c ~/github/genai-for-developers/sample-app/src
Comandos de revisión de bloqueadores
devai review blockers -c ~/github/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/github/genai-for-developers/sample-app/setup.md
Revisión y resumen de imágenes o diagramas:
Diagrama de entrada [~/github/genai-for-developers/images/extension-diagram.png]:

Comando de revisión:
devai review image \
-f ~/github/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram"
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 ~/github/genai-for-developers/images/devai-api.png \
-t ~/github/genai-for-developers/images/devai-api-slack.png
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.
Comando de generación de documentación:
devai document readme -c ~/github/genai-for-developers/sample-app/src/main/
Resultado:
# Bank of Anthos - Balance Reader Service ## Table of Contents - [Description](#description) - [Features](#features) - [Technologies Used](#technologies-used) - [Installation](#installation) - [Configuration](#configuration) - [Usage](#usage) - [Health Checks](#health-checks) - [Metrics and Tracing](#metrics-and-tracing) - [Contributing](#contributing) - [License](#license) ## 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. - Exposes metrics to Stackdriver for monitoring and observability. - Supports distributed tracing with Zipkin. ## Technologies Used - Java - Spring Boot - Spring Data JPA - Hibernate - Google Cloud SQL (PostgreSQL) - JWT (JSON Web Token) - Guava Cache - Micrometer - Stackdriver - Zipkin ## Installation 1. **Prerequisites:** - Java 17 or later - Maven 3.5 or later - Docker (for containerization) - Kubernetes cluster (for deployment) - Google Cloud account (for Stackdriver and other GCP services)
Revisa los comandos disponibles de la CLI de devai en el editor de Cloud Shell:
cloudshell edit ~/github/genai-for-developers/devai-cli/README.md
También puedes revisar el archivo README.md en el repositorio de GitHub.
15. Haz un seguimiento de todas las variables de entorno en un archivo
Comienza un archivo nuevo para hacer un seguimiento de todas las variables de entorno (p. ej., claves de API, tokens de API, etcétera) que crearás.
Las usarás para diferentes sistemas muchas veces a medida que avances en el lab, por lo que será más fácil consultarlas en un solo lugar.
16. Configuración de registro de LLM de LangSmith
Crea una cuenta de LangSmith y genera una clave de API de servicio en la sección Configuración. https://docs.smith.langchain.com/
Configura las variables de entorno necesarias para la integración de LangSmith. Reemplaza la clave de API del servicio antes de ejecutar los comandos.
export LANGCHAIN_API_KEY=langsmith-service-api-key
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
Para evitar exponer información sensible en la terminal, la práctica recomendada es usar read -s, que es una forma segura de establecer variables de entorno sin que el valor aparezca en el historial de comandos de la consola. Después de ejecutarlo, debes pegar el valor y presionar Intro.
17. Configuración de comandos de JIRA
Crea una cuenta de JIRA si no tienes una.
Crea un token de API de JIRA para tu proyecto. https://id.atlassian.com/manage-profile/security/api-tokens
Establece estas variables de entorno necesarias para la integración de JIRA (reemplaza los valores antes de ejecutar los comandos).
export JIRA_API_TOKEN=your-token-value
export JIRA_USERNAME="email that you used to register with JIRA"
export JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="JIRA project key"
export JIRA_CLOUD=true
Abre el archivo review.py:
cloudshell edit ~/github/genai-for-developers/devai-cli/src/devai/commands/review.py
Revisa el archivo review.py:
source=source.format(format_files_as_string(context))
code_chat_model = GenerativeModel(model_name)
code_chat = code_chat_model.start_chat()
code_chat.send_message(qry)
response = code_chat.send_message(source)
...
else:
click.echo(response.text)
Busca la línea que se encuentra debajo de esta y quítale el comentario:
# Uncomment after configuring JIRA and GitLab env variables - see README.md for details
Importa el comando de JIRA en la parte superior del archivo
# from devai.commands.jira import create_jira_issue
Método para crear un problema de Jira en el método code
#create_jira_issue("Code Review Results", response.text)
Vuelve a ejecutar el comando de revisión de código y verifica el resultado del agente:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
devai review code -c ~/github/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Resultado de muestra:
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader /home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead. warn_deprecated( Response from Model: ```java // Class: TransactionRepository // Method: findBalance // Efficiency - Consider using a native SQL query to improve performance for complex database operations. - Use prepared statements to avoid SQL injection vulnerabilities. // Best Practices - Return a Optional<Long> instead of null to handle the case when no balance is found for the given account.
/home/student_00_19a997c157f8/genai-for-developers/devai-cli/venv/lib/python3.9/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: La función __call__ dejó de estar disponible en LangChain 0.1.0 y se quitará en 0.2.0. En su lugar, usa invoke. warn_deprecated(
Ingresando nueva cadena AgentExecutor… Pensamiento: La descripción se proporciona en la pregunta, por lo que no hay nada que pensar. Acción:
{
"action": "create_issue",
"action_input": {
"description": "Class: TransactionRepository\nMethod: findBalance\n\nEfficiency\n- Consider using a native SQL query to improve performance for complex database operations.\n- Use prepared statements to avoid SQL injection vulnerabilities.\n\nBest Practices\n- Return a Optional<Long> instead of null to handle the case when no balance is found for the given account."
}
}
Se creó un problema nuevo con la clave CYMEATS-117
Observación: Se creó un problema nuevo con la clave CYMEATS-117. Pensamiento: Respuesta final: CYMEATS-117
Cadena terminada.
Open your JIRA project in the browser and review the created issue.
Sample JIRA issue view.
<img src="img/9a93a958c30f0b51.png" alt="9a93a958c30f0b51.png" width="624.00" />
Open [LangSmith portal](https://smith.langchain.com/) and review LLM trace for JIRA issue creation call.
Sample LangSmith LLM trace.
<img src="img/6222ee1653a5ea54.png" alt="6222ee1653a5ea54.png" width="624.00" />
## Import GitHub repo to GitLab repo
Go to [https://gitlab.com/projects/new](https://gitlab.com/projects/new) and select "`Import project`" / "`Repository by URL`" option:
Git repository url:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
Or
Your personal GitHub project that you created earlier in this lab.
Under Project URL - select your GitLab userid
Set Visibility to `Public`.
Click - "`Create Project`" to start the import process.
If you see an error about invalid GitHub Repository URL, [create a new GitHub token](https://github.com/settings/tokens)(fine-grained) with Public repositories read-only access, and retry import again providing your GitHub userid and token.
## Clone GitLab repo and setup SSH key
Return to Google Cloud Shell terminal and set up a new SSH key.
Update your email before running the commands. Hit enter multiple times to accept defaults.
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Add a public key to your GitLab account.
Open [https://gitlab.com/-/profile/keys](https://gitlab.com/-/profile/keys) and click "Add new key".
For the key value copy/paste the output of the last command.
Go back to the terminal and clone the repository.
cd ~ mkdir gitlab cd gitlab
Replace with your GitLab userid and repository url that was just created.
```console
git clone git@gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git
Cambia el directorio y abre el archivo .gitlab-ci.yml.
cd genai-for-developers
cloudshell edit .gitlab-ci.yml
Si no lo hiciste antes, habilita Gemini en el editor de Cloud Shell.

Haz clic con el botón derecho en cualquier parte del archivo .gitlab-ci.yml y selecciona "Gemini Code Assist > Explain this".

18. Configuración de comandos de GitLab
Abre GitLab y crea un token de acceso al proyecto en "Settings / Access Tokens" en el repositorio de GitLab que se creó en los pasos anteriores.
Copia y almacena el valor del token de acceso para usarlo en los siguientes pasos.
Usa los siguientes detalles:
- Nombre del token:
devai-cli-qwiklabs - Rol:
Maintainer - Alcance:
api

Configura las variables de entorno necesarias para la integración de GitLab.
Este comando requiere que actualices tu token de acceso de GitLab.
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-access-token
Este comando requiere que actualices tu ID de usuario y el nombre del repositorio de GitLab.
export GITLAB_REPOSITORY="USERID/REPOSITORY"
Configura el resto de las variables de entorno:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
Abre el sitio web de GitLab y crea un problema nuevo de GitLab en tu proyecto con el título "CICD AI Insights".

Otra opción es usar el siguiente comando curl. Necesitarás un ID de proyecto de GitLab, que puedes buscar en la sección "Settings / General".
export GITLAB_PROJECT_ID=56390153 # replace
curl --request POST \
--header "PRIVATE-TOKEN: $GITLAB_PERSONAL_ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{"title":"CICD AI Insights"}' \
https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/issues
Vuelve a Cloud Shell y abre el archivo review.py:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py
Busca y quita el comentario del siguiente código
Línea para importar el comando de GitLab
# from devai.commands.gitlab import create_gitlab_issue_comment
Método para comentar un problema de GitLab
# create_gitlab_issue_comment(response.text)
19. Desarrollo de la CLI de DevAI
Ya que cambiaste al directorio o repositorio de GitLab. Deberás volver a ejecutar los pasos de configuración que se indican a continuación.
En la terminal, configura tu entorno virtual de Python, instala los requisitos y ejecuta el comando de ejemplo.
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
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
Puedes confirmar la ubicación de la CLI. Esta vez, debería estar ubicada en la carpeta de GitLab.
which devai
Vuelve a ejecutar el comando de revisión de código en la terminal:
devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
Resultado de muestra (con algunas secciones abreviadas):
(venv) student_00_19a997c157f8@cloudshell:~/genai-for-developers/devai-cli (qwiklabs-gcp-02-71a9948ae110)$ devai review code -c ../sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
.
.
Response from Model: **Class: Transaction**
**Method: toString**
**Maintainability:**
* The formatting of the string representation could be more clear and concise. Consider using a dedicated method for formatting the amount, e.g., `formatAmount()`.
.
.
> Entering new AgentExecutor chain...
Thought: I need to first get the issue ID using the Get Issues tool, then I can comment on the issue using the Comment on Issue tool.
Action: Get Issues
Action Input:
Observation: Found 1 issues:
[{'title': 'CICD AI Insights', 'number': 1}]
Thought:Thought: I found the issue ID, so now I can add the comment to the issue.
Action: Comment on Issue
Action Input: 1
Action: Get Issue
Action Input: 1
Observation: {"title": "CICD AI Insights", "body": "", "comments": "[{'body': '**Transaction.java**\\n\\n\\n**Class:** Transaction\\n\\n\\n* **Security:** Consider using a custom date format like \\\\\"yyyy-MM-dd HH:mm:ss.SSS\\\\\" to handle timestamps more robustly.\\n\\n\\n**JWTVerifierGenerator.java**\\n\\n\\n* .
.
Thought:Now I can use the Comment on Issue tool to add the comment to the issue.
Action: Comment on Issue
Action Input:
1
**Class: Transaction**
**Method: toString**
**Maintainability:**
.
.
.
Observation: Commented on issue 1
Thought:I have now completed the necessary actions and added the comment to the issue 'CICD AI Insights'.
Final Answer: Comment added to issue 'CICD AI Insights'
> Finished chain.
Abre el sitio web de GitLab y revisa el problema actualizado.

Revisa el registro del LLM en LangSmith.
Es un ejemplo de registro del LLM.

20. Envía cambios al repositorio de GitLab
Vuelve al editor de Google Cloud Shell.
Cambia a la pestaña “Source Control”.
Agrega los cambios que realizaste a una etapa previa, confírmalos y envíalos para actualizar el archivo review.py.

21. Configuració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 sitio web de GitLab 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. Ejemplo:

Con tus notas, en las que guardas todas las variables de entorno, agrega variables de entorno para JIRA, GitLab y LangSmith.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
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.
cat ~/vertex-client-key.json
Vista de Variables de CI/CD:

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

23. 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.

Abre el sitio web de GitLab y revisa los comentarios actualizados sobre el problema "CICD Insights".
Inhabilita la ejecución del flujo de trabajo de GitLab
Vuelve al editor de Google Cloud Shell. Quita el comentario de las líneas para inhabilitar la ejecución del flujo de trabajo de GitLab en los eventos de envío de código. Aún puedes ejecutar el flujo de trabajo desde la IU a pedido.
# workflow: # rules: # - if: $CI_PIPELINE_SOURCE == "web"
Abre .gitlab-ci.yml en la raíz del proyecto y quita el comentario de las siguientes líneas:
cloudshell edit ~/gitlab/genai-for-developers/.gitlab-ci.yml
Cambia a la pestaña “Source Control”: Confirma y envía este cambio.

24. Integración de CircleCI
¿Qué es CircleCI?
CircleCI es una plataforma de CI/CD basada en la nube que permite a los equipos automatizar sus procesos de desarrollo e implementación de software. Se integra con sistemas de control de versiones como GitHub, Bitbucket y GitLab, lo que permite a los equipos validar los cambios de código en tiempo real ejecutando pruebas y compilaciones automatizadas. Para la entrega continua, CircleCI puede automatizar la implementación de software en varios entornos de nube, como AWS, Google Cloud y Azure.
Configuración
Abre el sitio web de CircleCI y crea un proyecto nuevo. Selecciona "GitLab" o "Cloud" para tu repositorio.
Otorga acceso a CircleCI a tu cuenta de GitLab.
En la opción Más rápido, selecciona la rama main. Es posible que CircleCI detecte un archivo de configuración existente y omita este paso.

Después de crear el proyecto, haz clic en la sección “Project Settings”/“Environment Variables”.

Agrega todas las variables de entorno que usaste hasta ahora.

A continuación, se muestra una lista de ejemplo de las variables de entorno que se pueden agregar.
PROJECT_ID=qwiklabs-project-id LOCATION=us-central1 GOOGLE_CLOUD_CREDENTIALS - cat ~/vertex-client-key.json LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" LANGCHAIN_API_KEY=your-service-api-key JIRA_API_TOKEN=your-token JIRA_USERNAME="email that you used to register with JIRA" JIRA_INSTANCE_URL="https://YOUR-PROJECT.atlassian.net" JIRA_PROJECT_KEY="JIRA project key" JIRA_CLOUD=true GITLAB_PERSONAL_ACCESS_TOKEN=your-gitlab-token GITLAB_URL="https://gitlab.com" GITLAB_REPOSITORY="USERID/REPOSITORY" GITLAB_BRANCH="devai" GITLAB_BASE_BRANCH="main"
25. Habilita los métodos de JIRA y GitLab
Abre el editor de Google Cloud Shell y realiza un cambio en el archivo review.py.
Busca las líneas que se indican a continuación y quítales los marcadores de comentario.
# from devai.commands.jira import create_jira_issue
create_jira_issue("Performance Review Results", response.text)
create_gitlab_issue_comment(response.text)
.
.
.
create_jira_issue("Security Review Results", response.text)
create_gitlab_issue_comment(response.text)
Cambia a la pestaña “Source Control”: Confirma y envía este cambio.
Abre el sitio web de GitLab y ve a "Build" o "Pipelines".

Sigue el vínculo a CircleCI para revisar el flujo de trabajo.

Revisa los comentarios sobre el problema de GitLab en tu repositorio.


Revisa los problemas nuevos que se crearon en tu proyecto de JIRA.

26. ¡Felicitaciones!
¡Felicitaciones! Completaste el lab.
Temas abordados:
- Se agregaron pasos de automatización de la revisión de código con IA generativa en GitHub, GitLab y CircleCI.
- Agentes de LangChain ReAct para automatizar tareas como comentar problemas de GitLab y abrir tickets de JIRA
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.