Conecta GitHub a Google Cloud con Developer Connect

1. Introducción

En este codelab, crearás una conexión segura a un repositorio de GitHub con Developer Connect y la usarás para implementar directamente un agente con Agent Runtime en la plataforma de agentes de Gemini Enterprise.

Developer Connect establece la conectividad guiándote a través de los permisos, la autorización, la autenticación y las configuraciones de redes para herramientas de desarrolladores que no son de Google. Esto proporciona una forma directa y nativa de extraer el código de tu aplicación a los servicios de Google Cloud.

Para este codelab, usaremos una conexión de repositorio de Git de Developer Connect para implementar directamente un agente con Agent Runtime en la plataforma de agentes de Gemini Enterprise. Developer Connect admite GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, Gitlab y GitLab Enterprise. En este codelab, analizaremos una conexión a GitHub.

Actividades

  • Crea un agente básico en Agent Runtime y envíalo a GitHub.
  • Usa Developer Connect para vincular tu repositorio de GitHub a Google Cloud.
  • Implementa el agente en Agent Runtime con tu repositorio conectado de forma nativa.
  • Invoca y prueba tu agente remoto implementado.

Requisitos

  • Un navegador web, como Chrome
  • Un proyecto de Google Cloud con la facturación habilitada.
  • Una cuenta de GitHub y un token de acceso personal (clásico) con acceso al repositorio

Este codelab está dirigido a desarrolladores de todos los niveles, incluidos principiantes. Los recursos administrados en este codelab son principalmente APIs sin servidores y deberían costar menos de USD 1.

2. Antes de comenzar

Cómo crear un proyecto de Google Cloud

  1. En la consola de Google Cloud, en la página del selector de proyectos, selecciona o crea un proyecto de Google Cloud.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

Inicie Cloud Shell

  1. Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
  2. Una vez que te conectes a Cloud Shell, verifica tu autenticación:
    gcloud auth list
    
  3. Confirma que tu proyecto esté configurado:
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Si tu proyecto no está configurado como se espera, configúralo:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Habilita las APIs

Ejecuta este comando para habilitar todas las APIs requeridas para Developer Connect y Vertex AI:

gcloud services enable \
  developerconnect.googleapis.com \
  aiplatform.googleapis.com

3. Prepara el código fuente del agente

Primero, crearás un nuevo repositorio de GitHub para contener el código fuente de tu agente y le agregarás un agente de razonamiento simple de Python.

  1. Accede a tu cuenta de GitHub.
  2. Crea un repositorio nuevo y privado llamado devconnect-agent.
  3. No lo inicialices con un archivo README ni .gitignore.

Crea los archivos del agente de forma local

De vuelta en la terminal de Cloud Shell, crea un directorio para tu agente y define sus dependencias:

mkdir -p devconnect-agent/test
cd devconnect-agent

Crea un archivo requirements.txt en el directorio test que especifique las bibliotecas de Agent Runtime:

cat <<EOF > test/requirements.txt
google-cloud-aiplatform[agent_engines]
EOF

Crea un archivo my_agent.py en el directorio test. Esta secuencia de comandos define un agente simple que responde a las consultas de lista:

cat <<EOF > test/my_agent.py
class MyAgent:

  def query_none(self):
    return None

  def query_list(self):
    return [1, 2, 3]

  def register_operations(self):
    return {
        "": ["query_none", "query_list"],
    }

agent = MyAgent()
EOF

Envía el código a GitHub

Inicializa un repositorio de Git y envía tu código al repositorio de GitHub que acabas de crear.

Reemplaza `<YOUR_GITHUB_USERNAME>` por tu nombre de usuario de GitHub y `<YOUR_GITHUB_TOKEN>` por tu token de acceso personal.

git init
git branch -M main
git add .
git commit -m "Initial commit of agent source"
git remote add origin https://<YOUR_GITHUB_TOKEN>@github.com/<YOUR_GITHUB_USERNAME>/devconnect-agent.git
git push -u origin main

4. Configura Developer Connect

Ahora que tu repositorio está en GitHub, Developer Connect lo vinculará de forma segura a tu proyecto de Google Cloud.

Configura los permisos de IAM

Para autorizar a Developer Connect a acceder a tu proyecto de Google Cloud, genera una identidad de servicio.

gcloud beta services identity create \
    --service=developerconnect.googleapis.com \
    --project=$PROJECT_ID

Puedes crear la conexión y el vínculo con la consola de Google Cloud o la CLI de gcloud.

Opción 1: Usa la consola de Google Cloud

  1. En la consola de Google Cloud, navega a Developer Connect.
  2. Haz clic en Conectar en GitHub.
  3. Asigna un nombre a la conexión my-github-connection y selecciónala en us-central1.
  4. Sigue las indicaciones para autorizar la app de GitHub de Developer Connect.
  5. Selecciona el repositorio devconnect-agent para vincularlo a tu proyecto.

Opción 2: Usa la CLI de gcloud

Ejecuta los siguientes comandos en Cloud Shell para vincular tu repositorio de GitHub.

