Mengonfigurasi dan menggunakan penyesuaian kode Gemini Code Assist

Dokumen ini menjelaskan cara menyiapkan penyesuaian kode Gemini Code Assist dengan menghubungkan Gemini Code Assist ke repositori kode pribadi Anda. Fitur ini memungkinkan Anda menerima rekomendasi kode, yang diambil dari library internal, API pribadi, dan gaya coding organisasi Anda.

Sebelum memulai

Memilih repositori pribadi yang terhubung

Sebagai praktik terbaik, pastikan Anda menghubungkan repositori yang:

  • Memiliki kode dengan gaya atau struktur yang mirip dengan yang Anda inginkan untuk ditulis developer.
  • Memiliki library atau API pribadi yang ingin Anda panggil dari codebase saat ini.

(Opsional) Pilih file yang tidak diindeks

Secara default, penyesuaian kode mengindeks semua file kode yang didukung di repositori yang Anda tentukan.

Dalam banyak skenario, Anda mungkin memiliki file atau sub-pohon tertentu yang tidak ingin diindeks. Contoh:

  • Informasi yang sangat sensitif dengan akses terbatas di dalam organisasi Anda
  • Kode lama atau yang tidak digunakan lagi
  • Kode yang dibuat secara otomatis atau kode sementara

Untuk mencegah eksposur kode yang tidak ingin Anda indeks, Anda dapat menggunakan pola cabang untuk mengontrol akses ke indeks dan menggunakan cabang yang stabil, seperti main.

Atau, Anda juga dapat mengecualikan file dari indeks dengan membuat file .aiexclude.

Membuat indeks

Penyesuaian kode mengandalkan indeks untuk menganalisis dan mengurai repositori Anda guna mendapatkan saran dan pencarian pembuatan kode yang lebih cepat.

Untuk membuat indeks, di lingkungan shell, gunakan perintah gemini code-repository-indexes create:

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

Ganti kode berikut:

  • INDEX_NAME: nama indeks Anda. Penting: Catat nama indeks Anda. Anda memerlukannya untuk beberapa langkah dalam dokumen ini.
  • PROJECT_ID: Project ID Google Cloud Anda.
  • REGION: region yang didukung, seperti yang dinyatakan di bagian Sebelum memulai di halaman ini, yang telah Anda konfigurasi di Developer Connect di project Google Cloud Anda.

Pembuatan indeks biasanya memerlukan waktu 30 menit untuk diselesaikan, tetapi mungkin memerlukan waktu hingga satu jam.

Google membatasi jumlah indeks repositori kode menjadi satu untuk setiap project dan organisasi.

Mengontrol akses ke indeks menggunakan grup repositori

Grup repositori adalah penampung untuk konfigurasi pengindeksan, yang mencakup repositori dan pola cabangnya. Grup repositori dirancang untuk kontrol IAM terperinci, yang memberi developer akses ke data yang diindeks dari grup tersebut, dengan izin cloudaicompanion.repositoryGroups.use.

Grup repositori berisi repositori Developer Connect, atau link, dari project dan lokasi yang sama.

Administrator melakukan tindakan berikut:

  • Buat resource Indeks Repositori Kode.
  • Di project dan lokasi yang sama, konfigurasikan koneksi Developer Connect baru.
  • Tautkan repo Git dalam koneksi.
  • Dapatkan nama resource link, pilih pola cabang untuk diindeks untuk setiap link, lalu masukkan ke satu atau beberapa grup repositori.

Untuk membuat grup repositori, di lingkungan shell, gunakan perintah 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"}]'

Ganti kode berikut:

  • REPOSITORY_GROUP: nama grup repositori, seperti default.
  • PROJECT_ID: Project ID Google Cloud Anda.
  • REGION: region yang didukung, seperti yang dinyatakan di bagian Sebelum memulai di halaman ini, yang telah Anda konfigurasi di Developer Connect di project Google Cloud Anda.
  • INDEX_NAME: nama indeks yang Anda buat di langkah sebelumnya untuk membuat indeks.
  • REPOSITORY_RESOURCE_NAME: nama repositori di dalam koneksi Developer Connect. Untuk menemukan nama repositori, buka halaman Developer Connect di konsol Google Cloud, lalu di tab Repositori, cari ID Koneksi di kolom Koneksi dalam tabel. Untuk menyalin nama resource, klik menu more_vert untuk melihat opsi lainnya, lalu pilih Salin jalur resource.
  • BRANCH_NAMES: nama cabang yang ingin Anda indeks, seperti main|dev.

Anda juga dapat membuat grup repositori dengan repositori yang ditentukan dalam file JSON (atau YAML), yang diformat sebagai berikut:

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

Untuk membuat grup repositori berdasarkan file JSON atau YAML, di lingkungan shell, gunakan perintah 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

