Łączenie GitHub z Google Cloud za pomocą Developer Connect

1. Wprowadzenie

W tym ćwiczeniu utworzysz bezpieczne połączenie z repozytorium GitHub przy użyciu Developer Connect i użyjesz go do bezpośredniego wdrożenia agenta za pomocą środowiska wykonawczego agenta na platformie Gemini Enterprise Agent Platform.

Developer Connect nawiązuje połączenie, przeprowadzając Cię przez konfiguracje uprawnień, autoryzacji, uwierzytelniania i sieciowe w przypadku narzędzi deweloperskich innych niż Google. Zapewnia to bezpośredni, natywny sposób przenoszenia kodu aplikacji do usług Google Cloud.

W tym ćwiczeniu użyjemy połączenia z repozytorium Git w Developer Connect, aby bezpośrednio wdrożyć agenta za pomocą środowiska wykonawczego agenta na platformie Gemini Enterprise Agent. Developer Connect obsługuje GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, Gitlab i GitLab Enterprise. W tym ćwiczeniu przeprowadzimy Cię przez proces łączenia z GitHubem.

Jakie zadania wykonasz

  • Tworzenie agenta podstawowego w środowisku wykonawczym agentów i przesyłanie go do GitHub
  • Użyj Developer Connect, aby połączyć repozytorium GitHub z Google Cloud
  • Wdrożenie agenta w środowisku wykonawczym agenta przy użyciu połączonego repozytorium
  • Wywoływanie i testowanie wdrożonego agenta zdalnego

Czego potrzebujesz

  • przeglądarka, np. Chrome;
  • projekt Google Cloud z włączonymi płatnościami;
  • Konto GitHub i osobisty token dostępu (klasyczny) z dostępem do repozytorium

To ćwiczenie jest przeznaczone dla deweloperów na wszystkich poziomach zaawansowania, w tym dla początkujących. Zasoby, którymi zarządzasz w tych ćwiczeniach z programowania, to głównie interfejsy API bezserwerowe, a ich koszt powinien być niższy niż 1 USD.

2. Zanim zaczniesz

Tworzenie projektu Google Cloud

  1. W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt w chmurze Google.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.

Uruchamianie Cloud Shell

  1. Kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.
  2. Po połączeniu z Cloud Shell sprawdź uwierzytelnianie:
    gcloud auth list
    
  3. Sprawdź, czy projekt jest skonfigurowany:
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Jeśli projekt nie jest ustawiony zgodnie z oczekiwaniami, ustaw go:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Włącz interfejsy API

Aby włączyć wszystkie interfejsy API wymagane w przypadku Developer Connect i Vertex AI, uruchom to polecenie:

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

3. Przygotowywanie kodu źródłowego agenta

Najpierw utworzysz nowe repozytorium GitHub, w którym będzie przechowywany kod źródłowy agenta, i dodasz do niego prostego agenta rozumowania w Pythonie.

  1. Zaloguj się na konto GitHub.
  2. Utwórz nowe repozytorium prywatne o nazwie devconnect-agent.
  3. Nie inicjuj go za pomocą pliku README ani .gitignore.

Tworzenie plików agenta lokalnie

W terminalu Cloud Shell utwórz katalog dla agenta i zdefiniuj jego zależności:

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

Utwórz w katalogu test plik requirements.txt, w którym określisz biblioteki środowiska wykonawczego agenta:

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

Utwórz plik my_agent.py w katalogu test. Ten skrypt definiuje prostego agenta odpowiadającego na zapytania dotyczące list:

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

Przenieś kod do GitHuba

Zainicjuj repozytorium Git i prześlij kod do nowo utworzonego repozytorium GitHub.

Zastąp `<YOUR_GITHUB_USERNAME>` swoją nazwą użytkownika GitHuba, a `<YOUR_GITHUB_TOKEN>` osobistym tokenem dostępu.

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

Teraz, gdy repozytorium znajduje się na GitHubie, Developer Connect bezpiecznie połączy z nim Twój projekt Google Cloud.

Konfigurowanie uprawnień

Autoryzuj Developer Connect do uzyskiwania dostępu do projektu Google Cloud, generując tożsamość usługi.

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

Połączenie i link możesz utworzyć za pomocą konsoli Google Cloud lub interfejsu wiersza poleceń gcloud.

Opcja 1. Korzystanie z konsoli Google Cloud

  1. W konsoli Google Cloud otwórz Developer Connect.
  2. W sekcji GitHub kliknij Połącz.
  3. Nazwij połączeniemy-github-connection i wybierz je wus-central1.
  4. Postępuj zgodnie z instrukcjami, aby autoryzować aplikację Developer Connect na GitHubie.
  5. Wybierz repozytorium devconnect-agent, aby połączyć je z projektem.

Opcja 2. Używanie gcloud CLI

Aby połączyć repozytorium GitHub, uruchom w Cloud Shell te polecenia:

Najpierw musisz przyznać kontu usługi Developer Connect dostęp do usługi 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. Wdróż agenta z poziomu Developer Connect

Po bezpiecznym połączeniu repozytorium możesz bezpośrednio wdrożyć agenta środowiska wykonawczego agenta, korzystając natywnie z linku Developer Connect.

Wdrażanie środowiska wykonawczego agenta

Utwórz i uruchom lokalnie w Cloud Shell skrypt w Pythonie, aby wdrożyć agenta za pomocą pakietu 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

Skonfiguruj domyślne dane logowania aplikacji w gcloud.

gcloud auth application-default login

Uruchom skrypt wdrażania. Pamiętaj, że ta architektura umożliwia Vertex AI całkowite pominięcie lokalnych zakresów wykonywania i skompilowanie obrazu agenta zdalnego ze źródła.

python3 deploy.py

Testowanie agenta

Po zakończeniu wdrażania uruchom skrypt, aby wysłać zapytanie do punktu końcowego agenta.

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

Dane wyjściowe powinny być podobne do tych:

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

6. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud bieżącymi opłatami, usuń zasoby utworzone podczas tego ćwiczenia.

Zwolnij miejsce na zasoby Developer Connect i środowiska wykonawczego agenta:

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

Zwalnianie miejsca w zasobach 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. Gratulacje

Gratulacje! Bezpiecznie utworzono integrację repozytorium GitHub za pomocą Developer Connect i natywnie wdrożono agenta AI bezpośrednio z drzewa źródłowego.

Czego się dowiedziałeś(-aś)

  • skonfigurować projekt w chmurze Google za pomocą Developer Connect i Vertex AI;
  • bezpiecznie przechowywać osobisty token dostępu w usłudze Secret Manager,
  • wygenerowane połączenia Developer Connect za pomocą gcloud CLI
  • Utworzono instancję środowiska wykonawczego agentów Vertex AI programowo, używając mapowania obiektów developer_connect_source.

Dalsze kroki

Dokumentacja