ضبط ميزة تخصيص الرموز البرمجية في Gemini Code Assist واستخدامها

يوضّح هذا المستند كيفية إعداد تخصيص الرموز البرمجية في Gemini Code Assist من خلال ربط Gemini Code Assist بمستودعات الرموز البرمجية الخاصة بك. تتيح لك هذه الميزة تلقّي اقتراحات للرموز البرمجية، والتي يتم استخراجها من المكتبات الداخلية وواجهات برمجة التطبيقات الخاصة ونمط الترميز في مؤسستك.

قبل البدء

اختيار المستودعات الخاصة المرتبطة

من أفضل الممارسات التأكّد من ربط المستودعات التي:

  • أن تتضمّن رمزًا بنمط أو بنية مشابهة لما تريد من المطوّرين كتابة
  • توفُّر مكتبات أو واجهات برمجة تطبيقات خاصة تريد الاتصال بها من قاعدة بيانات الرمز البرمجي الحالية

(اختياري) اختيار الملفات التي لا تتم فهرستها

بشكلٍ تلقائي، فهِّم تخصيص الرموز البرمجية جميع ملفات الرموز البرمجية المتوافقة في المستودعات المحدّدة.

في العديد من السيناريوهات، قد يكون لديك ملفات أو أشجار فرعية معيّنة لا تريد فهرستها. على سبيل المثال:

  • معلومات حسّاسة للغاية مع إمكانية وصول محدودة داخل مؤسستك
  • رمز قديم أو رمز برمجي متوقّف نهائيًا
  • رمز مؤقت أو تم إنشاؤه تلقائيًا

لمنع عرض الرمز الذي لا تريد فهرسته، يمكنك استخدام نماذج الفرع للتحكّم في الوصول إلى الفهرس واستخدام فرع ثابت، مثل main.

بدلاً من ذلك، يمكنك أيضًا استبعاد الملفات من الفهرس من خلال إنشاء ملف .aiexclude.

إنشاء فهرس

يعتمد تخصيص الرموز على فهرس لتحليل مستودعك وتحليله من أجل اقتراحات إنشاء الرموز والبحث عنها بشكل أسرع.

gcloud Terraform

لإنشاء الفهرس، استخدِم gemini code-repository-indexes create في بيئة shell:

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"
}

غيِّر القيم في السلسلة على الشكل التالي:

  • INDEX_NAME: اسم الفهرس ملاحظة مهمة: سجِّل اسم فهرسك. ستحتاج إليه لتنفيذ عدّة خطوات في هذا المستند.
  • PROJECT_ID: معرّف مشروعك على Google Cloud
  • REGION: منطقة متوافقة، كما هو موضّح في قسم قبل البدء من هذه الصفحة، تم إعدادها في Developer Connect في مشروعك على Google Cloud

يستغرق إنشاء الفهرس عادةً 30 دقيقة، ولكن قد يستغرق ما يصل إلى ساعة.

تحدّ Google من عدد فهارس مستودع الرموز البرمجية إلى فهرس واحد لكل مشروع و مؤسّسة.

التحكّم في الوصول إلى فهرسك باستخدام مجموعات المستودعات

مجموعة المستودعات هي حاوية لإعداد الفهرسة، والتي تتضمّن المستودعات وأنماط الفروع. تم تصميم مجموعات المستودعات لتوفير تحكم دقيق في إدارة الهوية وإمكانية الوصول، ما يتيح للمطوّرين الوصول إلى data المُفهرسة من هذه المجموعات، حيث لديهم إذن cloudaicompanion.repositoryGroups.use.

تحتوي مجموعات المستودعات على مستودعات Developer Connect أو روابط من المشروع والموقع الجغرافي نفسهما.

ينفّذ المشرفون الإجراءات التالية:

  • أنشئ مرجعًا لفهرس مستودع الرموز البرمجية.
  • في المشروع والموقع الجغرافي نفسهما، اضبط اتصالًا جديدًا بحساب Developer Connect.
  • اربط مستودعات Git في عملية الربط.
  • الحصول على أسماء موارد الروابط، واختيار نمط الفرع للفهرسة لكل رابط، ووضعه في مجموعة مستودع واحدة أو متعددة

gcloud Terraform

لإنشاء مجموعة مستودع، استخدِم gemini code-repository-indexes repository-groups create في بيئة shell:

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"
  }
}

