Configura y usa la personalización de código de Gemini Code Assist

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 la información bibliotecas, APIs privadas y el estilo de programación de tu organización.

Antes de comenzar

  • Comunícate con tu representante de ventas para obtener acceso Personalización del código de Gemini Code Assist
  • Asegúrate de tener una cuenta de administrador de Google Cloud para realizar cambios en tu proyecto.
  • Configura Gemini Code Assist.
  • Crear o configurar cuentas de usuario final Todos los desarrolladores de tu organización que use Gemini Code Assist debe tener una identidad de usuario en Google Cloud que tiene permiso para acceder a tu proyecto de Google Cloud. Para obtener más información, consulta Asigna roles en la consola de Google Cloud. Asegúrate de que cada usuario tenga los siguientes roles:
  • Configurar Developer Connect Luego, conéctate a tu repositorio de GitHub.com o GitLab.com:

    Además, ten 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, ejecuta el comando gcloud components update para asegurarte de que hayas actualizado todos los componentes instalados de Google Cloud CLI a la versión más reciente.

Elige qué repositorios privados están conectados

Como práctica recomendada, asegúrate de conectar repositorios que cumplan con los siguientes requisitos:

  • Utiliza un código que tenga un estilo o una estructura similar al que deseas que que los desarrolladores escriban.
  • 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 del código indexa todos los archivos de código compatibles en los repositorios especificados.

En muchos casos, es posible que tengas archivos o subárboles específicos que no quieras indexar. Por ejemplo:

  • Información altamente sensible con acceso limitado dentro de tu organización
  • Código antiguo o obsoleto
  • Código temporal o generado automáticamente

Para evitar la exposición de código que no quieres indexar, puedes usar la rama patrones para controlar el acceso a tu índice y usar una rama estable, como main.

Como alternativa, también puedes excluir archivos del índice crear un archivo .aiexclude

Crea un índice

La personalización del código depende de un índice para analizar y analizar tu repositorio para sugerencias y búsquedas y generación de código más rápidas.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Para crear el índice, 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.
    • PROJECT_ID: Es el ID de tu proyecto de Google Cloud.
    • REGION: Es una región admitida, como se indica en el 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 el número de índices de repositorios de código a uno para cada proyecto y para que se adapten a las necesidades de tu organización. Si necesitas más índices de repositorio de código, puedes solicitar una cuota más alta.

Controla el acceso a tu índice con grupos de repositorios

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Para crear un grupo de repositorios, 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. como default.
    • PROJECT_ID: Es el ID de tu proyecto de Google Cloud.
    • REGION: Una región compatible, 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.
    • 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 de 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 obtener más opciones y selecciona Copiar ruta de acceso del recurso.
    • BRANCH_NAMES: Es el nombre de las ramas que deseas. índice, como main|dev.

También puedes crear un grupo de repositorios con repositorios definidos en un archivo JSON (o YAML), el formato de la siguiente manera:

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, 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

Otorga un rol de IAM al grupo de repositorios de un proyecto

Solo recibes sugerencias de repositorios del índice. Cada repositorio pertenecen 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

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Para vincular una política de IAM a un proyecto, 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 repositorio. grupo.
    • PRINCIPAL: Es la dirección de correo electrónico de la principal. que necesita acceso, por ejemplo, user:test-user@gmail.com para una persona o group:admins@example.com para un grupo.

    Para obtener más información, consulta gcloud projects set-iam-policy

  3. Cuando se te solicite especificar una condición, ingresa None.

Otorga a las principales acceso a un 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 los grupos de IAM 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 detalles y sintaxis, consulta Comprende las políticas de permisos.

Para establecer la política de IAM, 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:

Cómo verificar el estado de indexación

Según la cantidad de repositorios que quieras indexar y su la indexación de contenido puede tardar hasta 24 horas. En el caso de los repositorios grandes, la indexación puede tardar más. La indexación se produce una vez cada 24 horas y detecta los cambios. que se realizaron en el repositorio.

  1. En la consola de Google Cloud, ve al Explorador de registros.

    Ir al Explorador de registros

  2. Usa el filtro de nombres de registros para ver los registros de indexing o busca la indexación con el siguiente comando:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
    

    Reemplaza PROJECT_ID por el ID del proyecto, en el que el grupo de repositorios.

    Por ejemplo, para ver errores en los registros de indexing, ejecuta el siguiente comando: :

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    

    Para obtener más información, consulta Lenguaje de consulta de Logging.

  3. 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:
      • 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.
    • 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.

    En los estados del índice, REPOSITORY_NAME es el repositorio que quieres revisar.

  4. Revisa los errores de indexación asociados, como los siguientes:

    • No se pudo recuperar el repositorio.
    • No se pudo mostrar la lista de 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, los usuarios comenzarán 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 detección completa de la base de código.

Desactiva la personalización de código

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Para enumerar todos los grupos de repositorios del índice actual, 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 compatible, 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.
    • 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.
  3. 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
    
  4. Repite el paso 3 para cada grupo de repositorios hasta que borres todo el repositorio. grupos del índice.

  5. Opcional: Para borrar el índice, usa el comando gemini code-repository-indexes delete:

    gcloud gemini code-repository-indexes delete INDEX_NAME \
        --location=REGION \
        --project=PROJECT_ID
    

¿Qué sigue?