Memberikan peran IAM ke grup repositori pada project

Anda hanya menerima saran dari repositori dalam indeks. Setiap repositori merupakan bagian dari satu atau beberapa grup repositori. Untuk mengakses saran, Anda harus memberikan peran IAM Pengguna Grup Repositori Cloud AI Companion (roles/cloudaicompanion.repositoryGroupsUser)—yang berisi izin IAM cloudaicompanion.repositoryGroups.user yang diperlukan—ke grup repositori dengan salah satu cara berikut:

  • Berikan izin kepada akun utama untuk mengakses seluruh indeks.
  • Berikan akun utama akses ke subset indeks.

Memberikan izin akun utama untuk mengakses seluruh indeks

  1. Untuk mengikat kebijakan IAM untuk project, di lingkungan shell, gunakan perintah projects add-iam-policy-binding:

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

    Ganti kode berikut:

    • PROJECT_ID: project ID tempat grup repositori berada.
    • PRINCIPAL: alamat email akun utama yang memerlukan akses—misalnya, user:test-user@gmail.com untuk perorangan, atau group:admins@example.com untuk grup.

    Untuk informasi selengkapnya, lihat gcloud projects set-iam-policy.

  2. Saat diminta untuk menentukan kondisi, masukkan None.

Memberikan akses utama ke subset indeks

Anda dapat membuat beberapa grup repositori dan menetapkan peran IAM ke akun utama IAM yang berbeda.

Untuk menyiapkan kebijakan IAM, Anda harus menyiapkan file JSON atau YAML kebijakan IAM, yang akan berisi daftar grup IAM dan peran yang ditetapkan. Contoh:

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

Untuk detail dan sintaksis tambahan, lihat Memahami kebijakan izin.

Untuk menetapkan kebijakan IAM, di lingkungan shell, gunakan perintah 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

Ganti kode berikut:

Memeriksa status pengindeksan

Bergantung pada jumlah repositori yang ingin diindeks dan ukurannya, pengindeksan konten dapat memerlukan waktu hingga 24 jam. Untuk repositori besar, pengindeksan dapat memerlukan waktu lebih lama. Pengindeksan terjadi sekali setiap 24 jam, yang mengambil perubahan apa pun yang dibuat di repositori.

  1. Telusuri log indexing. Untuk mengetahui informasi selengkapnya, lihat Bahasa kueri logging.

    Konsol

    1. Di konsol Google Cloud, buka Logs Explorer.

      Buka Logs Explorer

    2. Gunakan filter nama log untuk melihat log indexing.

    gcloud

    Untuk menelusuri log pengindeksan, di lingkungan shell, gunakan perintah logging read:

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

    Ganti PROJECT_ID dengan project ID tempat grup repositori berada.

    Misalnya, untuk melihat error dalam log indexing, jalankan perintah berikut:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. Tinjau status pengindeksan terkait, seperti berikut:

    • Awal pengindeksan repositori-misalnya, Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • Akhir pengindeksan repositori individual-misalnya:
      • Berhasil: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • Gagal: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • Akhir pengindeksan repositori-misalnya:
      • Berhasil: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • Gagal: 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.

    Dalam status indeks, REPOSITORY_NAME adalah repositori yang ingin Anda tinjau.

  3. Tinjau error pengindeksan terkait, seperti berikut:

    • Gagal mengambil repositori.
    • Gagal mencantumkan file repositori.
    • Gagal mengambil informasi repositori dari indeks.
    • Gagal mengambil file dari indeks.
    • Error internal.

Menggunakan penyesuaian kode

Setelah Anda menyiapkan penyesuaian kode, pengguna akan mulai melihat saran pembuatan kode dan penyelesaian kode yang mungkin didasarkan pada kode pribadi yang telah Anda masukkan ke dalam indeks, selain hasil dari kesadaran codebase lengkap.

Menonaktifkan penyesuaian kode

  1. Untuk mencantumkan semua grup repositori untuk indeks saat ini, di lingkungan shell, gunakan perintah 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
    

    Ganti kode berikut:

    • REGION: region yang didukung, seperti yang dinyatakan di bagian Sebelum memulai di halaman ini, yang telah Anda konfigurasikan di Developer Connect di project Google Cloud Anda.
    • PROJECT_ID: Project ID Google Cloud Anda.
    • INDEX_NAME: nama indeks yang Anda buat di langkah sebelumnya untuk membuat indeks.
  2. Untuk menghapus grup repositori dari indeks saat ini, gunakan perintah 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
    
  3. Ulangi langkah 3 untuk setiap grup repositori hingga Anda menghapus semua grup repositori dari indeks.

  4. Opsional: Untuk menghapus indeks, di lingkungan shell, gunakan perintah gemini code-repository-indexes delete:

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

Langkah selanjutnya