Implementación de historias de usuario de JIRA con IA generativa

Implementación de historias de usuario de JIRA con IA generativa

Acerca de este codelab

subjectÚltima actualización: mar 24, 2025
account_circleEscrito por Andrey Shakirov

1. Descripción general

En este lab, crearás una solución para automatizar la implementación de historias de usuario de JIRA con la IA generativa.

a4ba5d8788dc40.png

El lab tiene varias partes principales:

  • Implementa la aplicación de Cloud Run para integrarla con las APIs de Gemini
  • Crea e implementa la app de Atlassian Forge para JIRA
  • Usa agentes de LangChain ReAct para la automatización de tareas de GitLab
  • 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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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.

bc3c899ac8bcf488.png

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

e1e9ad314691368a.png

Habilita la API de Gemini para Google Cloud:

990a0ceea7d05531.png

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

ed120d672468b412.png

Instrucciones que puedes probar:

  • Explica Cloud Run en 5 puntos clave.
  • Eres el gerente de producto de Google Cloud Run y debes explicarle Cloud Run a un estudiante en 5 puntos clave breves.
  • Eres gerente de producto de Google Cloud Run y le explicas Cloud Run a un desarrollador certificado de Kubernetes en 5 puntos clave breves.
  • Eres gerente de producto de Google Cloud Run y debes explicarle a un desarrollador sénior cuándo usarías Cloud Run en lugar de GKE en 5 puntos clave breves.

Consulta la Guía de instrucciones para obtener más información sobre cómo escribir mejores instrucciones.

Cómo Gemini para 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 a Gemini para que lo analice o complete, se denominan instrucciones. Las respuestas o las terminaciones 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 al modelo subyacente en Gemini.

Datos de programas generados a partir de Gemini

Gemini se entrena con código propio de Google Cloud y código de terceros seleccionado. Eres responsable de la seguridad, las pruebas y la eficacia de tu código, incluidos 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 instrucciones

Tienes varias opciones para probar las instrucciones.

Vertex AI Studio es parte de la plataforma Vertex AI de Google Cloud, diseñada 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.

La app web de Google Gemini (gemini.google.com) es una herramienta basada en la Web diseñada para ayudarte a explorar y aprovechar el poder de los modelos de IA de Gemini de Google.

4. Revisa la solicitud

Crear una cuenta de servicio.

Regresa a la consola de Google Cloud y activa Cloud Shell haciendo clic en el ícono que se encuentra a la derecha de la barra de búsqueda.

3e0c761ca41f315e.png

En la terminal abierta, 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 la aplicación de Cloud Run.

Configura los detalles del proyecto con los detalles de tu proyecto de Qwiklabs.

Ejemplo: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Crea una cuenta de servicio.

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

gcloud iam service
-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --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"

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

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"

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

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

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

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

Si se te solicita autorización, haz clic en "Autorizar" para continuar.

6356559df3eccdda.png

Habilita los servicios necesarios para usar las APIs de Vertex AI y el chat de Gemini.

gcloud services enable \
    generativelanguage
.googleapis.com \
    aiplatform
.googleapis.com \
    cloudaicompanion
.googleapis.com \
    run
.googleapis.com \
    cloudresourcemanager
.googleapis.com
 

Habilita los servicios necesarios para usar las APIs de Vertex AI y el chat de Gemini.

gcloud services enable \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    runapps.googleapis.com \
    workstations.googleapis.com \
    servicemanagement.googleapis.com \
    secretmanager.googleapis.com \
    containerscanning.googleapis.com

Clona el repositorio de GitHub

Clona el repositorio de GitHub.

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

Abrir el editor de Cloud Shell

7e71f46b6c7b67ca.png

En el elemento de menú “File / Open Folder”, abre “genai-for-developers”.

Abre el archivo "devai-api/app/routes.py" y, luego, haz clic con el botón derecho en cualquier parte del archivo y selecciona "Gemini > Explain this" en el menú contextual.

34054e1fad005ff8.png

Revisa la explicación de Gemini para el archivo seleccionado.

f73af988a723142.png

