En este documento, se describe cómo configurar la personalización de código de Gemini Code Assist conectando Gemini Code Assist a tus repositorios de código privados. Esta función te permite recibir recomendaciones de código, que se basan en las bibliotecas internas, las APIs privadas y el estilo de programación de tu organización.
Antes de comenzar
- Configura Gemini Code Assist con una suscripción a Enterprise.
- Crear o configurar cuentas de usuario final Cada desarrollador de tu organización que use Gemini Code Assist debe tener una identidad de usuario enGoogle Cloud con permiso para acceder a tu proyecto de Google Cloud . Para obtener más información, consulta Cómo otorgar roles en la consola de Google Cloud . Asegúrate de que cada usuario tenga los siguientes roles:
Configura Developer Connect y, luego, conéctate a tu repositorio de GitHub.com, GitLab.com o Bitbucket.org:
GitHub
GitLab
Bitbucket
Además, ten en cuenta que la personalización de código solo admite conexiones de Developer Connect en las siguientes ubicaciones (regiones):
us-central1
europe-west1
asia-southeast1
En un entorno de shell, ejecuta el comando
gcloud components update
para asegurarte de haber actualizado todos los componentes instalados de la CLI de gcloud a la versión más reciente. Para este paso, puedes instalar y, luego, inicializar gcloud CLI, o bien usar el editor de Cloud Shell.gcloud components update
Elige qué repositorios privados se conectarán
Como práctica recomendada, asegúrate de conectar repositorios que cumplan con los siguientes requisitos:
- Tener código con un estilo o una estructura similares a los que quieres que escriban tus desarrolladores
- Tener bibliotecas o APIs privadas a las que te gustaría llamar desde tu base de código actual
(Opcional) Elige qué archivos no se indexarán
De forma predeterminada, la personalización de código indexa todos los archivos de código admitidos en los repositorios que especificaste.
Para evitar la exposición de código que no deseas indexar, puedes usar patrones de ramas para controlar el acceso a tu índice y usar una rama estable, como main
.
Como alternativa, también puedes excluir archivos del índice creando un archivo .aiexclude
.
Crea un índice
La personalización del código se basa en un índice para analizar tu repositorio y obtener sugerencias y búsquedas de generación de código más rápido.
gcloud CLI
Para crear el índice, en un entorno de shell, usa el comando 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"
}
Reemplaza lo siguiente:
INDEX_NAME
: Es el nombre de tu índice. Importante: Anota el nombre del índice. Lo necesitarás para completar varios pasos en este documento.PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .REGION
: Una región admitida, como se indica en la sección Antes de comenzar de esta página, que configuraste en Developer Connect en tu proyecto de Google Cloud.
Por lo general, la creación del índice tarda 30 minutos en completarse, pero puede demorar hasta una hora.
Google limita la cantidad de índices de repositorios de código a uno por cada proyecto y organización.
Controla el acceso a tu índice con grupos de repositorios
Un grupo de repositorios es un contenedor para la configuración de indexación, que incluye repositorios y sus patrones de ramas. Los grupos de repositorios están diseñados para un control detallado de IAM, lo que les brinda a los desarrolladores acceso a los datos indexados de esos grupos, en los que tienen el permiso cloudaicompanion.repositoryGroups.use
.
Los grupos de repositorios contienen repositorios de Developer Connect o vínculos del mismo proyecto y ubicación.
Los administradores realizan las siguientes acciones:
- Crea un recurso de índice de repositorio de código.
- En el mismo proyecto y ubicación, configura una nueva conexión de Developer Connect.
- Vincula repositorios de Git en la conexión.
Obtén los nombres de recursos de los vínculos, elige el patrón de rama para indexar cada vínculo y colócalo en uno o varios grupos de repositorios.
gcloud CLI
Para crear un grupo de repositorios, en un entorno de shell, usa el 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"
}
}
Reemplaza lo siguiente:
REPOSITORY_GROUP
: Es el nombre del grupo de repositorios, comodefault
.PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .REGION
: Una región admitida, como se indica en la sección Antes de comenzar de esta página, que configuraste en Developer Connect en tu proyecto Google Cloud.INDEX_NAME
: Es el nombre del índice que creaste en un paso anterior para crear un índice.REPOSITORY_RESOURCE_NAME
: Es el nombre del repositorio dentro de la conexión de Developer Connect. Para encontrar el nombre del repositorio, ve a la página Developer Connect en la consola de Google Cloud y, en la pestaña Repositorios, busca el ID de conexión en la columna Conexión de la tabla. Para copiar el nombre del recurso, haz clic en el menú more_vert para ver más opciones y selecciona Copiar ruta de acceso al recurso.BRANCH_NAMES
: Es el nombre de las ramas que deseas indexar, comomain|dev
.
También puedes crear un grupo de repositorios con repositorios definidos en un archivo JSON (o YAML), con el siguiente formato:
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 crear un grupo de repositorios basado en un archivo JSON o YAML, en un entorno de shell, usa el 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
Si lo prefieres, puedes encriptar y controlar tus datos con una clave de encriptación administrada por el cliente (CMEK) a través de Cloud Key Management Service. Para obtener más información sobre el uso de una CMEK, consulta Encripta datos con claves de encriptación administradas por el cliente.
Otorga un rol de IAM al grupo de repositorios en un proyecto
Solo recibirás sugerencias de los repositorios del índice. Cada repositorio pertenece a uno o varios grupos de repositorios. Para acceder a las sugerencias, debes otorgar el rol de IAM de usuario de grupos de repositorios de Cloud AI Companion (roles/cloudaicompanion.repositoryGroupsUser
), que contiene el permiso de IAM cloudaicompanion.repositoryGroups.user
requerido, al grupo de repositorios de una de las siguientes maneras:
- Otorga permiso a las principales para acceder a todo el índice.
- Otorga a las principales acceso a un subconjunto del índice.
Otorga permiso a las principales para acceder a todo el índice
Para vincular una política de IAM a un proyecto en un entorno de shell, usa el comando
projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto en el que se encuentra el grupo de repositorios.PRINCIPAL
: Es la dirección de correo electrónico del principal que necesita acceso, por ejemplo,user:test-user@gmail.com
para una persona ogroup:admins@example.com
para un grupo.
Para obtener más información, consulta
gcloud projects set-iam-policy
Cuando se te solicite que especifiques una condición, ingresa
None
.
Otorga acceso a principales a un subconjunto del índice
Puedes crear varios grupos de repositorios y asignar roles de IAM a diferentes principales de IAM.
gcloud CLI
Para configurar una política de IAM, debes preparar el archivo JSON o YAML de la política de IAM, que contendrá una lista de grupos de IAM y roles asignados. Por ejemplo:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Para obtener más detalles y sintaxis, consulta Comprende las políticas de permisos.
Para establecer la política de IAM, en un entorno de shell, usa el 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
Reemplaza lo siguiente:
GROUP_NAME
: Es el nombre del grupo de repositorios que creaste en un paso anterior para controlar el acceso a tu índice con grupos de repositorios.POLICY_FILE
: Es la política de IAM.REGION
: Una región admitida, como se indica en la sección Antes de comenzar de esta página, que configuraste en Developer Connect en tu proyectoGoogle Cloud .INDEX_NAME
: Es el nombre del índice que creaste en un paso anterior para crear un índice.Para obtener más información, consulta
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
]
}
También puedes crear una vinculación:
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"]
}
Reemplaza lo siguiente:
GROUP_NAME
: Es el nombre del grupo de repositorios que creaste en un paso anterior para controlar el acceso a tu índice con grupos de repositorios.REGION
: Una región admitida, como se indica en la sección Antes de comenzar de esta página, que configuraste en Developer Connect en tu proyectoGoogle Cloud .INDEX_NAME
: Es el nombre del índice que creaste en un paso anterior para crear un índice.Para obtener más información, consulta
gcloud gemini code-repository-indexes repository-groups set-iam-policy
Cómo verificar el estado de la indexación
Según la cantidad de repositorios que quieras indexar y su tamaño, la indexación del contenido puede tardar hasta 24 horas. En el caso de los repositorios grandes, la indexación puede tardar más. La indexación se realiza una vez cada 24 horas y registra cualquier cambio que se haya realizado en el repositorio.
Busca los registros de
indexing
. Para obtener más información, consulta Lenguaje de consulta de Logging.Console
En la consola de Google Cloud , ve al Explorador de registros.
Usa el filtro de nombres de registro para ver los registros de
indexing
.
gcloud CLI
Para buscar los registros de indexación en un entorno de shell, usa el comando
logging read
:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Reemplaza
PROJECT_ID
por el ID del proyecto en el que se encuentra el grupo de repositorios.Por ejemplo, para ver los errores en los registros de
indexing
, ejecuta el siguiente comando:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Revisa los estados de indexación asociados, como los siguientes:
- Inicio de la indexación del repositorio, por ejemplo,
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
- Fin de la indexación del repositorio individual, por ejemplo:
- Listo:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- Error:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Listo:
- Fin de la indexación del repositorio, por ejemplo:
- Listo:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Error:
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.
- Listo:
En los estados del índice,
REPOSITORY_NAME
es el repositorio que deseas revisar.- Inicio de la indexación del repositorio, por ejemplo,
Revisa los errores de indexación asociados, como los siguientes:
- No se pudo recuperar el repositorio.
- No se pudieron enumerar los archivos del repositorio.
- No se pudo recuperar la información del repositorio del índice.
- No se pudieron recuperar los archivos del índice.
- Error interno.
Cómo usar la personalización de código
Una vez que configures la personalización de código, comenzarás a ver sugerencias de finalización y generación de código que pueden basarse en el código privado que indexaste, además de los resultados de la comprensión de la base de código completa.
Para obtener más información sobre el uso de la personalización de código y las prácticas recomendadas, consulta Usa la personalización de código.
Desactiva la personalización del código
Para enumerar todos los grupos de repositorios del índice actual en un entorno de shell, usa el 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
Reemplaza lo siguiente:
REGION
: Una región admitida, como se indica en la sección Antes de comenzar de esta página, que configuraste en Developer Connect en tu proyectoGoogle Cloud .PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .INDEX_NAME
: Es el nombre del índice que creaste en un paso anterior para crear un índice.
Para borrar un grupo de repositorios del índice actual, usa el 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
Repite el paso 3 para cada grupo de repositorios hasta que borres todos los grupos de repositorios del índice.
Opcional: Para borrar el índice, en un entorno de shell, usa el comando
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
¿Qué sigue?
- Comienza a usar Gemini Code Assist:
- VS Code, IntelliJ y otros IDE de JetBrains compatibles: Crea código con Gemini Code Assist
- Editor de Cloud Shell: Crea código con Gemini Code Assist
- Cloud Workstations: Crea código con Gemini Code Assist
- Obtén información sobre cómo usar la personalización de código y las prácticas recomendadas.
- Obtén más información para encriptar datos con claves de encriptación administradas por el cliente (CMEK).
- Obtén más información sobre Developer Connect.
- Descubre cómo y cuándo Gemini para Google Cloud usa tus datos.