Configurare e utilizzare la personalizzazione del codice di Gemini Code Assist

Questo documento descrive come configurare Personalizzazione del codice di Gemini Code Assist connettendo Gemini Code Assist ai tuoi repository di codice privati. Questa funzionalità ti consente di ricevere consigli sul codice, che si basano sulle librerie interne, sulle API private e sullo stile di programmazione della tua organizzazione.

Prima di iniziare

  • Contatta il tuo rappresentante di vendita per ottenere l'accesso alla personalizzazione del codice di Gemini Code Assist.
  • Assicurati di avere un Account amministratore di Google Cloud per apportare modifiche al progetto.
  • Configura Gemini Code Assist.
  • Creare o configurare gli account utente finale. Tutti gli sviluppatori della tua organizzazione che utilizza Gemini Code Assist deve avere un'identità utente in a Google Cloud che dispone dell'autorizzazione per accedere al tuo progetto Google Cloud. Per ulteriori informazioni, consulta Concedere i ruoli nella console Google Cloud. Assicurati che ogni utente abbia i seguenti ruoli:
  • Configura Developer Connect e poi connettiti al tuo repository GitHub.com o GitLab.com:

    Inoltre, tieni presente che la personalizzazione del codice supporta solo Connessioni Developer Connect in us-central1 e europe-west1 località (regioni).

  • In un ambiente shell, esegui il comando gcloud components update per assicurarti di aver aggiornato tutti i componenti installati di Google Cloud CLI in all'ultima versione.

Scegli quali repository privati sono collegati

Come best practice, assicurati di connettere repository che:

  • Prepara un codice con uno stile o una struttura simile a ciò che vuoi agli sviluppatori di Google Cloud.
  • Avere API o librerie private che vuoi chiamare dal tuo codebase attuale.

(Facoltativo) Scegliere i file da non indicizzare

Per impostazione predefinita, la personalizzazione del codice indicizza tutti i file di codice supportati nei repository specificati.

In molti casi, potresti avere file o sottoalberi specifici che non vuoi indicizzare. Ad esempio:

  • Informazioni altamente sensibili con accesso limitato all'interno della tua organizzazione
  • Codice obsoleto o non più supportato
  • Codice generato automaticamente o temporaneo

Per evitare l'esposizione del codice che non vuoi indicizzare, puoi utilizzare il ramo pattern a controllare l'accesso all'indice e utilizzare un ramo stabile, come main.

In alternativa, puoi anche escludere i file dall'indice creando un file .aiexclude.

Crea un indice

La personalizzazione del codice si basa su un indice per analizzare ed esaminare il tuo repository al fine di eseguire ricerche e suggerire la generazione di codice più rapidamente.

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

    Activate Cloud Shell

  2. Per creare l'indice, utilizza il comando Comando gemini code-repository-indexes create:

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

    Sostituisci quanto segue:

    • INDEX_NAME: il nome dell'indice.
    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • REGION: una regione supportata, us-central1 o europe-west1, che hai configurato in Developer Connect nel tuo progetto Google Cloud.

In genere la creazione dell'indice richiede 30 minuti, ma potrebbe richiedere fino a all'ora.

Google limita il numero di indici del repository di codice a uno per ogni progetto e dell'organizzazione. Se hai bisogno di più indici del repository di codice, puoi richiedere una quota più alta.

Controlla l'accesso all'indice utilizzando i gruppi di repository

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

    Activate Cloud Shell

  2. Per creare un gruppo di repository, utilizza 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": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branch_pattern": "BRANCH_NAMES"}]'
    

    Sostituisci quanto segue:

    • REPOSITORY_GROUP: nome del gruppo di repository, ad esempio default.
    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • INDEX_NAME: il nome dell'indice creato in un passaggio precedente per creare un indice.
    • REGION: una regione supportata, us-central1 o europe-west1, che hai configurato in Developer Connect nel tuo progetto Google Cloud.
    • INDEX_CONNECTION: collegamento dell'indice creato in un passaggio precedente per creare un indice.
    • BRANCH_NAMES: il nome dei rami da indicizzare, ad esempio main|dev.
    • REPOSITORY: il repository che vuoi indicizzare. Tu devi specificare almeno un repository e puoi specificare più i repository in base alle esigenze.

Puoi anche creare un gruppo di repository con i repository definiti in un file JSON (o YAML), nel seguente formato:

JSON

[
  {
      "resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branchPattern": "main|dev"
  },
  {
      "resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branchPattern": "dev"
  }
]

YAML

- resource: projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY
branchPattern: main|dev
- resource: projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY
branchPattern: dev

Per creare un gruppo di repository in base a un file JSON o YAML, utilizza il 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

Concedi il ruolo IAM al gruppo del repository in un progetto