5. Configuración del repositorio y el kit de herramientas de GitLab

En este lab, usarás GitLabToolkit para automatizar la creación de solicitudes de combinación de GitLab.

Descripción general de los kits de herramientas de LangChain

Los kits de herramientas de LangChain son conjuntos de herramientas diseñados para optimizar y mejorar el desarrollo de aplicaciones con LangChain. Ofrecen varias funcionalidades según el kit de herramientas específico, pero, en general, ayudan con lo siguiente:

  • Conectarse a fuentes de datos externas: Accede a información de APIs, bases de datos y otras fuentes externas, y, luego, incorpórala a tus aplicaciones de LangChain.
  • Técnicas avanzadas de instrucciones: Utiliza instrucciones prediseñadas o crea instrucciones personalizadas para optimizar las interacciones con los modelos de lenguaje.
  • Creación y administración de cadenas: Crea cadenas complejas con facilidad y adminístralas de forma eficiente.
  • Evaluación y supervisión: Analiza el rendimiento de tus cadenas y aplicaciones de LangChain.

Estos son algunos kits de herramientas de LangChain populares:

  • Kits de herramientas de ejecutores de agentes: Son herramientas para desarrollar agentes que pueden interactuar con el mundo real a través de acciones como la navegación web o la ejecución de código.
  • Kit de herramientas de ingeniería de instrucciones: Es una colección de recursos para crear instrucciones eficaces.

Descripción general del kit de herramientas de GitLab

El kit de herramientas de Gitlab contiene herramientas que permiten que un agente de LLM interactúe con un repositorio de Gitlab. La herramienta es un wrapper para la biblioteca python-gitlab.

El kit de herramientas de GitLab puede realizar las siguientes tareas:

  • Create File: Crea un archivo nuevo en el repositorio.
  • Read File: Lee un archivo del repositorio.
  • Actualizar archivo: Actualiza un archivo en el repositorio.
  • Create Pull Request: Crea una solicitud de extracción de la rama de trabajo del bot a la rama base.
  • Get Issue: Recupera problemas del repositorio.
  • Get Issue: Recupera detalles sobre un problema específico.
  • Comentario sobre el problema: Publica un comentario sobre un problema específico.
  • Borrar archivo: Borra un archivo del repositorio.

Configuración del proyecto de GitLab

Abre GitLab, crea un proyecto nuevo y configura el token de acceso del proyecto en "Settings / Access Tokens".

Usa los siguientes detalles:

  • Nombre del token: devai-api-qwiklabs
  • Rol: Maintainer
  • Selecciona los permisos: api

c205fd7524c456dc.png

Copia y pega el valor del token de acceso en un archivo temporal de tu laptop. Lo usarás en los próximos pasos.

6. Prepárate para implementar la aplicación en Cloud Run

Regresa al Editor de Cloud Shell y usa una terminal existente o abre una nueva.

941f0c1692037664.png

Configura los detalles del proyecto con los detalles de tu proyecto de Qwiklabs.

Ejemplo: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR-QWIKLABS-PROJECT-ID

Configura el resto de las variables de entorno:

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api

Configura las variables de entorno necesarias para la integración de GitLab.

export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token

Para evitar exponer información sensible en la terminal, se recomienda usar read -s GITLAB_PERSONAL_ACCESS_TOKEN, ya 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. También deberás exportar la variable de entorno: export GITLAB_PERSONAL_ACCESS_TOKEN

Este comando requiere que actualices el ID de usuario y el nombre del repositorio de GitLab.

Ejemplo: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

119489def27115c8.png

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"

Configuración de registro de LLM de LangSmith

Configura la cuenta si deseas ver la información de seguimiento del agente en LangSmith. De lo contrario, ejecuta los comandos tal como están.

Crea una cuenta de LangSmith y genera una clave de API de servicio en la sección Configuración. https://smith.langchain.com/settings

Configura las variables de entorno necesarias para la integración de LangSmith.

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"

export LANGCHAIN_API_KEY=langchain-service-api-key

Configuración de JIRA

