Neste documento, descrevemos como configurar Personalização de código do Gemini Code Assist conectando o Gemini Code Assist aos seus repositórios de código particulares. Esse recurso permite receber recomendações de código, que são extraídas das bibliotecas internas, APIs privadas e estilo de codificação da sua organização.
Antes de começar
- Entre em contato com seu representante de vendas para ter acesso aos Personalização do código do Gemini Code Assist.
- Configure o Gemini Code Assist.
- Criar ou configurar contas de usuário final. Todos os desenvolvedores da sua organização que usam o Gemini Code Assist precisam ter uma identidade de usuário no Google Cloud com permissão para acessar seu projeto. Para mais informações, consulte Conceder papéis no console do Google Cloud. Verifique se cada usuário tem os seguintes papéis:
Configure o Developer Connect e em seguida, conecte-se ao seu repositório GitHub.com ou GitLab.com:
Além disso, a personalização de 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 de shell, execute o comando
gcloud components update
para garantir que você atualizou todos os componentes instalados da CLI gcloud para a versão mais recente. Nesta etapa, você pode instalar e inicializar a CLI gcloud ou usar o Cloud Shell.gcloud components update
Escolher quais repositórios particulares estão conectados
Como prática recomendada, conecte repositórios que:
- Ter um código com estilo ou estrutura semelhante ao que você quer que os desenvolvedores escrevam.
- tem bibliotecas ou APIs privadas para chamar pelo seu serviço atual; de código aberto.
(Opcional) Escolher quais arquivos não são indexados
Por padrão, a personalização de código indexa todos os arquivos de código com suporte nos repositórios especificados.Em muitos cenários, você pode ter arquivos ou subárvores específicos que não deseja indexado. Exemplo:
- Informações altamente sensíveis com acesso limitado dentro da sua organização
- Código antigo ou descontinuado
- Código gerado automaticamente ou temporário
Para evitar a exposição de código que você não quer indexar, use padrões de
ramificação para
controlar o acesso ao seu índice
e use 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 em busca de sugestões e pesquisas de geração de código mais rápidas.
Para criar o índice, em um ambiente de shell, use o
comando gemini code-repository-indexes create
:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
Substitua:
INDEX_NAME
: o nome do índice.PROJECT_ID
: é seu ID do projeto no Google Cloud.REGION
: uma região com suporte, conforme indicado nos Antes de começar desta página, você precisa: configuradas no Developer Connect na sua Google Cloud projeto.
A criação de índices geralmente leva 30 minutos para ser concluída, mas pode levar até uma hora.
O Google limita o número de índices do repositório de código a um para cada projeto e organização. Se precisar de mais índices de repositório de código, solicitar uma cota maior.
Controlar o acesso ao índice usando grupos de repositórios
Para criar um grupo de repositórios, em um ambiente 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"}]'
Substitua:
REPOSITORY_GROUP
: nome do grupo de repositório, comodefault
.PROJECT_ID
: é seu ID do projeto no Google Cloud.REGION
: uma região com suporte, conforme indicado nos Antes de começar desta página, você precisa: configuradas no Developer Connect na sua Google Cloud projeto.INDEX_NAME
: nome do índice que você criou em um etapa anterior para criar um índice.REPOSITORY_RESOURCE_NAME
: nome do repositório. na conexão Developer Connect. Para encontrar o nome de repositório, vá para a página do Developer Connect no no console do Google Cloud e, na guia Repositórios, procure ID da conexão na coluna Conexão da tabela. Para copiar o nome do recurso, clique no botão more_vert para mais opções. Selecione Copiar caminho do recurso.BRANCH_NAMES
: nome das filiais que você quer indexar, comomain|dev
.
Também é possível 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
Conceder o papel do IAM ao grupo de repositório em um projeto
Você só recebe sugestões de repositórios no índice. Cada repositório
pertence a um ou vários grupos de repositórios. Para acessar as sugestões, você precisa
conceda o papel do IAM de usuário dos grupos de repositórios complementares do Cloud AI
(roles/cloudaicompanion.repositoryGroupsUser
): contém o parâmetro
permissão do IAM cloudaicompanion.repositoryGroups.user
à
que podem ser agrupadas de acordo com uma das formas a seguir:
- Conceda aos principais a permissão para acessar todo o índice.
- Conceda aos principais acesso a um subconjunto do índice.
Conceder aos principais 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:
PROJECT_ID
: o ID do projeto em que o grupo do repositório 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 ver mais informações, consulte
gcloud projects set-iam-policy
.Quando solicitado a especificar uma condição, insira
None
.
Conceder aos principais acesso a um subconjunto do índice
É possível criar vários grupos de repositórios e atribuir papéis do IAM a diferentes principais do IAM.
Para configurar uma política do IAM, você precisa preparar o arquivo JSON ou YAML da política do IAM, que vai conter uma lista de grupos do IAM e papéis atribuídos. Exemplo:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Para mais detalhes e a sintaxe, consulte Como funcionam as políticas de permissão.
Para definir a política do IAM, em um ambiente 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:
GROUP_NAME
: o nome do grupo de repositórios que você criou em um a etapa anterior para controlar o acesso ao seu índice usando grupos de repositórios.POLICY_FILE
: a política do IAM.REGION
: uma região com suporte, conforme indicado nos Antes de começar desta página, que que você configurou no Developer Connect em sua projeto do Google Cloud.INDEX_NAME
: o nome do índice que você criou em um etapa anterior para criar um índice.Para ver mais informações, consulte
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Verificar o status de indexação
Dependendo do número de repositórios que você quer indexar e do tamanho deles, a indexação de conteúdo pode levar até 24 horas. Para repositórios grandes, a indexação pode demorar mais. A indexação ocorre uma vez a cada 24 horas, detectando todas as mudanças feitas no repositório.
No console do Google Cloud, acesse Análise de registros.
Use o filtro de nomes de registro para conferir os registros
indexing
ou pesquise os registros de indexação com o seguinte comando:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Substitua
PROJECT_ID
pelo ID do projeto em que o grupo de repositórios está localizado.Por exemplo, para visualizar erros nos registros
indexing
, execute o seguinte comando:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Para mais informações, consulte Linguagem de consulta do Logging.
Analise os status de indexação associados, como estes:
- 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ório individual. Por exemplo:
- Problema resolvido:
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.
- Problema resolvido:
- Fim da indexação do repositório, por exemplo:
- Problema resolvido:
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.
- Problema resolvido:
Nos status de índice,
REPOSITORY_NAME
é o repositório que você quer analisar.- Início da indexação do repositório. Por exemplo,
Analise 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 de repositório do índice.
- Falha ao recuperar arquivos do índice.
- Erro interno.
Usar a personalização de código
Depois que você configurar a personalização de código, os usuários vão começar a receber sugestões de preenchimento e geração de código que podem ser baseadas em código privado que você indexou, além dos resultados da detecção completa da base de código.
Desativar a personalização do código
Para listar todos os grupos de repositórios do índice atual, em um ambiente shell, use o método 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:
REGION
: uma região com suporte, conforme indicado nos Antes de começar desta página, que que você configurou no Developer Connect em sua projeto do Google Cloud.PROJECT_ID
: é seu ID do projeto no Google Cloud.INDEX_NAME
: nome do índice que você criou em um etapa anterior para criar um índice.
Para excluir um grupo de repositórios do índice atual, use o evento 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ório até excluir todos os grupos do índice.
Opcional: para excluir o índice, em um ambiente shell, use o método Comando
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
A seguir
- Comece a usar o Gemini Code Assist:
- VS Code: programar com Gemini Code Assist
- IntelliJ: Programar com o Gemini Code Assist
- Editor do Cloud Shell: Programar com o Gemini Code Assist
- Cloud Workstations: Programar com o Gemini Code Assist
- Saiba mais sobre o Developer Connect.
- Saiba como e quando o Gemini para Google Cloud usa seus dados.