Connecter GitHub à Google Cloud avec Developer Connect

1. Introduction

Dans cet atelier de programmation, vous allez créer une connexion sécurisée à un dépôt GitHub à l'aide de Developer Connect, puis utiliser cette connexion pour déployer directement un agent à l'aide d'Agent Runtime sur la plate-forme Gemini Enterprise Agent.

Developer Connect établit la connectivité en vous guidant à travers les configurations d'autorisations, d'autorisation, d'authentification et de mise en réseau pour les outils de développement non Google. Cela permet d'extraire le code de votre application dans les services Google Cloud de manière directe et native.

Pour cet atelier de programmation, nous allons utiliser une connexion à un dépôt Git Developer Connect pour déployer directement un agent à l'aide d'Agent Runtime sur la plate-forme Gemini Enterprise Agent. Developer Connect est compatible avec GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, GitLab et GitLab Enterprise. Dans cet atelier de programmation, nous allons vous guider pour vous connecter à GitHub.

Objectifs de l'atelier

  • Créer un agent de base sur Agent Runtime et le transférer vers GitHub
  • Utilisez Developer Connect pour associer votre dépôt GitHub à Google Cloud.
  • Déployer l'agent sur Agent Runtime à l'aide de votre dépôt connecté de manière native
  • Appeler et tester votre agent distant déployé

Prérequis

  • Un navigateur Web (par exemple, Chrome)
  • Un projet Google Cloud avec facturation activée
  • Un compte GitHub et un jeton d'accès personnel (classique) avec accès au dépôt

Cet atelier de programmation s'adresse aux développeurs de tous niveaux, y compris aux débutants. Les ressources gérées dans cet atelier de programmation sont principalement des API sans serveur et devraient coûter moins de 1 $.

2. Avant de commencer

Créer un projet Google Cloud

  1. Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

Démarrer Cloud Shell

  1. Cliquez sur Activer Cloud Shell en haut de la console Google Cloud.
  2. Une fois connecté à Cloud Shell, vérifiez votre authentification :
    gcloud auth list
    
  3. Vérifiez que votre projet est configuré :
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Si votre projet n'est pas défini comme prévu, définissez-le :
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Activer les API

Exécutez cette commande pour activer toutes les API requises pour Developer Connect et Vertex AI :

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

3. Préparer le code source de l'agent

Pour commencer, vous allez créer un dépôt GitHub pour héberger le code source de votre agent et y ajouter un agent de raisonnement Python simple.

  1. Connectez-vous à votre compte GitHub.
  2. Créez un dépôt privé appelé devconnect-agent.
  3. N'initialisez pas le dépôt avec un fichier README ni avec .gitignore.

Créer les fichiers de l'agent localement

De retour dans le terminal Cloud Shell, créez un répertoire pour votre agent et définissez ses dépendances :

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

Créez un fichier requirements.txt dans le répertoire test en spécifiant les bibliothèques Agent Runtime :

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

Créez un fichier my_agent.py dans le répertoire test. Ce script définit un agent simple qui répond aux requêtes de liste :

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

Transférer le code vers GitHub

Initialisez un dépôt Git et transférez votre code vers le dépôt GitHub que vous venez de créer.

Remplacez `<YOUR_GITHUB_USERNAME>` par votre nom d'utilisateur GitHub et `<YOUR_GITHUB_TOKEN>` par votre jeton d'accès personnel.

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. Configurer Developer Connect

Maintenant que votre dépôt est sur GitHub, Developer Connect va l'associer de manière sécurisée à votre projet Google Cloud.

Configurer les autorisations IAM

Autorisez Developer Connect à accéder à votre projet Google Cloud en générant une identité de service.

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

Vous pouvez créer la connexion et l'association à l'aide de la console Google Cloud ou de la CLI gcloud.

Option 1 : Utiliser la console Google Cloud

  1. Dans la console Google Cloud, accédez à Developer Connect.
  2. Cliquez sur Connecter sous GitHub.
  3. Nommez votre connexion my-github-connection, puis sélectionnez-la dans us-central1.
  4. Suivez les instructions pour autoriser l'application GitHub Developer Connect.
  5. Sélectionnez le dépôt devconnect-agent pour l'associer à votre projet.

Option 2 : Utiliser la CLI gcloud

Exécutez les commandes suivantes dans Cloud Shell pour associer votre dépôt GitHub.

Vous devez d'abord accorder au compte de service Developer Connect l'accès à 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. Déployer l'agent depuis Developer Connect

Une fois votre dépôt connecté de manière sécurisée, vous pouvez déployer directement un agent Agent Runtime en utilisant le lien Developer Connect de manière native.

Déployer Agent Runtime

Créez et exécutez un script Python localement dans Cloud Shell pour déployer votre agent à l'aide du SDK 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

Configurez les identifiants d'application par défaut dans gcloud.

gcloud auth application-default login

Exécutez le script de déploiement. Notez que cette architecture permet à Vertex AI de contourner complètement les portées d'exécution locales et de créer l'image de l'agent à distance à partir de la source.

python3 deploy.py

Tester l'agent

Une fois le déploiement terminé, exécutez un script pour interroger le point de terminaison de votre agent.

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

Un résultat semblable à celui-ci s'affiche :

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

6. Effectuer un nettoyage

Pour éviter que les ressources créées lors de cet atelier de programmation ne soient facturées en permanence sur votre compte Google Cloud, supprimez-les.

Nettoyez les ressources Developer Connect et 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

Nettoyez les ressources 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. Félicitations

Félicitations ! Vous avez établi une intégration sécurisée de dépôt GitHub à l'aide de Developer Connect et déployé de manière native un agent d'IA directement à partir de votre arborescence source.

Connaissances acquises

  • Vous avez configuré un projet Google Cloud avec Developer Connect et Vertex AI.
  • Jeton d'accès personnel stocké de manière sécurisée dans Secret Manager
  • Connexions Developer Connect générées explicitement via gcloud CLI
  • Vous avez créé une instance Vertex AI Agent Runtime de manière programmatique, à l'aide du mappage d'objet developer_connect_source.

Étapes suivantes

Documents de référence