Estos valores no se usan en este lab, por lo que no es necesario que los actualices a los valores específicos de tu proyecto de JIRA antes de ejecutar los comandos.

Establece las variables de entorno necesarias para la implementación del servicio de Cloud Run.

export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true

Crear clave de API

Crea una clave de API nueva en la sección Cloud Console / API y servicios / Credenciales.

Esta clave se usará para autenticar las llamadas a la API de JIRA a la aplicación de Cloud Run.

Para el entorno de producción, debes configurar restricciones de aplicación y de API para la clave de API creada. Las restricciones de aplicaciones limitan el uso de una clave de API a sitios web específicos(p.ej., tu instancia de JIRA).

Establece las variables de entorno necesarias para la implementación del servicio de Cloud Run.

export DEVAI_API_KEY=your-api-key

Crea secretos en Secret Manager

En este lab, seguimos las prácticas recomendadas y usamos Secret Manager para almacenar y hacer referencia a los valores de los tokens de acceso, la clave de API y la clave de API de LangChain en Cloud Run.

Crea y almacena los secretos necesarios en Secret Manager.

echo -n $DEVAI_API_KEY | \
 gcloud secrets create DEVAI_API_KEY
\
 
--data-file=-

echo
-n $JIRA_API_TOKEN | \
 gcloud secrets create JIRA_API_TOKEN
\
 
--data-file=-

echo
-n $GITLAB_PERSONAL_ACCESS_TOKEN | \
 gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN
\
 
--data-file=-

echo
-n $LANGCHAIN_API_KEY | \
 gcloud secrets create LANGCHAIN_API_KEY
\
 
--data-file=-

7. Implementa Devai-API en Cloud Run

Verifica que estés en la carpeta correcta.

cd ~/genai-for-developers/devai-api

Implementa la aplicación en Cloud Run.

gcloud run deploy "$SERVICE_NAME" \
  --source=. \
  --region="$LOCATION" \
  --allow-unauthenticated \
  --service-account vertex-client \
  --set-env-vars PROJECT_ID="$PROJECT_ID" \
  --set-env-vars LOCATION="$LOCATION" \
  --set-env-vars GITLAB_URL="$GITLAB_URL" \
  --set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
  --set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
  --set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
  --set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
  --set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
  --set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
  --set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
  --set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
  --update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
  --update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
  --update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
  --update-secrets="DEVAI_API_KEY=DEVAI_API_KEY:latest" \
  --min-instances=1 \
  --max-instances=3

Responde Y para crear el repositorio de Docker de Artifact Registry.

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in 
region [us-central1] will be created.

Do you want to continue (Y/n)?  y

Revisa el flujo de gcloud run deploy SERVICE_NAME --source=. a continuación. Obtén más información.

5c122a89dd11822e.png

En segundo plano, este comando usa buildpacks y Cloud Build de Google Cloud para compilar automáticamente imágenes de contenedor a partir del código fuente sin tener que instalar Docker en tu máquina ni configurar los paquetes de compilación o Cloud Build. Es decir, el comando único descrito anteriormente hace lo que requeriría el uso de los comandos gcloud builds submit y gcloud run deploy.

Si proporcionaste un Dockerfile(como lo hicimos en este repositorio), Cloud Build lo usará para compilar imágenes de contenedor en lugar de depender de los paquetes de compilación para detectar y compilar imágenes de contenedor automáticamente. Para obtener más información sobre los paquetes de compilación, consulta la documentación.

Revisa los registros de Cloud Build en Console.

Revisa la imagen de Docker creada en Artifact Registry.

Revisa los detalles de la instancia de Cloud Run en la consola de Cloud.

Aplicación de prueba

Ejecuta el comando curl para probar el extremo.

Actualiza la URL del servicio de Cloud Run antes de ejecutar el comando.

Ejemplo:

curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test

8. Automatiza la implementación de historias

Forge es una plataforma que permite a los desarrolladores compilar apps que se integran con productos de Atlassian, como Jira, Confluence, Compass y Bitbucket.

eda6f59ff15df25e.png

Instala Forge CLI

