En este documento, se describe cómo configurar la personalización de código de Gemini Code Assist en la consola de Google Cloud , con Google Cloud CLI o con Terraform conectando Gemini Code Assist a tus repositorios de código privados. 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.
Para configurar la personalización de código de Gemini Code Assist en la consola de Google Cloud , consulta Cómo configurar la personalización de código de Gemini Code Assist.
Antes de comenzar
- Configura Gemini Code Assist con una suscripción a Enterprise.
Verifica que tengas los siguientes roles de Identity and Access Management (IAM) en el proyecto propietario de la suscripción:
- Administrador de índices del repositorio de código (
roles/cloudaicompanion.codeRepositoryIndexesAdmin
) - Usuario de Gemini para Google Cloud (
roles/cloudaicompanion.user
)
- Administrador de índices del repositorio de código (
Crear o configurar cuentas de usuario 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 . Verifica que cada usuario tenga los siguientes roles:
Elige qué repositorios se indexan
Como práctica recomendada, debes 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 deseas 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
.
Configura la personalización de código de Gemini Code Assist
Selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página Productos con Gemini.
Se carga la página Productos con Gemini.
En el menú de navegación, haz clic en Personalización del código.
Se carga la página Personalización de código.
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.
Haz clic en Crear y configura los detalles del índice:
- Selecciona la región que se configuró en Developer Connect en tu proyecto Google Cloud .
- Ingresa un nombre para tu índice. Anota el nombre de tu índice. Lo necesitarás para completar varios pasos en este documento.
Haz clic en Crear.
Por lo general, la creación del índice tarda 30 minutos en completarse, pero puede demorar hasta una hora. Cuando finalice la indexación, recibirás una notificación en la Google Cloud consola.
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.
En la página Personalización de código para Gemini Code Assist, haz clic en Agregar repositorios y, luego, selecciona Agregar repositorios de origen.
Se muestra una lista de los repositorios existentes en Developer Connect para la región que configuraste en el paso anterior para crear el índice.
Si necesitas agregar repositorios nuevos al grupo de repositorios, haz clic en Vincular repositorio y sigue los pasos que se indican en la consola de Google Cloud .
Además, puedes seleccionar y, luego, editar uno o más repositorios para agregar una rama nueva.
Selecciona el grupo de repositorios al que deseas agregar repositorios nuevos. Como alternativa, haz clic en Crear un grupo de repositorios nuevo para crear y configurar un grupo de repositorios nuevo.
Para comenzar a indexar los repositorios seleccionados, haz clic en Index.
El tiempo de indexación varía según el tamaño de los repositorios.
CLI
- Verifica 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 hayas 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
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.
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
Reemplaza lo siguiente:
INDEX_NAME
: Es el nombre de tu índice. Importante: Anota el nombre del índice. La necesitarás para varios pasos de este documento.PROJECT_ID
: Es el ID de tu proyecto de Google Cloud .REGION
: Es la región configurada 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 de IAM detallado, 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 el recurso Code Repository Index.
- En el mismo proyecto y ubicación, configura una nueva conexión de Developer Connect.
- Vincula repositorios de Git en la conexión.
- Obtener los nombres de recursos de los vínculos, elegir el patrón de ramas para indexar cada vínculo y colocarlo 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"}]'
Reemplaza lo siguiente:
REPOSITORY_GROUP
: Es el nombre del grupo de repositorios, comodefault
.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 Repositorios de Git 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
: 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 roles 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 IAMcloudaicompanion.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.
Índice completo
Para vincular una política de IAM para 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:
PRINCIPAL
: 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
.
Subconjunto del índice
Puedes crear varios grupos de repositorios y asignar roles de IAM a diferentes principales de IAM.
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.Para obtener más información, consulta
gcloud gemini code-repository-indexes repository-groups set-iam-policy
Terraform
Verifica 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 tu repositorio y obtener sugerencias y búsquedas de generación de código más rápido.
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
: Es la región configurada 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 de IAM detallado, 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 el recurso Code Repository Index.
- En el mismo proyecto y ubicación, configura una nueva conexión de Developer Connect.
- Vincula repositorios de Git en la conexión.
- Obtener los nombres de los recursos de los vínculos, seleccionar el patrón de ramas para indexar cada vínculo 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" } }
Reemplaza lo siguiente:
REPOSITORY_GROUP
: Es el nombre del grupo de repositorios, comodefault
.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 Repositorios de Git 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 roles 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 IAMcloudaicompanion.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.
Índice completo
Para vincular una política de IAM para 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:
PRINCIPAL
: 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
.
Subconjunto del índice
Puedes crear varios grupos de repositorios y asignar roles de IAM a diferentes principales de IAM.
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.
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
.
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.
Usa 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 de código
Selecciona una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página Productos con Gemini.
Se carga la página Productos con Gemini.
En el menú de navegación, haz clic en Personalización del código.
Se carga la página Personalización de código.
Para borrar el índice, haz clic en Borrar índice.
Se mostrará un mensaje de advertencia. Si quieres continuar y borrar el índice, ingresa su nombre y, luego, haz clic en Borrar.
CLI
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
: Es la región configurada en Developer Connect en tu proyecto de Google 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 los pasos anteriores 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.