Este documento descreve como configurar a personalização de código do Gemini Code Assist conectando-o aos seus repositórios de código privados. Este recurso permite que você receba recomendações de código, extraídas das bibliotecas internas, APIs privadas e do estilo de codificação da sua organização.
Antes de começar
- Configure o Gemini Code Assist com uma assinatura Enterprise .
- Crie ou configure contas de usuário final. Todos os desenvolvedores da sua organização que utilizam o Gemini Code Assist devem ter uma identidade de usuário.Google Cloud que tem permissão para acessar seu Google Cloud projeto. Para obter mais informações, consulte Funções de concessão no Google Cloud console . Certifique-se de que cada usuário tenha as seguintes funções:
Configure o Developer Connect e, em seguida, conecte-se ao seu repositório GitHub.com, GitLab.com ou Bitbucket.org:
GitHub
GitLab
Bitbucket
Além disso, observe que a personalização do código só oferece suporte a conexões do Developer Connect nos seguintes locais (regiões):
-
us-central1
-
europe-west1
-
asia-southeast1
Em um ambiente shell, execute o comando
gcloud components update
para garantir que você tenha atualizado todos os componentes instalados da CLI do gcloud para a versão mais recente. Para esta etapa, você pode instalar e inicializar a CLI do gcloud ou usar o Cloud Shell Editor .gcloud components update
Escolha quais repositórios privados estão conectados
Como prática recomendada, certifique-se de conectar repositórios que:
- Tenha um código com estilo ou estrutura semelhante ao que você quer que seus desenvolvedores escrevam.
- Tenha bibliotecas privadas ou APIs que você gostaria de chamar da sua base de código atual.
(Opcional) Escolha quais arquivos não serão indexados
Por padrão, a personalização do código indexa todos os arquivos de código suportados nos repositórios especificados.
Para evitar a exposição de código que você não deseja indexar, você pode usar padrões de ramificação para controlar o acesso ao seu índice e usar uma ramificação estável, como main
.
Como alternativa, você também pode excluir arquivos do índice criando um arquivo .aiexclude
.
Criar um índice
A personalização do código depende de um índice para analisar e analisar seu repositório para sugestões e pesquisas de geração de código mais rápidas.
gcloud CLI
Para criar o índice, em um ambiente de shell, use o gemini code-repository-indexes create
:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
Terraform
resource "google_gemini_code_repository_index" "example" {
location = "REGION"
code_repository_index_id = "INDEX_NAME"
}
Substitua o seguinte:
-
INDEX_NAME
: o nome do seu índice. Importante : Anote o nome do seu índice. Você precisará dele para várias etapas deste documento. -
PROJECT_ID
: seu Google Cloud ID do projeto. -
REGION
: uma região com suporte, conforme declarado na seção Antes de começar desta página, que você configurou no Developer Connect em seu Google Cloudprojeto.
A criação do índice geralmente leva 30 minutos para ser concluída, mas pode levar até uma hora.
O Google limita o número de índices de repositório de código a um para cada projeto e organização.
Controle o acesso ao seu índice usando grupos de repositórios
Um grupo de repositórios é um contêiner para configuração de indexação, que inclui repositórios e seus padrões de ramificação. Os grupos de repositórios são projetados para controle granular do IAM, dando aos desenvolvedores acesso aos dados indexados desses grupos, onde eles têm a permissão cloudaicompanion.repositoryGroups.use
.
Os grupos de repositórios contêm repositórios do Developer Connect, ou links, do mesmo projeto e local.
Os administradores executam as seguintes ações:
- Criar recurso de índice de repositório de código.
- No mesmo projeto e local, configure uma nova conexão do Developer Connect.
- Vincule repositórios Git na conexão.
Obtenha os nomes dos recursos dos links, escolha o padrão de ramificação para indexar cada link e coloque-o em um ou vários grupos de repositórios.
gcloud CLI
Para criar um grupo de repositórios, em um ambiente de shell, use o comando gemini code-repository-indexes repository-groups create
:
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'
Terraform
resource "google_gemini_repository_group" "example" {
location = "REGION"
code_repository_index = "INDEX_NAME"
repository_group_id = "REPOSITORY_GROUP"
repositories {
resource = "REPOSITORY_RESOURCE_NAME"
branch_pattern = "BRANCH_NAMES"
}
}
Substitua o seguinte:
-
REPOSITORY_GROUP
: nome do grupo de repositórios, comodefault
. -
PROJECT_ID
: seu Google Cloud ID do projeto. -
REGION
: uma região com suporte, conforme indicado na seção Antes de começar desta página, que você configurou no Developer Connect em seu Google Cloudprojeto. -
INDEX_NAME
: nome do índice que você criou em uma etapa anterior para criar um índice . -
REPOSITORY_RESOURCE_NAME
: nome do repositório dentro da conexão do Developer Connect. Para encontrar o nome do repositório, acesse a página do Developer Connect no Google Cloud console e, na aba Repositórios , procure o ID da conexão na coluna Conexão da tabela. Para copiar o nome do recurso, clique no menu more_vert para mais opções e selecione Copiar caminho do recurso . -
BRANCH_NAMES
: nome dos branches que você deseja indexar, comomain|dev
.
Você também pode criar um grupo de repositórios com repositórios definidos em um arquivo JSON (ou YAML), formatado da seguinte maneira:
JSON
[
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
}
]
YAML
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
Para criar um grupo de repositórios com base em um arquivo JSON ou YAML, em um ambiente de shell, use o comando gemini code-repository-indexes repository-groups create
:
JSON
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.json
YAML
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.yaml
Se preferir, você pode criptografar e controlar seus dados com uma chave de criptografia gerenciada pelo cliente (CMEK) por meio do Cloud Key Management Service . Para saber mais sobre como usar uma CMEK, consulte Criptografar dados com chaves de criptografia gerenciadas pelo cliente .
Conceder função IAM ao grupo de repositórios em um projeto
Você só recebe sugestões de repositórios no índice. Cada repositório pertence a um ou mais grupos de repositórios. Para acessar sugestões, você precisa conceder a função de usuário do IAM "Grupos de Repositórios do Cloud AI Companion" ( roles/cloudaicompanion.repositoryGroupsUser
) — que contém a permissão de usuário do IAM " cloudaicompanion.repositoryGroups.user
" — ao grupo de repositórios de uma das seguintes maneiras:
- Conceda aos diretores permissão para acessar o índice inteiro.
- Conceda aos principais acesso a um subconjunto do índice.
Conceder aos diretores permissão para acessar todo o índice
Para vincular uma política do IAM a um projeto, em um ambiente de shell, use o comando
projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Substitua o seguinte:
-
PROJECT_ID
: o ID do projeto onde o grupo de repositórios está localizado. -
PRINCIPAL
: o endereço de e-mail do principal que precisa de acesso — por exemplo,user:test-user@gmail.com
para um indivíduo ougroup:admins@example.com
para um grupo.
Para obter mais informações, consulte
gcloud projects set-iam-policy
.-
Quando solicitado a especificar uma condição, digite
None
.
Conceder aos principais acesso a um subconjunto do índice
Você pode criar vários grupos de repositórios e atribuir funções do IAM a diferentes entidades principais do IAM.
gcloud CLI
Para configurar uma política do IAM, você deve preparar o arquivo JSON ou YAML da política do IAM, que conterá uma lista de grupos do IAM e funções atribuídas. Por exemplo:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Para obter detalhes e sintaxe adicionais, consulte Noções básicas sobre políticas de permissão .
Para definir a política do IAM, em um ambiente de shell, use o comando gemini code-repository-indexes repository-groups set-iam-policy
:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
Substitua o seguinte:
-
GROUP_NAME
: o nome do grupo de repositório que você criou em uma etapa anterior para controlar o acesso ao seu índice usando grupos de repositório . -
POLICY_FILE
: a política do IAM. -
REGION
: uma região com suporte, conforme declarado na seção Antes de começar desta página, que você configurou no Developer Connect em seuGoogle Cloud projeto. INDEX_NAME
: o nome do índice que você criou em uma etapa anterior para criar um índice .Para obter mais informações, consulte
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Terraform
data "google_iam_policy" "foo" {
binding {
role = "roles/cloudaicompanion.repositoryGroupsUser"
members = ["test-user@example.com"]
}
}
resource "google_gemini_repository_group_iam_policy" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
policy_data = data.google_iam_policy.foo.policy_data
}
data "google_gemini_repository_group_iam_policy" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
depends_on = [
google_gemini_repository_group_iam_policy.foo
]
}
Você também pode criar uma ligação:
resource "google_gemini_repository_group_iam_binding" "foo" {
project = "PROJECT_ID"
location = "REGION"
code_repository_index_id = "INDEX_NAME"
repository_group_id = "GROUP_NAME"
role = "roles/cloudaicompanion.repositoryGroupsUser"
members = ["test-user@example.com"]
}
Substitua o seguinte:
-
GROUP_NAME
: o nome do grupo de repositório que você criou em uma etapa anterior para controlar o acesso ao seu índice usando grupos de repositório . -
REGION
: uma região com suporte, conforme declarado na seção Antes de começar desta página, que você configurou no Developer Connect em seuGoogle Cloud projeto. INDEX_NAME
: o nome do índice que você criou em uma etapa anterior para criar um índice .Para obter mais informações, consulte
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Verificar status de indexação
Dependendo do número de repositórios que você deseja indexar e do tamanho deles, a indexação do conteúdo pode levar até 24 horas. Para repositórios grandes, a indexação pode levar mais tempo. A indexação ocorre uma vez a cada 24 horas, coletando todas as alterações feitas no repositório.
Pesquise os logs
indexing
. Para obter mais informações, consulte Linguagem de consulta de log .Console
No Google Cloud console, vá para o Logs Explorer .
Use o filtro de nomes de log para visualizar logs
indexing
.
gcloud CLI
Para pesquisar os logs de indexação, em um ambiente de shell, use o comando
logging read
:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Substitua
PROJECT_ID
pelo ID do projeto onde o grupo de repositórios está localizado.Por exemplo, para visualizar erros nos logs
indexing
, execute o seguinte comando:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Revise os status de indexação associados, como os seguintes:
- Início da indexação do repositório — por exemplo,
Indexing repository REPOSITORY_NAME . Total number of repositories: 10, succeeded: 6, failed: 0.
- Fim da indexação de repositórios individuais - por exemplo:
- Sucesso:
Successfully finished indexing repository REPOSITORY_NAME . Total number of repositories: 10, succeeded: 7, failed: 0.
- Falha:
Failed to index repository REPOSITORY_NAME . Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Sucesso:
- Fim da indexação do repositório - por exemplo:
- Sucesso:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Falha:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.
- Sucesso:
Nos status do índice,
REPOSITORY_NAME
é o repositório que você deseja revisar.- Início da indexação do repositório — por exemplo,
Revise os erros de indexação associados, como os seguintes:
- Falha ao buscar o repositório.
- Falha ao listar os arquivos do repositório.
- Falha ao recuperar informações do repositório do índice.
- Falha ao recuperar arquivos do índice.
- Erro interno.
Use a personalização do código
Depois de configurar a personalização do código, você começará a ver sugestões de conclusão e geração de código que podem ser baseadas no código privado que você indexou, além dos resultados do reconhecimento completo da base de código.
Para saber mais sobre o uso da personalização de código e práticas recomendadas, consulte Usar personalização de código .
Desativar personalização de código
Para listar todos os grupos de repositórios para o índice atual, em um ambiente de shell, use o comando
gemini code-repository-indexes repository-groups list
:gcloud gemini code-repository-indexes repository-groups list --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uri
Substitua o seguinte:
-
REGION
: uma região com suporte, conforme declarado na seção Antes de começar desta página, que você configurou no Developer Connect em seuGoogle Cloud projeto. -
PROJECT_ID
: seu Google Cloud ID do projeto. -
INDEX_NAME
: nome do índice que você criou em uma etapa anterior para criar um índice .
-
Para excluir um grupo de repositórios do índice atual, use o comando
gemini code-repository-indexes repository-groups delete
:gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME
Repita a etapa 3 para cada grupo de repositórios até excluir todos os grupos de repositórios do índice.
Opcional: Para excluir o índice, em um ambiente de shell, use o comando
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
O que vem a seguir
- Comece a usar o Gemini Code Assist:
- VS Code, IntelliJ e outros IDEs JetBrains suportados: código com Gemini Code Assist
- Editor do Cloud Shell: código com Gemini Code Assist
- Estações de trabalho em nuvem: codifique com o Gemini Code Assist
- Aprenda a usar personalização de código e melhores práticas.
- Aprenda a criptografar dados com chaves de criptografia gerenciadas pelo cliente (CMEK) .
- Saiba mais sobre o Developer Connect .
- Aprenda como e quando Gêmeos para Google Cloud usa seus dados .