Ejecuta el siguiente comando para instalar Forge CLI de forma global:

npm install -g @forge/cli

En este lab, usaremos variables de entorno para acceder.

e4e4e59cf8622e3f.png

Configura el proyecto de JIRA

Usa tu cuenta personal para crear o ver proyectos de JIRA.

Revisa tus proyectos de JIRA existentes: https://admin.atlassian.com/

Crea un proyecto de JIRA nuevo con tu cuenta personal.

Ve a https://team.atlassian.com/your-work, haz clic en 8654143154cb8665.png y, luego, selecciona 47b253090a08932.png. Luego, selecciona "JIRA Software" - "Probar ahora". Sigue las indicaciones para completar la creación del proyecto o sitio.

5bab2a96e3b81383.png

Selecciona JIRA Software.

785bc4d8bf920403.png

Crea un proyecto nuevo

8a6e7cdc8224ffa0.png

Crea un token de la API de Atlassian

Crea o usa un token de API de Atlassian existente para acceder a la CLI.

La CLI usa tu token cuando ejecutas comandos.

  1. Ve a https://id.atlassian.com/manage/api-tokens.
  2. Haz clic en Crear token de API.
  3. Ingresa una etiqueta para describir tu token de API. Por ejemplo, forge-api-token.
  4. Haz clic en Crear.
  5. Haz clic en Copiar en el portapapeles y cierra el diálogo.

Configura la configuración del entorno de Forge

Regresa a la consola de Cloud y ejecuta los siguientes comandos en la terminal.

Accede a la CLI de Forge para comenzar a usar los comandos de Forge.

Establece tu dirección de correo electrónico de JIRA/FORGE. Reemplaza por tu dirección de correo electrónico.

export FORGE_EMAIL=your-email

Establece el token de API de Forge. Reemplaza el token de API de JIRA.

export FORGE_API_TOKEN=your-jira-api-token

Ejecuta el siguiente comando para probar forge cli. Responde "No" cuando se te solicite recopilar estadísticas.

forge settings set usage-analytics false

Verifica si accediste a tu cuenta.

forge whoami

Resultado de muestra.

Logged in as John Green (johngreen@email.com)
Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd

Crea una aplicación de Forge

Comprueba que estás en la carpeta "~/genai-for-developers".

Ejecuta el comando para crear una aplicación de Forge.

forge create

Usa los siguientes valores cuando se te solicite:

  • Nombre de la app: devai-jira-ui-qwiklabs
  • Selecciona una categoría: UI Kit
  • Selecciona un producto: Jira
  • Selecciona una plantilla: jira-issue-panel

bc94e2da059f15cf.png

Cambia a la carpeta de la aplicación.

cd devai-jira-ui-qwiklabs/

Ejecuta el comando para instalar las dependencias.

npm install

Ejecuta el comando de implementación.

forge deploy

Resultado de muestra:

Deploying your app to the development environment.
Press Ctrl+C to cancel.

Running forge lint...
No issues found.

✔ Deploying devai-jira-ui-qwiklabs to development...

ℹ Packaging app files
ℹ Uploading app
ℹ Validating manifest
ℹ Snapshotting functions
ℹ Deploying to environment

✔ Deployed

Deployed devai-jira-ui-qwiklabs to the development environment.

Instala la aplicación.

forge install

Usa los siguientes valores cuando se te solicite:

  • Selecciona un producto: Jira
  • Ingresa la URL del sitio: your-domain.atlassian.net

Resultado de muestra:

Select the product your app uses.

? Select a product: Jira

Enter your site. For example, your-domain.atlassian.net

? Enter the site URL: genai-for-developers.atlassian.net

Installing your app onto an Atlassian site.
Press Ctrl+C to cancel.

? Do you want to continue? Yes

✔ Install complete!

Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net

Abre tu sitio de JIRA y crea una tarea nueva con la siguiente descripción:

Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.

Cuando abras la tarea, verás el botón "devai-jira-ui-qwiklabs".

Haz clic en el botón y revisa los cambios en la IU.

a64378e775125654.png

