Bu dokümanda, Gemini Code Assist'i özel kod depolarınıza bağlayarak Gemini Code Assist kod özelleştirmesinin nasıl ayarlanacağı açıklanmaktadır. Bu özellik, kuruluşunuzun dahili kitaplıklarından, özel API'lerinden ve kodlama stilinden yararlanarak kod önerileri almanızı sağlar.
Başlamadan önce
- Enterprise aboneliği ile Gemini Code Assist'i ayarlayın.
- Son kullanıcı hesapları oluşturun veya yapılandırın. Kuruluşunuzdaki Gemini Code Assist kullanan her geliştiricinin, Google Cloud'da Google Cloud projenize erişme iznine sahip bir kullanıcı kimliği olmalıdır. Daha fazla bilgi için Google Cloud Console'da rol verme başlıklı makaleyi inceleyin. Her kullanıcının aşağıdaki rollere sahip olduğundan emin olun:
Developer Connect'i yapılandırın ve ardından GitHub.com, GitLab.com veya Bitbucket.org deponuza bağlanın:
- GitHub'a bağlanın.
- GitHub Enterprise Cloud'a bağlanın.
- GitHub Enterprise'a bağlanın.
- GitLab'a bağlanın.
- GitLab Enterprise'a bağlanın.
- Bitbucket Cloud'a bağlanın.
- Bitbucket Data Center'a bağlanın.
Ayrıca, kod özelleştirmenin yalnızca aşağıdaki konumlarda (bölgelerde) Developer Connect bağlantılarını desteklediğini unutmayın:
us-central1
europe-west1
asia-southeast1
gcloud'un yüklü tüm bileşenlerini en son sürüme güncellediğinizden emin olmak için bir kabuk ortamında
gcloud components update
komutunu çalıştırın. Bu adımda gcloud'u yükleyip başlatabilir veya Cloud Shell Düzenleyici'yi kullanabilirsiniz.gcloud components update
Hangi özel depoların bağlanacağını seçin
En iyi uygulama olarak, aşağıdaki özelliklere sahip depoları bağladığınızdan emin olun:
- Geliştiricilerinizin yazmasını istediğiniz koda benzer bir stil veya yapıya sahip kod kullanın.
- Mevcut kod tabanınızdan çağırmak istediğiniz özel kitaplıklarınız veya API'leriniz varsa
(İsteğe bağlı) Dizine eklenmeyecek dosyaları seçme
Kod özelleştirme, varsayılan olarak belirttiğiniz depolardaki tüm desteklenen kod dosyalarını dizine ekler.Birçok senaryoda dizine eklenmesini istemediğiniz belirli dosyalarınız veya alt ağaçlarınız olabilir. Örneğin:
- Kuruluşunuzda sınırlı erişime sahip olan son derece hassas bilgiler
- Eski veya desteği sonlandırılmış kod
- Otomatik olarak oluşturulan veya geçici kod
Dizine eklemek istemediğiniz kodun gösterilmesini önlemek için şunu yapabilirsiniz: Dizininize erişimi kontrol etmek için dal kalıplarını kullanın ve main
gibi kararlı bir dal kullanın.
Dilerseniz .aiexclude
dosyası oluşturarak de dosyaları dizinden hariç tutabilirsiniz.
Dizin oluşturma
Kod özelleştirme, daha hızlı kod oluşturma önerileri ve aramaları için deponuzu analiz etmek ve ayrıştırmak üzere bir dizinden yararlanır.
Dizin oluşturmak için kabuk ortamında gemini code-repository-indexes create
komutunu kullanın:
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
resource "google_gemini_code_repository_index" "example" {
location = "REGION "
code_repository_index_id = "INDEX_NAME "
}
Aşağıdakini değiştirin:
INDEX_NAME
: dizine ekleme adınız. Önemli: Dizin adınızı kaydedin. Bu dokümandaki birkaç adımda bu anahtara ihtiyacınız olacak.PROJECT_ID
: Google Cloud proje kimliğiniz.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizde Developer Connect'te yapılandırdığınız desteklenen bir bölge.
Dizin oluşturma işlemi genellikle 30 dakika sürer ancak bu süre bir saati bulabilir.
Google, kod deposu dizinlerinin sayısını her proje ve kuruluş için bir ile sınırlandırır.
Depo gruplarını kullanarak dizine erişimi kontrol etme
Depo grubu, depoları ve dal kalıplarını içeren dizine ekleme yapılandırması kapsayıcısıdır. Depo grupları, ayrıntılı IAM denetimi için tasarlanmıştır. Geliştiriciler, cloudaicompanion.repositoryGroups.use
iznine sahip oldukları bu gruplardaki dizine eklenen verilere erişim elde eder.
Depo grupları, aynı proje ve konumdaki Developer Connect depolarını veya bağlantılarını içerir.
Yöneticiler aşağıdaki işlemleri gerçekleştirir:
- Kod Deposu Dizini kaynağı oluşturun.
- Aynı proje ve konumda yeni bir Developer Connect bağlantısı yapılandırın.
- Bağlantıda Git depolarını bağlayın.
Bağlantıların kaynak adlarını alın, her bağlantı için dizine eklenecek dal desenini seçin ve bir veya daha fazla depo grubuna ekleyin.
Depo grubu oluşturmak için kabuk ortamında gemini code-repository-indexes repository-groups create
komutunu kullanın:
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 "}]'
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 "
}
}
Aşağıdakini değiştirin:
REPOSITORY_GROUP
: Kod deposu grubunun adı (ör.default
).PROJECT_ID
: Google Cloud proje kimliğiniz.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.INDEX_NAME
: Dizin oluşturmak için önceki bir adımda oluşturduğunuz dizinin adı.REPOSITORY_RESOURCE_NAME
: Developer Connect bağlantısındaki deponun adı. Deponun adını bulmak için Google Cloud Console'daki Developer Connect sayfasına gidin ve Depolar sekmesinde, tablodaki Bağlantı sütununun altında Bağlantı Kimliği'ni bulun. Kaynak adını kopyalamak için daha fazla seçenek görmek üzere more_vert menüsünü tıklayın ve Kaynak yolunu kopyala'yı seçin.BRANCH_NAMES
: dizine eklemek istediğiniz şubelerin adı (ör.main|dev
).
Ayrıca, JSON (veya YAML) dosyasında tanımlanan ve aşağıdaki gibi biçimlendirilmiş bir depo grubu da oluşturabilirsiniz:
[
{
"resource": "REPOSITORY_RESOURCE_NAME ", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME ", "branchPattern": "dev"
}
]
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
JSON veya YAML dosyasına dayalı bir depo grubu oluşturmak için kabuk ortamında gemini code-repository-indexes repository-groups create
komutunu kullanın:
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH .json
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH .yaml
Dilerseniz Cloud Key Management Service üzerinden müşteri tarafından yönetilen bir şifreleme anahtarıyla (CMEK) verilerinizi şifreleyebilir ve kontrol edebilirsiniz. CMEK kullanma hakkında daha fazla bilgi edinmek için Müşteri tarafından yönetilen şifreleme anahtarlarıyla verileri şifreleme başlıklı makaleyi inceleyin.
Projedeki depolama alanı grubuna IAM rolü verme
Yalnızca dizindeki depolardan öneri alırsınız. Her depo bir veya daha fazla depo grubuna aittir. Önerilere erişmek için, gerekli cloudaicompanion.repositoryGroups.user
IAM iznini içeren Cloud AI Companion Repository Groups User IAM rolünü (roles/cloudaicompanion.repositoryGroupsUser
) aşağıdaki yöntemlerden biriyle depolama grubuna vermeniz gerekir:
- Yöneticilere dizinin tamamına erişme izni verin.
- Ana hesaplara dizinin bir alt kümesine erişim izni verin.
Üst yöneticilere dizinin tamamına erişme izni verme
Bir proje için IAM politikası bağlamak üzere kabuk ortamında
projects add-iam-policy-binding
komutunu kullanın:gcloud projects add-iam-policy-binding
PROJECT_ID \ --member='PRINCIPAL ' \ --role='roles/cloudaicompanion.repositoryGroupsUser'Aşağıdakini değiştirin:
PROJECT_ID
: Depo grubunun bulunduğu proje kimliği.PRINCIPAL
: Erişime ihtiyacı olan müdürün e-posta adresi. Örneğin, bir kullanıcı içinuser:test-user@gmail.com
veya bir grup içingroup:admins@example.com
.
Daha fazla bilgi için
gcloud projects set-iam-policy
başlıklı makaleyi inceleyin.Bir koşul belirtmeniz istendiğinde
None
yazın.
Ana hesaplara dizinin bir alt kümesine erişim izni verme
Birden fazla depo grubu oluşturabilir ve IAM rollerini farklı IAM asıllarına atayabilirsiniz.
IAM politikası oluşturmak için IAM gruplarının ve atanan rollerin listesini içeren IAM politikası JSON veya YAML dosyasını hazırlamanız gerekir. Örneğin:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
Daha fazla bilgi ve söz dizimi için İzin politikalarını anlama başlıklı makaleyi inceleyin.
IAM politikasını ayarlamak için kabuk ortamında gemini code-repository-indexes repository-groups set-iam-policy
komutunu kullanın:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAME POLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
Aşağıdakini değiştirin:
GROUP_NAME
: Depo gruplarını kullanarak dizine erişiminizi kontrol etmek için önceki bir adımda oluşturduğunuz depo grubu adı.POLICY_FILE
: IAM politikası.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.INDEX_NAME
: Dizin oluşturma işleminin önceki bir adımında oluşturduğunuz dizinin adı.Daha fazla bilgi için
gcloud gemini code-repository-indexes repository-groups set-iam-policy
başlıklı makaleyi inceleyin.
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
]
}
Ayrıca, aşağıdaki yöntemlerle de bağlama oluşturabilirsiniz:
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"]
}
Aşağıdakini değiştirin:
GROUP_NAME
: Depo gruplarını kullanarak dizine erişiminizi kontrol etmek için önceki bir adımda oluşturduğunuz depo grubu adı.REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.INDEX_NAME
: Dizin oluşturma işleminin önceki bir adımında oluşturduğunuz dizinin adı.Daha fazla bilgi için
gcloud gemini code-repository-indexes repository-groups set-iam-policy
başlıklı makaleyi inceleyin.
Dizine ekleme durumunu kontrol etme
Dizine eklemek istediğiniz depoların sayısına ve boyutlarına bağlı olarak içeriğin dizine eklenmesi 24 saati bulabilir. Dizine ekleme işlemi, büyük depolar için daha uzun sürebilir. Dizine ekleme işlemi 24 saatte bir gerçekleşir ve depoda yapılan tüm değişiklikleri alır.
indexing
günlüklerini arayın. Daha fazla bilgi için Günlük kaydı sorgu dili bölümüne bakın.Google Cloud Console'da Günlük Gezgini'ne gidin.
indexing
günlüklerini görüntülemek için günlük adı filtresini kullanın.
Dizine ekleme günlüklerini aramak için kabuk ortamında
logging read
komutunu kullanın:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing""PROJECT_ID
kısmını, kod deposu grubunun bulunduğu proje kimliğiyle değiştirin.Örneğin,
indexing
günlüklerindeki hataları görüntülemek için aşağıdaki komutu çalıştırın:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing" AND severity>=ERROR"Aşağıdakiler gibi ilişkili dizine ekleme durumlarını inceleyin:
- Depo dizine ekleme işleminin başlangıcı (ör.
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
) - Bireysel depolama alanı dizine ekleme işleminin sonu (ör.
- Başarılı:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- Başarısız:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- Başarılı:
- Depo dizine ekleme işleminin sonu (örnek):
- Başarılı:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- Başarısız:
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.
- Başarılı:
Dizin durumlarında
REPOSITORY_NAME
, incelemek istediğiniz depodur.- Depo dizine ekleme işleminin başlangıcı (ör.
Aşağıdakiler gibi ilişkili dizine ekleme hatalarını inceleyin:
- Depo getirilemedi.
- Depo dosyaları listelenemedi.
- Depo bilgileri dizinden alınamadı.
- Dosyalar dizinden alınamadı.
- Dahili hata.
Kod özelleştirmesini kullanma
Kod özelleştirmeyi ayarladıktan sonra kullanıcılar, tam kod tabanı farkındalığından elde edilen sonuçlara ek olarak dizine eklediğiniz özel koda dayalı olabilecek kod tamamlama ve kod oluşturma önerileri görmeye başlar.
Kod özelleştirmeyi devre dışı bırakma
Mevcut dizin için tüm depo gruplarını listelemek üzere kabuk ortamında
gemini code-repository-indexes repository-groups list
komutunu kullanın:gcloud gemini code-repository-indexes repository-groups list --location=
REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uriAşağıdakini değiştirin:
REGION
: Bu sayfanın Başlamadan önce bölümünde belirtildiği gibi, Google Cloud projenizdeki Developer Connect'te yapılandırdığınız desteklenen bir bölge.PROJECT_ID
: Google Cloud proje kimliğiniz.INDEX_NAME
: Dizin oluşturmak için önceki bir adımda oluşturduğunuz dizinin adı.
Bir depo grubunu geçerli dizinden silmek için
gemini code-repository-indexes repository-groups delete
komutunu kullanın:gcloud gemini code-repository-indexes repository-groups delete
REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME Tüm depo gruplarını dizinden silene kadar her depo grubu için 3. adımı tekrarlayın.
İsteğe bağlı: Dizinleri silmek için kabuk ortamında
gemini code-repository-indexes delete
komutunu kullanın:gcloud gemini code-repository-indexes delete
INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Sırada ne var?
- Gemini Code Assist'i kullanmaya başlayın:
- VS Code, IntelliJ ve desteklenen diğer JetBrains IDE'ler: Gemini Code Assist ile kodlama
- Cloud Shell: Gemini Code Assist ile kodlama
- Cloud Workstations: Gemini Code Assist ile kodlama
- Verileri müşteri tarafından yönetilen şifreleme anahtarlarıyla (CMEK) nasıl şifreleyeceğinizi öğrenin.
- Developer Connect hakkında daha fazla bilgi edinin.
- Google Cloud için Gemini'nin verilerinizi nasıl ve ne zaman kullandığını öğrenin.