Primero, deberás otorgar acceso a la cuenta de servicio de Developer Connect a Secret Manager.

# Get the service account
SERVICE_ACCOUNT=$(gcloud beta services identity create \
    --service=developerconnect.googleapis.com \
    --project=$PROJECT_ID \
    --format="value(email)")

# Grant access to Secret Manager
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role="roles/secretmanager.admin"
# 1. Create the general Developer Connect connection to GitHub
gcloud developer-connect connections create my-github-connection \
    --location=us-central1 \
    --github-config-app=developer-connect
# 2. Link your specific agent repository to the connection
# Replace <YOUR_GITHUB_USERNAME> with your actual GitHub username
gcloud developer-connect connections git-repository-links create devconnect-agent \
    --connection=my-github-connection \
    --location=us-central1 \
    --clone-uri=https://github.com/<YOUR_GITHUB_USERNAME>/devconnect-agent.git

5. Implementa el agente desde Developer Connect

Con tu repositorio conectado de forma segura, puedes implementar directamente un agente de Agent Runtime aprovechando el vínculo de Developer Connect de forma nativa.

Implementa Agent Runtime

Crea y ejecuta una secuencia de comandos de Python de forma local en Cloud Shell para implementar tu agente con el SDK de Vertex AI.

cd ~
cat <<EOF > deploy.py
import vertexai

PROJECT_ID = "$PROJECT_ID"
LOCATION = "us-central1"

vertexai.init(project=PROJECT_ID, location=LOCATION)
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Define the full URI string for the Developer Connect repository link
repo_link = f"projects/{PROJECT_ID}/locations/{LOCATION}/connections/my-github-connection/gitRepositoryLinks/devconnect-agent"

print("Deploying to Agent Runtime from Developer Connect...")

remote_agent = client.agent_engines.create(
    config={
        "developer_connect_source": {
            "git_repository_link": repo_link,
            "revision": "main",
            "dir": "test",
        },
        "entrypoint_module": "my_agent",
        "entrypoint_object": "agent",
        "requirements_file": "requirements.txt",
        "class_methods": [
            {"name": "query_list", "api_mode": ""}
        ],
        "display_name": "DevConnect Agent",
    },
)

print(f"Agent Runtime deployed successfully: {remote_agent.api_resource.name}")
EOF

Configura las credenciales predeterminadas de la aplicación en gcloud.

gcloud auth application-default login

Ejecuta la secuencia de comandos de implementación. Ten en cuenta que esta arquitectura permite que Vertex AI omita por completo los alcances de ejecución locales y compile la imagen del agente remoto desde la fuente.

python3 deploy.py

Prueba el agente

Una vez que finalice la implementación, ejecuta una secuencia de comandos para consultar el extremo de tu agente.

cat <<EOF > invoke.py
import vertexai

PROJECT_ID = "$PROJECT_ID"
LOCATION = "us-central1"

client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Retrieve the latest reasoning engine
engines = list(client.agent_engines.list())
if engines:
    agent = client.agent_engines.get(name=engines[0].api_resource.name)
    print("Invoking remote agent via endpoint...")
    # NOTE: Invoking remote agent
    response = agent.query_list()
    print(f"Agent response: {response}")
else:
    print("No deployment found.")
EOF

python3 invoke.py

Deberías ver un resultado similar a este:

Invoking remote agent via endpoint...
Agent response: [1, 2, 3]

6. Limpia

Para evitar cargos continuos en tu cuenta de Google Cloud, borra los recursos creados durante este codelab.

Libera espacio en los recursos de Developer Connect y Agent Runtime:

cat <<EOF > cleanup.py
import vertexai

PROJECT_ID = "$PROJECT_ID"
LOCATION = "us-central1"

client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

for engine in client.agent_engines.list():
    print(f"Deleting {engine.api_resource.name}")
    engine.delete()
EOF

python3 cleanup.py

Limpia los recursos de Developer Connect:

gcloud developer-connect connections git-repository-links delete devconnect-agent \
    --connection=my-github-connection \
    --location=us-central1 \
    --quiet

gcloud developer-connect connections delete my-github-connection \
    --location=us-central1 \
    --quiet

7. Felicitaciones

¡Felicitaciones! Estableciste de forma segura una integración de repositorio de GitHub con Developer Connect y, de forma nativa, implementaste un agente de IA directamente desde tu árbol de origen.

Qué aprendiste

  • Configuraste un proyecto de Google Cloud con Developer Connect y Vertex AI.
  • Almacenaste de forma segura un token de acceso personal en Secret Manager.
  • Generaste conexiones de Developer Connect de forma explícita a través de la gcloud CLI.
  • Creaste una instancia de Agent Runtime de Vertex AI de forma programática con la asignación de objetos developer_connect_source.

Próximos pasos

  • Explora más con Gemini Code Assist personalizado con la integración de tu base de código de Developer Connect.
  • Experimenta con la creación de agentes robustos de Agent Runtime.

Documentos de referencia