Conectar o GitHub ao Google Cloud com o Developer Connect

1. Introdução

Neste codelab, você vai criar uma conexão segura com um repositório do GitHub usando o Developer Connect e usar essa conexão para implantar diretamente um agente usando o Agent Runtime na plataforma de agentes do Gemini Enterprise.

O Developer Connect estabelece a conectividade orientando você pelas configurações de permissões, autorização, autenticação e rede para ferramentas de desenvolvedor que não são do Google. Isso oferece uma maneira direta e nativa de extrair o código do aplicativo para os serviços do Google Cloud.

Neste codelab, vamos usar uma conexão de repositório Git do Developer Connect para implantar diretamente um agente usando o Agent Runtime na plataforma de agentes do Gemini Enterprise. O Developer Connect é compatível com GitHub, GitHub Enterprise, Bitbucket Cloud, Bitbucket Data Center, Gitlab e GitLab Enterprise. Neste codelab, vamos explicar como fazer uma conexão com o GitHub.

Atividades deste laboratório

  • Criar um agente básico no tempo de execução do agente e enviá-lo por push para o GitHub
  • Use o Developer Connect para vincular seu repositório do GitHub ao Google Cloud
  • Implante o agente no Agent Runtime usando seu repositório conectado de forma nativa
  • Invocar e testar o agente remoto implantado

O que é necessário

  • Um navegador da web, como o Chrome
  • Tenha um projeto do Google Cloud com o faturamento ativado.
  • Uma conta do GitHub e um token de acesso pessoal (clássico) com acesso ao repositório

Este codelab é destinado a desenvolvedores de todos os níveis, incluindo iniciantes. Os recursos gerenciados neste codelab são principalmente APIs sem servidor e custam menos de US $1.

2. Antes de começar

Criar um projeto do Google Cloud

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto na nuvem do Google Cloud.
  2. Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto.

Iniciar o Cloud Shell

  1. Clique em Ativar o Cloud Shell na parte de cima do console do Google Cloud.
  2. Depois de se conectar ao Cloud Shell, verifique sua autenticação:
    gcloud auth list
    
  3. Confirme se o projeto está configurado:
    export PROJECT_ID=$(gcloud config get-value project)
    
  4. Se o projeto não estiver definido como esperado, faça o seguinte:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Ativar APIs

Execute este comando para ativar todas as APIs necessárias para o Developer Connect e a Vertex AI:

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

3. Preparar o código-fonte do agente

Primeiro, você vai criar um repositório do GitHub para armazenar o código-fonte do agente e adicionar um agente de inferência simples em Python.

  1. Faça login na sua conta do GitHub.
  2. Crie um novo repositório particular chamado devconnect-agent.
  3. Não inicialize com um README ou .gitignore.

Criar os arquivos do agente localmente

De volta ao terminal do Cloud Shell, crie um diretório para seu agente e defina as dependências dele:

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

Crie um arquivo requirements.txt no diretório test especificando as bibliotecas do Agent Runtime:

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

Crie um arquivo my_agent.py no diretório test. Esse script define um agente simples que responde a 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

Envie o código para o GitHub

Inicialize um repositório do Git e envie o código para o repositório do GitHub recém-criado.

Substitua `<YOUR_GITHUB_USERNAME>` pelo seu nome de usuário do GitHub e `<YOUR_GITHUB_TOKEN>` pelo seu token de acesso pessoal.

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. Configurar o Developer Connect

Agora que seu repositório está no GitHub, o Developer Connect vai vincular seu projeto na nuvem do Google Cloud a ele de forma segura.

Configurar permissões do IAM

Autorize o Developer Connect a acessar seu projeto na nuvem do Google gerando uma identidade de serviço.

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

É possível criar a conexão e o link usando o console do Google Cloud ou a CLI gcloud.

Opção 1: usar o console do Google Cloud

  1. No console do Google Cloud, acesse Developer Connect.
  2. Clique em Conectar em GitHub.
  3. Dê um nome à sua conexão my-github-connection e selecione-a em us-central1.
  4. Siga as instruções para autorizar o app GitHub do Developer Connect.
  5. Selecione o repositório devconnect-agent para vincular ao seu projeto.

Opção 2: usar a CLI gcloud

Execute os comandos a seguir no Cloud Shell para vincular seu repositório do GitHub.

Primeiro, conceda à conta de serviço do Developer Connect acesso ao 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. Implantar o agente do Developer Connect

Com o repositório conectado com segurança, você pode implantar diretamente um agente do Agent Runtime usando o link do Developer Connect de forma nativa.

Implantar o Agent Runtime

Crie e execute um script Python localmente no Cloud Shell para implantar seu agente usando o SDK da 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

Configure as credenciais padrão do aplicativo na gcloud.

gcloud auth application-default login

Execute o script de implantação. Essa arquitetura permite que a Vertex AI ignore completamente os escopos de execução local e crie a imagem do agente remoto da origem.

python3 deploy.py

Testar o agente

Quando a implantação terminar, execute um script para consultar o endpoint do 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

Você verá uma saída como:

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

6. Limpar

Para evitar cobranças contínuas na sua conta do Google Cloud, exclua os recursos criados durante este codelab.

Limpe os recursos do Developer Connect e do ambiente de execução do agente:

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

Limpe os recursos do 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. Parabéns

Parabéns! Você estabeleceu uma integração segura de repositório do GitHub usando o Developer Connect e implantou nativamente um agente de IA diretamente da sua árvore de origem.

O que você aprendeu

  • Configurou um projeto na nuvem do Google Cloud com o Developer Connect e a Vertex AI
  • Armazenar com segurança um token de acesso pessoal no Secret Manager
  • Conexões do Developer Connect geradas explicitamente pela CLI gcloud
  • Criou uma instância do ambiente de execução do agente da Vertex AI de forma programática usando o mapeamento de objetos developer_connect_source.

Próximas etapas

Documentos de referência