En este documento se describe cómo configurar la personalización de código de Gemini Code Assist en la consola, con la CLI de Google Cloud o con Terraform conectando Gemini Code Assist a tus repositorios de código privado. Google Cloud La función de personalización de código de Gemini Code Assist 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 empezar
- Configura Gemini Code Assist con una suscripción Enterprise.
Verifica que tengas los siguientes roles de Gestión de Identidades y Accesos (IAM) en el proyecto propietario de la suscripción:
- Administrador de índices de repositorios de código (
roles/cloudaicompanion.codeRepositoryIndexesAdmin
) - Usuario de Gemini para Google Cloud (
roles/cloudaicompanion.user
)
- Administrador de índices de repositorios de código (
Crear o configurar cuentas de usuario. Todos los desarrolladores de tu organización que usen Gemini Code Assist deben tener una identidad de usuario enGoogle Cloud que tenga permiso para acceder a tu proyecto Google Cloud . Para obtener más información, consulta Asignar roles en la consola de Google Cloud . Verifica que cada usuario tenga los siguientes roles:
La función de personalización de código usa Developer Connect para acceder a tus repositorios privados e indexarlos. Asegúrate de que la región de Developer Connect en la que se encuentra la conexión de tu repositorio de Developer Connect también sea una ubicación admitida para la personalización de código. La función de personalización de código no se puede usar si la conexión de Developer Connect está en una región no admitida. Para ver la lista de regiones admitidas, consulta las limitaciones de personalización de código.
Elegir qué repositorios se indexan
Como práctica recomendada, debe indexar los repositorios que tengan las siguientes características:
- Código con un estilo o una estructura similares a los que quieres que escriban tus desarrolladores.
- Bibliotecas o APIs privadas a las que quieras llamar desde tu código base actual.
Opcional: Elige qué archivos no se indexan
De forma predeterminada, la personalización de código indexa todos los archivos de código admitidos de los repositorios que hayas especificado.
Para evitar que se exponga el código que no quieres indexar, puedes usar patrones de rama para controlar el acceso a tu índice y usar una rama estable, como main
.
También puedes excluir archivos del índice creando un archivo .aiexclude
.
Configurar la personalización de código de Gemini Code Assist
Selecciona una de las opciones siguientes:
Consola
En la Google Cloud consola, ve a la página Personalización de código.
Ir a la personalización de código de Gemini Code Assist
Se carga la página Personalización de código para Gemini Code Assist.
Crea un índice. La personalización del código se basa en un índice para analizar y desglosar tu repositorio, lo que permite obtener sugerencias de generación de código y búsquedas más rápidas.
Haga clic en Crear y configure los detalles del índice:
- Selecciona la región configurada en Developer Connect en tu Google Cloud proyecto.
- Escribe un nombre para el índice. Anota el nombre del índice. Lo necesitarás para varios pasos de este documento.
Haz clic en Crear.
La creación de índices suele tardar 30 minutos en completarse, pero puede llevar hasta una hora. Cuando se complete la indexación, recibirás una notificación en la consola Google Cloud .
Google limita el número de índices de repositorios de código a uno por proyecto y organización.
Controla el acceso a tu índice mediante grupos de repositorios.
Un grupo de repositorios es un contenedor de la configuración de indexación, que incluye repositorios y sus patrones de rama. Los grupos de repositorios se han diseñado para ofrecer un control de gestión de identidades y accesos granular, lo que permite a los desarrolladores acceder a los datos indexados de esos grupos, donde tienen el permiso
cloudaicompanion.repositoryGroups.use
.Los grupos de repositorios contienen repositorios de Developer Connect o enlaces del mismo proyecto y ubicación.
En la página Personalización del código de Gemini Code Assist, haz clic en Añadir repositorios y, a continuación, selecciona Añadir repositorios de origen.
Se muestra una lista de los repositorios de Developer Connect de la región que has configurado en el paso anterior para crear el índice.
Si necesitas añadir repositorios al grupo de repositorios, haz clic en Vincular repositorio y sigue los pasos que se indican en la Google Cloud consola.
Además, puede seleccionar y editar uno o varios repositorios para añadir una rama nueva.
Seleccione el grupo de repositorios al que quiera añadir repositorios. También puedes hacer clic en Crear un grupo de repositorios para crear y configurar un grupo de repositorios.
Para empezar a indexar los repositorios seleccionados, haz clic en Indexar.
El tiempo de indexación varía en función del tamaño de los repositorios.
CLI
- Comprueba que hayas configurado Developer Connect y que te hayas conectado a tu repositorio:
En un entorno de shell, ejecuta el comando
gcloud components update
para verificar que has actualizado todos los componentes instalados de la CLI de gcloud a la versión más reciente. Para este paso, puedes instalar e inicializar la CLI de gcloud o usar el editor de Cloud Shell.gcloud components update
Crea un índice. La personalización del código se basa en un índice para analizar y desglosar tu repositorio, lo que permite obtener sugerencias de generación de código y búsquedas más rápidas.
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
Haz los cambios siguientes:
INDEX_NAME
: el nombre del índice. Importante: Anota el nombre del índice. Lo necesitarás en varios pasos de este documento.PROJECT_ID
: tu ID de proyecto Google Cloud .REGION
: la región configurada en Developer Connect de tu Google Cloud proyecto.
La creación de índices suele tardar 30 minutos en completarse, pero puede llevar hasta una hora.
Google limita el número de índices de repositorios de código a uno por proyecto y organización.
Controla el acceso a tu índice mediante grupos de repositorios. Un grupo de repositorios es un contenedor de la configuración de indexación, que incluye repositorios y sus patrones de rama. Los grupos de repositorios se han diseñado para ofrecer un control de IAM granular, lo que permite a los desarrolladores acceder a los datos indexados de esos grupos, donde tienen el permiso
cloudaicompanion.repositoryGroups.use
.Los grupos de repositorios contienen repositorios de Developer Connect o enlaces del mismo proyecto y ubicación.
Los administradores realizan las siguientes acciones:
- Crea el recurso Code Repository Index.
- En el mismo proyecto y ubicación, configura una conexión de Developer Connect.
- Vincula repositorios de Git en la conexión.
- Obtiene los nombres de recursos de los enlaces, elige el patrón de rama que se va a indexar para cada enlace y lo coloca en uno o varios grupos de repositorios.
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"}]'
Haz los cambios siguientes:
REPOSITORY_GROUP
: nombre del grupo de repositorios, comodefault
.REPOSITORY_RESOURCE_NAME
: nombre del repositorio de la conexión de Developer Connect. Para encontrar el nombre del repositorio, ve a la página Repositorios de Git de la consola 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 del recurso.BRANCH_NAMES
: nombre de las ramas que quieras indexar, comomain|dev
.
También puedes crear un grupo de repositorios con los 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 a partir de 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 cifrar y controlar tus datos con una clave de cifrado gestionada por el cliente (CMEK) a través de Cloud Key Management Service. Para obtener más información sobre cómo usar una CMEK, consulta Encriptar datos con claves de encriptado gestionadas por el cliente.
Asigna roles de gestión de identidades y accesos al grupo del repositorio 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 asignar el rol de gestión de identidades y accesos de usuario de grupos de repositorios de Cloud AI Companion (
roles/cloudaicompanion.repositoryGroupsUser
), que contiene el permiso de gestión de identidades y accesoscloudaicompanion.repositoryGroups.user
necesario, al grupo de repositorios de una de las siguientes formas:- Concede a las entidades principales permiso para acceder a todo el índice.
Concede a los principales acceso a un subconjunto del índice.
Todo el índice
Para vincular una política de gestión de identidades y accesos a un proyecto, usa el comando
projects add-iam-policy-binding
en un entorno de shell:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Haz los cambios siguientes:
PRINCIPAL
: la dirección de correo del principal que necesita acceso. Por ejemplo,user:test-user@gmail.com
para un usuario ogroup:admins@example.com
para un grupo.
Para obtener más información, consulta
gcloud projects set-iam-policy
.Cuando se te pida que especifiques una condición, introduce
None
.
Subconjunto del índice
Puedes crear varios grupos de repositorios y asignar roles de gestión de identidades y accesos a diferentes principales de gestión de identidades y accesos.
Para configurar una política de gestión de identidades y accesos, debes preparar el archivo JSON o YAML de la política, que contendrá una lista de grupos de gestión de identidades y accesos y los roles asignados. Por ejemplo:
bindings: - members: - group:my-group@example.com - user:test-user@example.com role: roles/cloudaicompanion.repositoryGroupsUser
Para obtener más información y la sintaxis, consulta el artículo Información sobre las políticas de permiso.
Para definir la política de gestión de identidades y accesos, 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
Haz los cambios siguientes:
GROUP_NAME
: el nombre del grupo de repositorios que ha creado en un paso anterior para controlar el acceso a su índice mediante grupos de repositorios.POLICY_FILE
: la política de gestión de identidades y accesos.Para obtener más información, consulta
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Terraform
Comprueba que hayas configurado Developer Connect y que te hayas conectado a tu repositorio:
Crea un índice. La personalización del código se basa en un índice para analizar y desglosar tu repositorio, lo que permite obtener sugerencias de generación de código y búsquedas más rápidas.
resource "google_gemini_code_repository_index" "example" { location = "REGION" code_repository_index_id = "INDEX_NAME" }
Haz los cambios siguientes:
INDEX_NAME
: el nombre del índice. Importante: Anota el nombre del índice. Lo necesitarás para varios pasos de este documento.PROJECT_ID
: tu ID de proyecto Google Cloud .REGION
: la región configurada en Developer Connect de tu Google Cloud proyecto.
La creación de índices suele tardar 30 minutos en completarse, pero puede llevar hasta una hora.
Google limita el número de índices de repositorios de código a uno por proyecto y organización.
Controla el acceso a tu índice mediante grupos de repositorios. Un grupo de repositorios es un contenedor de la configuración de indexación, que incluye repositorios y sus patrones de rama. Los grupos de repositorios se han diseñado para ofrecer un control de IAM granular, lo que permite a los desarrolladores acceder a los datos indexados de esos grupos, donde tienen el permiso
cloudaicompanion.repositoryGroups.use
.Los grupos de repositorios contienen repositorios de Developer Connect o enlaces del mismo proyecto y ubicación.
Los administradores realizan las siguientes acciones:
- Crea el recurso de índice del repositorio de código.
- En el mismo proyecto y ubicación, configura una conexión de Developer Connect.
- Vincula repositorios de Git en la conexión.
- Obtener los nombres de recursos de los enlaces, elegir el patrón de rama que se va a indexar para cada enlace y colocarlo en uno o varios grupos de repositorios.
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" } }
Haz los cambios siguientes:
REPOSITORY_GROUP
: nombre del grupo de repositorios, comodefault
.REPOSITORY_RESOURCE_NAME
: nombre del repositorio dentro de la conexión de Developer Connect. Para encontrar el nombre del repositorio, ve a la página Repositorios de Git de la consola 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 del recurso.BRANCH_NAMES
: nombre de las ramas que quieras indexar, comomain|dev
.
También puedes crear un grupo de repositorios con los 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 a partir de 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 cifrar y controlar tus datos con una clave de cifrado gestionada por el cliente (CMEK) a través de Cloud Key Management Service. Para obtener más información sobre cómo usar una CMEK, consulta Encriptar datos con claves de encriptado gestionadas por el cliente.
Asigna roles de gestión de identidades y accesos al grupo del repositorio 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 asignar el rol de gestión de identidades y accesos de usuario de grupos de repositorios de Cloud AI Companion (
roles/cloudaicompanion.repositoryGroupsUser
), que contiene el permiso de gestión de identidades y accesoscloudaicompanion.repositoryGroups.user
necesario, al grupo de repositorios de una de las siguientes formas:- Concede a las entidades principales permiso para acceder a todo el índice.
Concede a los principales acceso a un subconjunto del índice.
Todo el índice
Para vincular una política de gestión de identidades y accesos a un proyecto, usa el comando
projects add-iam-policy-binding
en un entorno de shell:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Haz los cambios siguientes:
PRINCIPAL
: la dirección de correo del principal que necesita acceso. Por ejemplo,user:test-user@gmail.com
para un usuario ogroup:admins@example.com
para un grupo.Para obtener más información, consulta
gcloud projects set-iam-policy
.
Cuando se te pida que especifiques una condición, introduce
None
.
Subconjunto del índice
Puedes crear varios grupos de repositorios y asignar roles de gestión de identidades y accesos a diferentes principales de gestión de identidades y accesos.
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 un enlace:
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"] }
Haz los cambios siguientes:
GROUP_NAME
: el nombre del grupo de repositorios que has creado en un paso anterior para controlar el acceso a tu índice mediante grupos de repositorios.
Comprobar el estado de indexación
En función del número de repositorios que quieras indexar y de su tamaño, el proceso 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 recoge los cambios que se hayan hecho en el repositorio.
Busca los registros de
indexing
. Para obtener más información, consulta el lenguaje de consulta de registros.Consola
En la Google Cloud consola, ve a Explorador de registros.
Usa el filtro de nombres de registro para ver los registros de
indexing
.
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""
Sustituye
PROJECT_ID
por el ID del proyecto en el que se encuentra el grupo de repositorios.Por ejemplo, para ver los errores de los registros
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 de repositorios individuales. Por ejemplo:
- Operación completada:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- Fallo:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Operación completada:
- Fin de la indexación del repositorio. Por ejemplo:
- Operación completada:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Fallo:
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.
- Operación completada:
En los estados del índice,
REPOSITORY_NAME
es el repositorio que quieres revisar.- Inicio de la indexación del repositorio (por ejemplo,
Revisa los errores de indexación asociados, como los siguientes:
- No se ha podido obtener el repositorio.
- No se han podido mostrar los archivos del repositorio.
- No se ha podido obtener la información del repositorio del índice.
- No se han podido recuperar los archivos del índice.
- Error interno.
Usar la personalización del código
Una vez que hayas configurado la personalización del código, empezarás a ver sugerencias de autocompletado y generación de código que pueden basarse en el código privado que hayas indexado, además de los resultados de la detección de todo el código base.
Para obtener más información sobre cómo usar la personalización de código y las prácticas recomendadas, consulta el artículo Usar la personalización de código.
Desactivar la personalización del código
Selecciona una de las opciones siguientes:
Consola
En la Google Cloud consola, ve a la página Productos de Gemini.
Se carga la página Productos de Gemini.
En el menú de navegación, haga clic en Personalización del código.
Se carga la página Personalización de código.
Para eliminar el índice, haz clic en Eliminar.
Se muestra un mensaje de advertencia. Si quieres continuar y eliminar el índice, introduce su nombre y haz clic en Eliminar.
CLI
Para obtener una lista de 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
Haz los cambios siguientes:
REGION
: la región configurada en Developer Connect de tu Google Cloud proyecto. Ten en cuenta que los comandos fallarán si especificas una región no admitida. Consulta las limitaciones de personalización de código para ver una lista de las regiones admitidas.PROJECT_ID
: tu ID de proyecto Google Cloud .INDEX_NAME
: nombre del índice que has creado en un paso anterior para crear un índice.
Para eliminar 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 los pasos anteriores con cada grupo de repositorios hasta que hayas eliminado todos los grupos de repositorios del índice.
Opcional: Para eliminar el índice, usa el comando
gemini code-repository-indexes delete
en un entorno de shell:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Siguientes pasos
- Empieza a usar Gemini Code Assist:
- VS Code, IntelliJ y otros IDEs de JetBrains compatibles: Programar con Gemini Code Assist
- Editor de Cloud Shell: Programar con Gemini Code Assist
- Cloud Workstations: Programar con Gemini Code Assist
- Consulta cómo usar la personalización de código y las prácticas recomendadas.
- Consulta cómo encriptar datos con claves de encriptado gestionadas por el cliente (CMEK).
- Más información sobre Developer Connect
- Consulta cómo y cuándo usa Gemini para Google Cloud tus datos.