Consulta los registros del backend de Forge.

forge logs

Consola para desarrolladores de Atlassian

También puedes ver y administrar las apps implementadas en la consola de Atlassian Developer.

10281496d8181597.png

Revisa los registros: cambia al entorno Development.

d5c3b1a18dee166e.png

Revisa el manifiesto y el código fuente de la aplicación de Forge

Abre el archivo "devai-jira-ui-qwiklabs/manifest.yml" y usa Gemini Code Assist para explicar la configuración.

8710dc7cd343a6a4.png

Revisa la explicación.

e4c9052a0337527d.png

Abre los siguientes archivos y pídele a Gemini Code Assist que los explique:

  • devai-jira-ui-qwiklabs/src/frontend/index.jsx
  • devai-jira-ui-qwiklabs/src/resolvers/index.js

3283420f190cda21.png

Actualiza la app de Forge con el extremo de Cloud Run de la API de DevAI

Verifica si se configuró el ID del proyecto de GCP:

gcloud config get project

De lo contrario, configura tu proyecto de GCP con el ID del proyecto de la página del lab de Qwiklabs:

Ejemplo: qwiklabs-gcp-00-2c10937585bb

gcloud config set project YOUR_QWIKLABS_PROJECT_ID

Establece la URL del servicio de Cloud Run:

export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")

forge variables set DEVAI_API_URL $DEVAI_API_URL

Establece la clave de API de DEVAI:

export DEVAI_API_KEY=api-key-that-you-created

forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY

Ejecuta el siguiente comando para confirmar:

forge variables list

Resultado de muestra

f63a751f0d6211ff.png

Actualiza el manifiesto y el código de la aplicación de Forge

Puedes encontrar estos fragmentos de código en el repositorio, en la carpeta sample-devai-jira-ui.

Abre el archivo de manifiesto en el editor: devai-jira-ui-qwiklabs/manifest.yml

Agrega las siguientes líneas al final del archivo. Reemplaza el extremo de Cloud Run por el que implementaste.

permissions:
  scopes:
    - read:jira-work
    - write:jira-work
  external:
    fetch:
      client:
        - devai-api-gjerpi6qqq-uc.a.run.app/create-gitlab-mr # replace with YOUR CLOUD RUN URL

Abre el archivo de resolución o índice en el editor: devai-jira-ui-qwiklabs/src/resolvers/index.js

Agrega las siguientes líneas después de la función getText existente.

resolver.define('getApiKey', (req) => {
 
return process.env.DEVAI_API_KEY;
});

resolver
.define('getDevAIApiUrl', (req) => {
 
return process.env.DEVAI_API_URL;
});

Abre el archivo de frontend/índice en el editor: devai-jira-ui-qwiklabs/src/frontend/index.jsx

Reemplaza index.jsx por el siguiente contenido. Actualiza el vínculo a tu ID de usuario o repositorio de GitLab.

Hay dos lugares en los que debes actualizar TU-ID-DE-USUARIO-DE-GIT y TU-REPOSITORIO-DE-GIT.

Busca esta línea en el archivo y realiza los cambios:

https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests

import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';

const devAIApiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")


const App = () => {
 
const context = useProductContext();

 
const [description, setDescription] = React.useState();

 
const fetchDescriptionForIssue = async () => {
   
const issueId = context?.extension.issue.id;
 
   
const res = await requestJira(`/rest/api/2/issue/${issueId}`);
   
const data = await res.json();
   
   
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;

   
const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
     
{
       
body: bodyGenerateData,
       
method: 'post',
       
headers: {
         
'Content-Type': 'application/json',
         
'x-devai-api-key': devAIApiKey,
         
},
     
}
   
)

   
const resData = await generateRes.text();

   
// Add link to the GitLab merge request page as a comment
   
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
     
method: 'POST',
     
headers: {
       
'Accept': 'application/json',
       
'Content-Type': 'application/json'
     
},
     
body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
   
});


   
return "Response will be added as a comment. Please refresh in a few moments.";
 
};

 
React.useEffect(() => {
   
if (context) {
     
fetchDescriptionForIssue().then(setDescription);
   
}
 
}, [context]);

 
return (
    <>
      <
Text>{description}</Text>
      <
Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
   
</>
 
);
};

