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 Agent Runtime auf der Gemini Enterprise Agent Platform bereitzustellen.

Developer Connect stellt eine Verbindung her, indem Sie durch die Konfigurationen für Berechtigungen, Autorisierung, Authentifizierung und Netzwerke für Entwicklertools von Drittanbietern geführt werden. So können Sie Ihren Anwendungscode direkt und nativ in Google Cloud-Dienste übertragen.

In diesem Codelab verwenden wir eine Developer Connect-Git-Repository-Verbindung, um einen Agenten direkt mit 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

  • Einen einfachen Agenten in Agent Runtime erstellen und in GitHub übertragen
  • Mit Developer Connect das GitHub-Repository mit Google Cloud verknüpfen
  • Den Agenten mit dem verbundenen Repository nativ in Agent Runtime bereitstellen
  • Den bereitgestellten Remote-Agenten 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 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 der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
  2. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. Informationen zum Prüfen, 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. Sobald die Verbindung mit der Cloud Shell hergestellt ist, prüfen Sie die 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. Agent-Quellcode vorbereiten

Zuerst erstellen Sie ein neues GitHub-Repository für den Quellcode Ihres Agenten und fügen ihm einen einfachen Python-Agenten für die Schlussfolgerung 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 Agenten und definieren Sie seine Abhängigkeiten:

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

Erstellen Sie im Verzeichnis test eine Datei requirements.txt mit den Agent Runtime-Bibliotheken:

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

Erstellen Sie im Verzeichnis test eine Datei my_agent.py. Dieses Skript definiert einen einfachen Agenten, der Listenabfragen 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 in GitHub übertragen

Initialisieren Sie ein Git-Repository und übertragen Sie Ihren Code 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 die gcloud-Befehlszeile erstellen.

Option 1: Google Cloud Console verwenden

  1. Öffnen Sie in der Google Cloud Console Developer Connect.
  2. Klicken Sie unter „GitHub“ auf Verbinden.
  3. Geben Sie Ihrer Verbindung den 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 Repository devconnect-agent 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. Agenten über Developer Connect bereitstellen

Nachdem Ihr Repository sicher verbunden ist, können Sie einen Agent Runtime-Agenten 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. Mit 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 Skript aus, um den Endpunkt Ihres Agenten 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

Damit Ihrem Google Cloud-Konto keine laufenden Gebühren in Rechnung gestellt werden, löschen Sie die in diesem Codelab erstellten Ressourcen.

Developer Connect- und Agent Runtime-Ressourcen bereinigen:

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 mit Developer Connect eine sichere GitHub-Repository-Integration eingerichtet und einen KI-Agenten nativ direkt aus Ihrer Quellstruktur bereitgestellt.

Lerninhalte

  • Google Cloud-Projekt mit Developer Connect und Vertex AI konfiguriert
  • Ein persönliches Zugriffstoken sicher in Secret Manager gespeichert
  • Developer Connect-Verbindungen explizit über die gcloud CLI generiert
  • Eine Vertex AI Agent Runtime-Instanz programmatisch mit der Zuordnung des Objekts developer_connect_source erstellt

Nächste Schritte

Referenzdokumente