غيِّر القيم في السلسلة على الشكل التالي:

  • REPOSITORY_GROUP: اسم مجموعة المستودع، مثل default
  • PROJECT_ID: معرّف مشروعك على Google Cloud
  • REGION: منطقة متوافقة، كما هو موضّح في قسم قبل البدء من هذه الصفحة، تم ضبطها في Developer Connect في مشروعك على Google Cloud
  • INDEX_NAME: اسم الفهرس الذي أنشأته في إحدى الخطوات السابقة لإنشاء فهرس.
  • REPOSITORY_RESOURCE_NAME: اسم المستودع داخل عملية الربط في Developer Connect للعثور على اسم المستودع، انتقِل إلى صفحة Developer Connect في Google Cloud Console، وفي علامة التبويب المستودعات، ابحث عن رقم تعريف الاتصال ضمن عمود الاتصال في الجدول. لنسخ اسم المورد، انقر على قائمة more_vert للحصول على المزيد من الخيارات، ثم اختَر نسخ مسار المورد.
  • BRANCH_NAMES: اسم الفروع التي تريد فهرستها، مثل main|dev.

يمكنك أيضًا إنشاء مجموعة مستودعات تتضمّن مستودعات محدّدة في ملف JSON (أو YAML) بالتنسيق التالي:

JSONYAML
[
  {
      "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 أو YAML، في بيئة ملف التمهيد، استخدِم gemini code-repository-indexes repository-groups create:

JSONYAML
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

يمكنك تشفير بياناتك والتحكّم فيها باستخدام مفتاح تشفير يديره العميل (CMEK) من خلال خدمة إدارة مفاتيح التشفير في السحابة الإلكترونية، إذا كنت تفضّل ذلك. للاطّلاع على مزيد من المعلومات عن استخدام "مفتاح التشفير الذي يديره العميل"، يُرجى الاطّلاع على مقالة تشفير البيانات باستخدام مفاتيح التشفير التي يديرها العميل.

منح دور إدارة الهوية وإمكانية الوصول إلى مجموعة المستودع في مشروع

لا تتلقّى اقتراحات إلا من المستودعات المدرَجة في الفهرس. وينتمي كل مستودع إلى مجموعة مستودعات واحدة أو متعددة. للوصول إلى الاقتراحات، يجب منح دور "إدارة الهوية وإمكانية الوصول" لمستخدم "مجموعات مستودعات المرافق الذكية من Google" (roles/cloudaicompanion.repositoryGroupsUser)، والذي يحتوي على إذن "إدارة الهوية وإمكانية الوصول"cloudaicompanion.repositoryGroups.user المطلوب، إلى مجموعة المستودع من خلال إحدى الطريقتَين التاليتَين:

  • امنح مشرفِي الحسابات الإذن بالوصول إلى الفهرس بأكمله.
  • منح النطاقات الرئيسية إذن الوصول إلى مجموعة فرعية من الفهرس

منح مشرفين الإذن بالوصول إلى الفهرس بأكمله

  1. لربط سياسة إدارة الهوية وإمكانية الوصول بمشروع، في بيئة shell، استخدِم الأمر projects add-iam-policy-binding:

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

    غيِّر القيم في السلسلة على الشكل التالي:

    • PROJECT_ID: رقم تعريف المشروع الذي تتوفّر فيه مجموعة الرمز المبرمَج في المستودع
    • PRINCIPAL: عنوان البريد الإلكتروني للمشرف الذي يحتاج إلى إذن الوصول، على سبيل المثال، user:test-user@gmail.com لمستخدم فردي أو group:admins@example.com لمجموعة.

    لمزيد من المعلومات، يُرجى الاطّلاع على gcloud projects set-iam-policy.

  2. عندما يُطلب منك تحديد شرط، أدخِل None.

منح النطاقات الرئيسية إذن الوصول إلى مجموعة فرعية من الفهرس

يمكنك إنشاء مجموعات مستودعات متعددة وتعيين أدوار إدارة الهوية وإمكانية الوصول (IAM) إلى عناصر تحكم مختلفة لإدارة الهوية وإمكانية الوصول.

gcloud Terraform

لإعداد سياسة إدارة الهوية وإمكانية الوصول، عليك إعدادملف JSON أو YAML لسياسة إدارة الهوية وإمكانية الوصول، والذي سيتضمّن قائمة بمجموعات إدارة الهوية وإمكانية الوصول والأدوار المحدّدة. على سبيل المثال:

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

للاطّلاع على تفاصيل إضافية وقواعد نحوية، يُرجى الاطّلاع على مقالة فهم سياسات السماح.

لضبط سياسة إدارة الهوية وإمكانية الوصول، استخدِم gemini code-repository-indexes repository-groups set-iam-policy الأمر في بيئة shell:

gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME

غيِّر القيم في السلسلة على الشكل التالي:

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
  ]
}