Ricevi suggerimenti solo dai repository nell'indice. Ogni repository appartiene a uno o più gruppi di repository. Per accedere ai suggerimenti, devi concedi il ruolo IAM Utente gruppi di repository Cloud AI Companion (roles/cloudaicompanion.repositoryGroupsUser), che contiene i valori obbligatori Autorizzazione IAM cloudaicompanion.repositoryGroups.user: di gruppo di repository in uno dei seguenti modi:

  • Concedi alle entità l'autorizzazione ad accedere all'intero indice.
  • Concedi alle entità l'accesso a un sottoinsieme dell'indice.

Concedi alle entità l'autorizzazione ad accedere all'intero indice

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

    Activate Cloud Shell

  2. Per associare un criterio IAM per un progetto, utilizza Comando projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member='PRINCIPAL' \
        --role='roles/cloudaicompanion.repositoryGroupsUser'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto in cui si trova il repository gruppo.
    • PRINCIPAL: l'indirizzo email del principale che ha bisogno di accedere, ad esempio user:test-user@gmail.com per un singolo utente o group:admins@example.com per un gruppo.

    Per ulteriori informazioni, vedi gcloud projects set-iam-policy

  3. Quando ti viene chiesto di specificare una condizione, inserisci None.

Concedi alle entità l'accesso a un sottoinsieme dell'indice

Puoi creare più gruppi di repository e assegnare ruoli IAM a diverse entità IAM.

Per configurare un criterio IAM devi preparare la File JSON o YAML dei criteri IAM, che conterrà un elenco Gruppi IAM e ruoli assegnati. Ad esempio:

bindings:
- members:
  - group:my-group@example.com
  - user:test-user@example.com
  role: roles/cloudaicompanion.repositoryGroupsUser

Per ulteriori dettagli e sintassi, consulta Informazioni sui criteri di autorizzazione.

Per impostare il criterio IAM, utilizza 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

Sostituisci quanto segue:

Controllare lo stato dell'indicizzazione

A seconda del numero di repository da indicizzare e delle relative dimensioni, l'indicizzazione dei contenuti può richiedere fino a 24 ore. Per repository di grandi dimensioni, l'indicizzazione può richiedere più tempo. L'indicizzazione viene eseguita una volta ogni 24 ore e rileva eventuali modifiche apportate al repository.

  1. Nella console Google Cloud, vai a Esplora log.

    Vai a Esplora log

  2. Utilizza il filtro dei nomi dei log per visualizzare i log di indexing o cerca l'indicizzazione con il comando seguente:

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

    Sostituisci PROJECT_ID con l'ID progetto in cui in cui si trova il gruppo di repository.

    Ad esempio, per visualizzare gli errori nei log indexing, esegui questo comando: :

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

    Per ulteriori informazioni, consulta Linguaggio delle query di Logging.

  3. Esamina gli stati di indicizzazione associati, ad esempio:

    • Inizio dell'indicizzazione del repository, ad esempio Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Fine dell'indicizzazione di singoli repository, ad esempio:
      • Operazione riuscita: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Errore: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Fine dell'indicizzazione del repository, ad esempio:
      • Operazione riuscita: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Errore: 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.

    Negli stati dell'indice, REPOSITORY_NAME è il repository che vuoi rivedere.

  4. Esamina gli errori di indicizzazione associati, ad esempio:

    • Impossibile recuperare il repository.
    • Impossibile elencare i file di repository.
    • Impossibile recuperare le informazioni del repository dall'indice.
    • Impossibile recuperare i file dall'indice.
    • Errore interno.

Utilizza la personalizzazione del codice

Una volta configurata la personalizzazione del codice, gli utenti inizieranno a vedere suggerimenti di completamento e generazione del codice che possono essere basati sul codice privato che hai indicizzato, oltre ai risultati della consapevolezza completa del codebase.

Disattivare la personalizzazione del codice

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

    Activate Cloud Shell

  2. Per elencare tutti i gruppi di repository per l'indice attuale, utilizza la classe 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
    

    Sostituisci quanto segue:

    • REGION: una regione supportata, us-central1 o europe-west1, che hai configurato in Developer Connect nel tuo progetto Google Cloud
    • PROJECT_ID: il tuo ID progetto Google Cloud.
    • INDEX_NAME: nome dell'indice che hai creato in un passaggio precedente per creare un indice.
  3. Per eliminare un gruppo di repository dall'indice attuale, utilizza la classe 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. Ripeti il passaggio 3 per ogni gruppo di repository finché non elimini tutti i repository gruppi dall'indice.

  5. (Facoltativo) Per eliminare l'indice, utilizza il comando gemini code-repository-indexes delete:

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

Passaggi successivi