ForgeReconciler.render(
  <
React.StrictMode>
    <
App />
 
</React.StrictMode>
);

Vuelve a implementar la aplicación de Forge

Agrega dependencias en el archivo package.json:

"@forge/api": "4.0.0",

Ejecuta el comando para instalar las dependencias:

npm install

Implementa la aplicación actualizada:

forge deploy

Resultado de muestra:

ℹ Uploading app
ℹ Validating manifest
ℹ Snapshotting functions
ℹ Deploying to environment

✔ Deployed

Deployed devai-jira-ui-qwiklabs to the development environment.

We've detected new scopes or egress URLs in your app.
Run forge install --upgrade and restart your tunnel to put them into effect.

Instala la aplicación actualizada:

forge install --upgrade

ef17c7da9b2962d8.png

Resultado de muestra:

Upgrading your app on the Atlassian site.

Your app will be upgraded with the following additional scopes:
- read:jira-work
- write:jira-work

Your app will exchange data with the following urls:
- devai-api-7su2ctuqpq-uc.a.run.app

? Do you want to continue? Yes

✔ Upgrade complete!

Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.

Prueba la aplicación de Forge

Abre una tarea de JIRA existente o crea una nueva en tu proyecto de JIRA.

Si ya se agregó, deberás quitar el panel anterior.

Haz clic en "..." y selecciona quitar en el menú. Después, puedes volver a hacer clic en el botón.

460503e8b2014b52.png

Revisa los comentarios de Jira

Una vez que recibas una respuesta de la API de DEVAI, se agregará un comentario al problema de JIRA.

  • Vínculo de solicitud de combinación de GitLab

Alterna entre las pestañas "History" y "Comments" para actualizar la vista.

9539d2bd3cbdad28.png

Verifica la solicitud de combinación de GitLab

Abre GitLab y busca solicitudes de combinación nuevas en tu proyecto.

4c2345a89bfe71ee.png

fa3a552923cd70f1.png

Registros de LLM de LangSmith

Si configuraste el seguimiento de LLM, abre el portal de LangSmith y revisa el seguimiento de LLM para la llamada de creación de solicitudes de combinación de GitLab.

Ejemplo de seguimiento de LLM de LangSmith.

1ae0f88ab885f69.png

9. Envía tus cambios al repositorio de GitHub

(OPTIONAL SECTION)

Ve al sitio web de GitHub y crea un repositorio nuevo para enviar los cambios de este lab a tu repositorio personal.

Regresa a la consola de Cloud y 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"

Genera una clave SSH y agrégala al repositorio de GitHub.

Actualiza tu correo electrónico antes de ejecutar los comandos.

No ingreses la frase de contraseña ni presiones Intro varias veces para completar la generación de claves.

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"

ssh
-add ~/.ssh/id_ed25519

cat
~/.ssh/id_ed25519.pub

Agrega la clave pública generada a tu cuenta de GitHub.

Abre https://github.com/settings/keys y haz clic en "New SSH key".

Para el nombre de la clave, usa "qwiklabs-key" y copia y pega el resultado del último comando.

Regresa a la terminal, confirma y envía los cambios.

cd ~/genai-for-developers

git remote rm origin

Establece el origen remoto con el repositorio que se creó anteriormente.

Reemplaza la URL del repositorio.

git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git

Agrega, confirma y envía los cambios.

git add .

git commit
-m "lab changes"

git push
-u origin main

10. ¡Felicitaciones!

¡Felicitaciones! Completaste el lab.

Temas abordados:

  • Cómo implementar aplicaciones de Cloud Run para integrarlas con las APIs de Gemini
  • Cómo crear e implementar la app de Atlassian Forge para JIRA
  • Cómo usar agentes de ReAct de LangChain para la automatización de tareas de GitLab
  • Cómo revisar los seguimientos de LLM en LangSmith

¿Qué sigue?

  • ¡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.