يمكنك أيضًا إنشاء عملية ربط:

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"]
}

غيِّر القيم في السلسلة على الشكل التالي:

التحقّق من حالة الفهرسة

استنادًا إلى عدد المستودعات التي تريد فهرستها ومقدار حجمها، يمكن أن تستغرق فهرسة المحتوى ما يصل إلى 24 ساعة. بالنسبة إلى المستودعات الكبيرة، يمكن أن تستغرق الفهرسة وقتًا أطول. تتم الفهرسة مرة واحدة كل 24 ساعة، ما يؤدي إلى رصد أي تغييرات تم إجراؤها في المستودع.

  1. ابحث عن سجلّات indexing. لمزيد من المعلومات، يُرجى الاطّلاع على لغة طلبات البحث عن السجلّات.

    1. في وحدة تحكّم Google Cloud، انتقِل إلى مستكشف السجلّات.

      الانتقال إلى "مستكشف السجلات"

    2. استخدِم فلتر أسماء السجلات لعرض سجلات indexing.

    للبحث عن سجلات الفهرسة، استخدِم الأمر logging read في بيئة shell:

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

    استبدِل PROJECT_ID بمعرّف المشروع الذي يقع فيه المجموعة في المستودع.

    على سبيل المثال، لعرض الأخطاء في سجلّات indexing، شغِّل العبارة التالية:

    gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
    
  2. راجِع حالات الفهرسة المرتبطة، مثل ما يلي:

    • بداية فهرسة المستودع، على سبيل المثال، Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
    • نهاية فهرسة المستودع الفردي، على سبيل المثال:
      • تم بنجاح: Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
      • تعذّر إتمام الإجراء: Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
    • نهاية فهرسة المستودع، على سبيل المثال:
      • تم بنجاح: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
      • تعذّر إتمام الإجراء: 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.

    في حالات الفهرس، يشير الرمز REPOSITORY_NAME إلى المستودع الذي تريد مراجعته.

  3. راجِع أخطاء الفهرسة المرتبطة، مثل ما يلي:

    • تعذّر جلب المستودع.
    • تعذّر إدراج ملفات المستودع.
    • تعذّر استرداد معلومات المستودع من الفهرس.
    • تعذّر استرداد الملفات من الفهرس.
    • حدث خطأ داخلي.

استخدام ميزة تخصيص الرموز

بعد إعداد تخصيص الرموز، سيبدأ المستخدمون في رؤية اقتراحات بشأن إكمال الرموز وإنشاء الرموز التي قد تستند إلى الرموز الخاصة التي تم فهرستها بالإضافة إلى النتائج من الوعي الكامل بقاعدة الرموز البرمجية.

إيقاف تخصيص الرموز

  1. لعرض جميع مجموعات المستودعات للفهرس الحالي، في بيئة وحدة تحكّم، استخدِم الأمر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
    

    غيِّر القيم في السلسلة على الشكل التالي:

    • REGION: منطقة متوافقة، كما هو موضّح في قسم قبل البدء من هذه الصفحة، والتي تم ضبطها في Developer Connect في مشروعك على Google Cloud
    • PROJECT_ID: معرّف مشروعك على Google Cloud
    • INDEX_NAME: اسم الفهرس الذي أنشأته في إحدى الخطوات السابقة لإنشاء فهرس.
  2. لحذف مجموعة مستودع من الفهرس الحالي، استخدِم الأمر 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. كرِّر الخطوة 3 لكل مجموعة مستودع إلى أن تحذف جميع مجموعات المستودع من الفهرس.

  4. اختياري: لحذف الفهرس، في بيئة shell، استخدِم الأمر gemini code-repository-indexes delete:

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

الخطوات التالية