Este documento describe cómo configurar la personalización de código de Gemini Code Assist conectándolo a sus repositorios de código privados. Esta función le permite recibir recomendaciones de código basadas en las bibliotecas internas, las API privadas y el estilo de programación de su organización.
Antes de empezar
- Configurar Gemini Code Assist con una suscripción Enterprise .
- Cree o configure cuentas de usuario final. Todos los desarrolladores de su organización que utilicen Gemini Code Assist deben tener una identidad de usuario enGoogle Cloud que tiene permiso para acceder a tu Google Cloud proyecto. Para obtener más información, consulte Roles de concesión en el Google Cloud consola . Asegúrese de que cada usuario tenga los siguientes roles:
Configure Developer Connect y luego conéctese a su repositorio de GitHub.com, GitLab.com o Bitbucket.org:
GitHub
GitLab
Bitbucket
Además, tenga en cuenta que la personalización del código solo admite conexiones de Developer Connect en las siguientes ubicaciones (regiones):
-
us-central1
-
europe-west1
-
asia-southeast1
En un entorno de shell, ejecute el comando
gcloud components update
para asegurarse de haber actualizado todos los componentes instalados de la CLI de gcloud a la última versión. Para este paso, puede instalar e inicializar la CLI de gcloud o usar el Editor de Cloud Shell .gcloud components update
Elija qué repositorios privados están conectados
Como práctica recomendada, asegúrese de conectar repositorios que:
- Tenga un código que tenga un estilo o estructura similar a lo que quiere que escriban sus desarrolladores.
- Tiene bibliotecas o API privadas que le gustaría llamar desde su base de código actual.
(Opcional) Elija qué archivos no están indexados
De forma predeterminada, la personalización del código indexa todos los archivos de código compatibles en los repositorios especificados.
Para evitar la exposición de código que no desea indexar, puede usar patrones de rama para controlar el acceso a su índice y usar una rama estable, como main
.
Alternativamente, también puede excluir archivos del índice creando un archivo .aiexclude
.
Crear un índice
La personalización del código se basa en un índice para analizar y analizar su repositorio para obtener sugerencias y búsquedas de generación de código más rápidas.
Interfaz de línea de comandos de gcloud
Para crear el índice, en un entorno de shell, utilice el comando gemini code-repository-indexes create
:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
Terraformar
resource "google_gemini_code_repository_index" "example" {
location = "REGION"
code_repository_index_id = "INDEX_NAME"
}
Reemplace lo siguiente:
-
INDEX_NAME
: el nombre de su índice. Importante : Registre el nombre de su índice. Lo necesitará para varios pasos de este documento. -
PROJECT_ID
: su Google Cloud Identificación del proyecto. -
REGION
: una región compatible, como se indica en la sección Antes de comenzar de esta página, que haya configurado en Developer Connect en su Google Cloudproyecto.
La creación de un índice generalmente demora 30 minutos, pero podría demorar hasta una hora.
Google limita la cantidad de índices de repositorio de código a uno para cada proyecto y organización.
Controle el acceso a su índice mediante grupos de repositorios
Un grupo de repositorios es un contenedor para la configuración de indexación, que incluye repositorios y sus patrones de ramificación. Los grupos de repositorios están diseñados para un control granular de IAM, lo que permite a los desarrolladores acceder a los datos indexados de dichos 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:
- Crear recurso de índice de repositorio de código.
- En el mismo proyecto y ubicación, configure una nueva conexión de Developer Connect.
- Vincular repositorios de Git en la conexión.
Obtenga los nombres de recursos de los enlaces, elija un patrón de rama para indexar para cada enlace y colóquelo en uno o varios grupos de repositorios.
Interfaz de línea de comandos de gcloud
Para crear un grupo de repositorios, en un entorno de shell, utilice 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"}]'
Terraformar
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"
}
}
Reemplace lo siguiente:
-
REPOSITORY_GROUP
: nombre del grupo de repositorios, como por ejemplodefault
. -
PROJECT_ID
: su Google Cloud Identificación del proyecto. -
REGION
: una región compatible, como se indica en la sección Antes de comenzar de esta página, que ha configurado en Developer Connect en su Google Cloudproyecto. -
INDEX_NAME
: nombre del índice que creó en un paso anterior para crear un índice . -
REPOSITORY_RESOURCE_NAME
: nombre del repositorio dentro de la conexión de Developer Connect. Para encontrar el nombre del repositorio, vaya a la página de Developer Connect en Google Cloud En la consola, en la pestaña Repositorios , busque el ID de conexión en la columna Conexión de la tabla. Para copiar el nombre del recurso, haga clic en el menú more_vert para ver más opciones y seleccione Copiar ruta del recurso . -
BRANCH_NAMES
: nombre de las ramas que desea indexar, comomain|dev
.
También puede 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, utilice 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 prefiere, puede cifrar y controlar sus datos con una clave de cifrado administrada por el cliente (CMEK) a través del Servicio de administración de claves en la nube . Para obtener más información sobre el uso de una CMEK, consulte Cifrar datos con claves de cifrado administradas por el cliente .
Otorgar el rol de IAM al grupo de repositorios en un proyecto
Solo recibe sugerencias de los repositorios del índice. Cada repositorio pertenece a uno o varios grupos de repositorios. Para acceder a las sugerencias, debe otorgar al grupo de repositorios 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, mediante una de las siguientes maneras:
- Otorgar a los directores permiso para acceder a todo el índice.
- Otorgar a los directores acceso a un subconjunto del índice.
Otorgar a los directores permiso para acceder a todo el índice
Para vincular una política de IAM para un proyecto, en un entorno de shell, utilice el comando
projects add-iam-policy-binding
:gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
Reemplace lo siguiente:
-
PROJECT_ID
: el ID del proyecto donde se encuentra el grupo del repositorio. -
PRINCIPAL
: la dirección de correo electrónico del principal que necesita acceso, por ejemplo,user:test-user@gmail.com
para un individuo ogroup:admins@example.com
para un grupo.
Para obtener más información, consulte
gcloud projects set-iam-policy
.-
Cuando se le solicite que especifique una condición, ingrese
None
.
Otorgar a los directores acceso a un subconjunto del índice
Puede crear varios grupos de repositorios y asignar roles de IAM a diferentes entidades principales de IAM.
Interfaz de línea de comandos de gcloud
Para configurar una política de IAM, debe 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, consulte Descripción de las políticas de permisos .
Para configurar la política de IAM, en un entorno de shell, utilice 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
Reemplace lo siguiente:
-
GROUP_NAME
: el nombre del grupo de repositorios que creó en un paso anterior para controlar el acceso a su índice mediante grupos de repositorios . -
POLICY_FILE
: la política de IAM. -
REGION
: una región compatible, como se indica en la sección Antes de comenzar de esta página, que haya configurado en Developer Connect en suGoogle Cloud proyecto. INDEX_NAME
: el nombre del índice que creó en un paso anterior para crear un índice .Para obtener más información, consulte
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Terraformar
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"]
}
Reemplace lo siguiente:
-
GROUP_NAME
: el nombre del grupo de repositorios que creó en un paso anterior para controlar el acceso a su índice mediante grupos de repositorios . -
REGION
: una región compatible, como se indica en la sección Antes de comenzar de esta página, que haya configurado en Developer Connect en suGoogle Cloud proyecto. INDEX_NAME
: el nombre del índice que creó en un paso anterior para crear un índice .Para obtener más información, consulte
gcloud gemini code-repository-indexes repository-groups set-iam-policy
.
Comprobar el estado de indexación
Según la cantidad de repositorios que desee indexar y su tamaño, la indexación del contenido puede tardar hasta 24 horas. En el caso de repositorios grandes, la indexación puede tardar más. La indexación se realiza cada 24 horas y registra los cambios realizados en el repositorio.
Busque los registros
indexing
. Para más información, consulte Lenguaje de consulta de registro .Consola
En el Google Cloud consola, vaya al Explorador de registros .
Utilice el filtro de nombres de registro para ver los registros
indexing
.
Interfaz de línea de comandos de gcloud
Para buscar los registros de indexación, en un entorno de shell, utilice el comando
logging read
:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
Reemplace
PROJECT_ID
con el ID del proyecto donde se encuentra el grupo del repositorio.Por ejemplo, para ver errores en los registros
indexing
, ejecute el siguiente comando:gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
Revise 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:
- Éxito:
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.
- Éxito:
- Fin de la indexación del repositorio, por ejemplo:
- Éxito:
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.
- Éxito:
En los estados del índice,
REPOSITORY_NAME
es el repositorio que desea revisar.- Inicio de la indexación del repositorio (por ejemplo,
Revise los errores de indexación asociados, como los siguientes:
- No se pudo obtener el repositorio.
- No se pudieron listar los archivos del repositorio.
- No se pudo recuperar la información del repositorio del índice.
- No se pudieron recuperar archivos del índice.
- Error interno.
Utilice la personalización del código
Una vez que haya configurado la personalización del código, comenzará a ver sugerencias de finalización y generación de código que pueden basarse en el código privado que haya indexado, además de los resultados del conocimiento total de la base del código.
Para obtener más información sobre el uso de la personalización de código y las mejores prácticas, consulte Usar personalización de código .
Desactivar la personalización del código
Para enumerar todos los grupos de repositorios para el índice actual, en un entorno de shell, utilice 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
Reemplace lo siguiente:
-
REGION
: una región compatible, como se indica en la sección Antes de comenzar de esta página, que haya configurado en Developer Connect en suGoogle Cloud proyecto. -
PROJECT_ID
: su Google Cloud Identificación del proyecto. -
INDEX_NAME
: nombre del índice que creó en un paso anterior para crear un índice .
-
Para eliminar un grupo de repositorios del índice actual, utilice 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
Repita el paso 3 para cada grupo de repositorios hasta eliminar todos los grupos de repositorios del índice.
Opcional: Para eliminar el índice, en un entorno de shell, utilice el comando
gemini code-repository-indexes delete
:gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
¿Qué sigue?
- Comience a utilizar Gemini Code Assist:
- VS Code, IntelliJ y otros IDE de JetBrains compatibles: código con Gemini Code Assist
- Editor de Cloud Shell: código con Gemini Code Assist
- Estaciones de trabajo en la nube: Codifique con Gemini Code Assist
- Aprenda a utilizar la personalización de código y las mejores prácticas.
- Aprenda a cifrar datos con claves de cifrado administradas por el cliente (CMEK) .
- Obtenga más información sobre Developer Connect .
- Descubre cómo y cuándo Géminis te acompaña Google Cloud utiliza sus datos