GitHub mit Google Cloud über Developer Connect verbinden

1. Einführung

In diesem Codelab erstellen Sie mit Developer Connect eine sichere Verbindung zu einem GitHub-Repository und verwenden diese Verbindung, um einen Agenten direkt mit der Agent Runtime auf der Gemini Enterprise Agent Platform bereitzustellen.

Mit Developer Connect wird die Verbindung hergestellt, indem Sie durch Berechtigungen, Autorisierung, Authentifizierung und Netzwerkkonfigurationen für Entwicklertools von Drittanbietern geführt werden. So können Sie Ihren Anwendungscode direkt und nativ in Google Cloud-Dienste einbinden.

In diesem Codelab verwenden wir eine Developer Connect-Git-Repository-Verbindung, um einen Agenten direkt mit der Agent Runtime auf der Gemini Enterprise Agent Platform bereitzustellen. Developer Connect unterstützt GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, GitLab und GitLab Enterprise. In diesem Codelab wird eine Verbindung zu GitHub beschrieben.

Aufgaben

  • Basis-Agent in der Agent Runtime erstellen und auf GitHub hochladen
  • Developer Connect verwenden, um Ihr GitHub-Repository mit Google Cloud zu verknüpfen
  • KI-Agent in der Agent Runtime mit Ihrem verbundenen Repository bereitstellen
  • Bereitgestellten Remote-Agent aufrufen und testen

Voraussetzungen

  • Ein Webbrowser wie Chrome
  • Ein Google Cloud-Projekt mit aktivierter Abrechnung
  • Ein GitHub-Konto und ein persönliches Zugriffstoken (klassisch) mit Repository-Zugriff

Dieses Codelab richtet sich an Entwickler aller Erfahrungsstufen, auch an Anfänger. Die in diesem Codelab verwalteten Ressourcen sind größtenteils serverlose APIs und sollten weniger als 1 $kosten.

2. Hinweis

Google Cloud-Projekt erstellen

  1. Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

Cloud Shell starten

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren.
  2. Prüfen Sie nach der Verbindung mit Cloud Shell Ihre Authentifizierung:
    gcloud auth list
    
  3. Prüfen Sie, ob Ihr Projekt konfiguriert ist:
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Wenn Ihr Projekt nicht wie erwartet festgelegt ist, legen Sie es fest:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

APIs aktivieren

Führen Sie diesen Befehl aus, um alle erforderlichen APIs für Developer Connect und Vertex AI zu aktivieren:

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

3. Quellcode des Agents vorbereiten

Zuerst erstellen Sie ein neues GitHub-Repository für den Quellcode Ihres Agents und fügen ihm einen einfachen Python-Agent für die Entscheidungsfindung hinzu.

  1. Melden Sie sich in Ihrem GitHub-Konto an.
  2. Erstellen Sie ein neues privates Repository mit dem Namen devconnect-agent.
  3. Initialisieren Sie es nicht mit einer README-Datei oder .gitignore.

Agent-Dateien lokal erstellen

Erstellen Sie im Cloud Shell-Terminal ein Verzeichnis für Ihren Agent und definieren Sie seine Abhängigkeiten:

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

Erstellen Sie im Verzeichnis test eine requirements.txt-Datei, in der die Agent Runtime-Bibliotheken angegeben werden:

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

Erstellen Sie im Verzeichnis test eine Datei my_agent.py. In diesem Skript wird ein einfacher KI-Agent definiert, der Listenanfragen beantwortet:

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

Code auf GitHub übertragen

Initialisieren Sie ein Git-Repository und übertragen Sie Ihren Code per Push in das neu erstellte GitHub-Repository.

Ersetzen Sie `<YOUR_GITHUB_USERNAME>` durch Ihren GitHub-Nutzernamen und `<YOUR_GITHUB_TOKEN>` durch Ihr persönliches Zugriffstoken.

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

Nachdem sich Ihr Repository auf GitHub befindet, verknüpft Developer Connect Ihr Google Cloud-Projekt sicher damit.

IAM-Berechtigungen einrichten

Autorisieren Sie Developer Connect für den Zugriff auf Ihr Google Cloud-Projekt, indem Sie eine Dienstidentität generieren.

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

Sie können die Verbindung und den Link entweder über die Google Cloud Console oder über die gcloud CLI erstellen.

Option 1: Google Cloud Console verwenden

  1. Rufen Sie in der Google Cloud Console Developer Connect auf.
  2. Klicken Sie unter GitHub auf Verbinden.
  3. Geben Sie der Verbindung einen Namen my-github-connection und wählen Sie sie in us-central1 aus.
  4. Folgen Sie der Anleitung, um die Developer Connect-GitHub-App zu autorisieren.
  5. Wählen Sie das devconnect-agent-Repository aus, um es mit Ihrem Projekt zu verknüpfen.

Option 2: gcloud CLI verwenden

Führen Sie die folgenden Befehle in Cloud Shell aus, um Ihr GitHub-Repository zu verknüpfen.

Zuerst müssen Sie dem Developer Connect-Dienstkonto Zugriff auf Secret Manager gewähren.

# 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. Agent über Developer Connect bereitstellen

Nachdem Sie Ihr Repository sicher verbunden haben, können Sie einen Agent Runtime-Agent direkt über den Developer Connect-Link bereitstellen.

Agent Runtime bereitstellen

Erstellen und führen Sie ein Python-Skript lokal in Cloud Shell aus, um Ihren Agenten mit dem Vertex AI SDK bereitzustellen.

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

Konfigurieren Sie die Standardanmeldedaten für Anwendungen in gcloud.

gcloud auth application-default login

Führen Sie das Bereitstellungsskript aus. Bei dieser Architektur kann Vertex AI lokale Ausführungsumgebungen vollständig umgehen und das Remote-Agent-Image aus dem Quellcode erstellen.

python3 deploy.py

Agent testen

Führen Sie nach Abschluss der Bereitstellung ein Script aus, um den Agent-Endpunkt abzufragen.

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

Die Ausgabe sollte etwa so aussehen:

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

6. Bereinigen

Löschen Sie die in diesem Codelab erstellten Ressourcen, um laufende Gebühren für Ihr Google Cloud-Konto zu vermeiden.

Bereinigen Sie die Developer Connect- und Agent Runtime-Ressourcen:

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

Developer Connect-Ressourcen bereinigen:

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. Glückwunsch

Glückwunsch! Sie haben eine sichere GitHub-Repository-Integration mit Developer Connect eingerichtet und einen KI-Agenten direkt aus Ihrem Quellbaum bereitgestellt.

Das haben Sie gelernt

  • Sie haben ein Google Cloud-Projekt mit Developer Connect und Vertex AI konfiguriert.
  • Ein persönliches Zugriffstoken wurde sicher in Secret Manager gespeichert.
  • Developer Connect-Verbindungen, die explizit über die gcloud CLI erstellt wurden
  • Sie haben programmatisch eine Vertex AI Agent Runtime-Instanz mit der developer_connect_source-Objektzuordnung erstellt.

Nächste Schritte

  • Gemini Code Assist, das auf Ihre Developer Connect-Codebasisintegration zugeschnitten ist, bietet noch mehr Möglichkeiten.
  • Experimentieren Sie mit dem Erstellen robuster Agent Runtime-Agenten.

Referenzdokumente