این سند نحوه تنظیم سفارشی سازی کد Gemini Code Assist را با اتصال Gemini Code Assist به مخازن کد خصوصی خود توضیح می دهد. این ویژگی به شما امکان می دهد توصیه های کد را دریافت کنید که از کتابخانه های داخلی، API های خصوصی و سبک کدنویسی سازمان شما استخراج می شود.
قبل از شروع
- با اشتراک Enterprise، Gemini Code Assist را تنظیم کنید .
- حساب های کاربر نهایی را ایجاد یا پیکربندی کنید. هر برنامهنویسی در سازمان شما که از Gemini Code Assist استفاده میکند، باید یک هویت کاربری در Google Cloud داشته باشد که اجازه دسترسی به پروژه Google Cloud شما را داشته باشد. برای اطلاعات بیشتر، به نقشهای اعطایی در کنسول Google Cloud مراجعه کنید. اطمینان حاصل کنید که هر کاربر نقش های زیر را دارد:
Developer Connect را پیکربندی کنید و سپس به مخزن GitHub.com، GitLab.com یا Bitbucket.org خود متصل شوید:
- به GitHub متصل شوید .
- به GitHub Enterprise Cloud متصل شوید .
- به GitHub Enterprise متصل شوید .
- به GitLab متصل شوید .
- به GitLab Enterprise متصل شوید .
- به Bitbucket Cloud متصل شوید .
- به Bitbucket Data Center متصل شوید .
علاوه بر این، توجه داشته باشید که سفارشیسازی کد فقط از اتصالات Developer Connect در مکانها (مناطق) زیر پشتیبانی میکند:
-
us-central1
-
europe-west1
-
asia-southeast1
در یک محیط پوسته، دستور
gcloud components update
را اجرا کنید تا مطمئن شوید که تمام اجزای نصب شده gcloud را به آخرین نسخه به روز کرده اید. برای این مرحله، می توانید gcloud را نصب و مقداردهی اولیه کنید، یا می توانید از Cloud Shell Editor استفاده کنید.gcloud components update
انتخاب کنید که کدام مخازن خصوصی متصل هستند
به عنوان بهترین روش، اطمینان حاصل کنید که مخازنی را که:
- کدی داشته باشید که سبک یا ساختاری مشابه آنچه که می خواهید توسعه دهندگان شما بنویسند داشته باشد.
- کتابخانه های خصوصی یا API هایی داشته باشید که می خواهید از پایگاه کد فعلی خود با آنها تماس بگیرید.
(اختیاری) انتخاب کنید کدام فایل ایندکس نشده باشد
بهطور پیشفرض، سفارشیسازی کد، همه فایلهای کد پشتیبانیشده را در مخازن مشخصشده شما نمایه میکند.در بسیاری از سناریوها، ممکن است فایلها یا زیردرختهای خاصی داشته باشید که نمیخواهید ایندکس شوند. به عنوان مثال:
- اطلاعات بسیار حساس با دسترسی محدود در داخل سازمان شما
- کد قدیمی یا منسوخ شده
- کد تولید خودکار یا موقت
برای جلوگیری از قرار گرفتن در معرض کدهایی که نمی خواهید ایندکس شوند، می توانید از الگوهای شاخه برای کنترل دسترسی به فهرست خود استفاده کنید و از یک شاخه پایدار مانند main
استفاده کنید.
همچنین، میتوانید با ایجاد یک فایل .aiexclude
فایلها را از فهرست حذف کنید.
یک شاخص ایجاد کنید
سفارشیسازی کد به یک شاخص برای تجزیه و تحلیل و تجزیه مخزن شما برای پیشنهادات و جستجوهای سریعتر تولید کد متکی است.
برای ایجاد ایندکس، در محیط پوسته، از دستور gemini code-repository-indexes create
استفاده کنید:
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 دقیقه طول می کشد، اما ممکن است تا یک ساعت طول بکشد.
گوگل تعداد ایندکس های مخزن کد را به یک برای هر پروژه و سازمان محدود می کند.
با استفاده از گروه های مخزن دسترسی به فهرست خود را کنترل کنید
گروه مخزن محفظه ای برای پیکربندی نمایه سازی است که شامل مخازن و الگوهای شاخه آنها می شود. گروههای مخزن برای کنترل گرانول IAM طراحی شدهاند و به توسعهدهندگان اجازه دسترسی به دادههای نمایهشده از آن گروهها را میدهند، جایی که آنها مجوز cloudaicompanion.repositoryGroups.use
را دارند.
گروه های مخزن شامل مخازن Developer Connect یا پیوندهایی از همان پروژه و مکان هستند.
مدیران اقدامات زیر را انجام می دهند:
- منبع فهرست مخزن کد ایجاد کنید.
- در همان پروژه و مکان، یک اتصال Developer Connect جدید را پیکربندی کنید.
- مخازن Git را در اتصال پیوند دهید.
نام منابع پیوندها را دریافت کنید، الگوی شاخه را انتخاب کنید تا برای هر پیوند فهرست شود و آن را در یک یا چند گروه مخزن قرار دهید.
برای ایجاد یک گروه مخزن، در یک محیط پوسته، از دستور 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 "}]'
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 بروید و در تب Repositories ، در زیر ستون Connection در جدول به دنبال Connection ID بگردید. برای کپی کردن نام منبع، روی منوی more_vert برای گزینههای بیشتر کلیک کنید و مسیر منبع را کپی کنید. -
BRANCH_NAMES
: نام شاخههایی که میخواهید ایندکس کنید، مانندmain|dev
.
همچنین می توانید یک گروه مخزن با مخازن تعریف شده در یک فایل JSON (یا YAML) با فرمت زیر ایجاد کنید:
[
{
"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
استفاده کنید:
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) از طریق سرویس مدیریت کلید ابری رمزگذاری و کنترل کنید. برای کسب اطلاعات بیشتر در مورد استفاده از CMEK، به رمزگذاری داده ها با کلیدهای رمزگذاری مدیریت شده توسط مشتری مراجعه کنید.
نقش IAM را به گروه مخزن در یک پروژه اعطا کنید
شما فقط پیشنهادات را از مخازن موجود در فهرست دریافت می کنید. هر مخزن متعلق به یک یا چند گروه مخزن است. برای دسترسی به پیشنهادها، باید نقش IAM کاربر Cloud AI Companion Repository Groups ( roles/cloudaicompanion.repositoryGroupsUser
) - که شامل مجوز cloudaicompanion.repositoryGroups.user
مورد نیاز IAM است - را به یکی از روش های زیر به گروه مخزن بدهید:
- به مدیران اجازه دسترسی به کل فهرست را بدهید.
- اعطای دسترسی به زیرمجموعهای از فهرست به مدیران اصلی.
به مدیران اجازه دسترسی به کل فهرست را بدهید
برای اتصال یک خط مشی IAM برای یک پروژه، در یک محیط پوسته، از دستور
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
ببینید.-
وقتی از شما خواسته شد که یک شرط را مشخص کنید،
None
وارد کنید.
اعطای دسترسی به زیرمجموعهای از فهرست به مدیران اصلی
می توانید چندین گروه مخزن ایجاد کنید و نقش های IAM را به اصول مختلف IAM اختصاص دهید.
برای تنظیم یک خطمشی IAM، باید فایل JSON یا YAML خطمشی IAM را آماده کنید که حاوی فهرستی از گروههای IAM و نقشهای اختصاصیافته است. به عنوان مثال:
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
برای جزئیات بیشتر و نحو، به درک سیاستهای مجاز مراجعه کنید.
برای تنظیم خط مشی IAM، در یک محیط پوسته، از دستور gemini code-repository-indexes repository-groups set-iam-policy
استفاده کنید:
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAME POLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
موارد زیر را جایگزین کنید:
-
GROUP_NAME
: نام گروه مخزن که در مرحله قبل برای کنترل دسترسی به فهرست خود با استفاده از گروه های مخزن ایجاد کردید. -
POLICY_FILE
: خط مشی IAM. -
REGION
: یک منطقه پشتیبانی شده، همانطور که در بخش قبل از شروع این صفحه بیان شده است، که در Developer Connect در پروژه Google Cloud خود پیکربندی کرده اید. INDEX_NAME
: نام نمایه ای که در مرحله قبل برای ایجاد نمایه ایجاد کردید.برای اطلاعات بیشتر،
gcloud gemini code-repository-indexes repository-groups set-iam-policy
ببینید.
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"]
}
موارد زیر را جایگزین کنید:
-
GROUP_NAME
: نام گروه مخزن که در مرحله قبل برای کنترل دسترسی به فهرست خود با استفاده از گروه های مخزن ایجاد کردید. -
REGION
: یک منطقه پشتیبانی شده، همانطور که در بخش قبل از شروع این صفحه بیان شده است، که در Developer Connect در پروژه Google Cloud خود پیکربندی کرده اید. INDEX_NAME
: نام نمایه ای که در مرحله قبل برای ایجاد نمایه ایجاد کردید.برای اطلاعات بیشتر،
gcloud gemini code-repository-indexes repository-groups set-iam-policy
ببینید.
وضعیت نمایه سازی را بررسی کنید
بسته به تعداد مخازنی که می خواهید ایندکس کنید و اندازه آنها، نمایه سازی محتوا می تواند تا 24 ساعت طول بکشد. برای مخازن بزرگ، نمایه سازی ممکن است بیشتر طول بکشد. نمایه سازی هر 24 ساعت یکبار انجام می شود و هر تغییری که در مخزن ایجاد شده است را جمع آوری می کند.
لاگ های
indexing
را جستجو کنید. برای اطلاعات بیشتر، به ثبت زبان درخواست مراجعه کنید.در کنسول Google Cloud، به Logs Explorer بروید.
از فیلتر نام های گزارش برای مشاهده گزارش های
indexing
استفاده کنید.
برای جستجوی گزارش های نمایه سازی، در محیط پوسته، از دستور
logging read
استفاده کنید:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing""شناسه پروژه را که گروه مخزن در آن قرار دارد جایگزین
PROJECT_ID
کنید.به عنوان مثال، برای مشاهده خطاها در گزارش های
indexing
، دستور زیر را اجرا کنید:gcloud logging read "logName="projects/
PROJECT_ID /logs/indexing" AND severity>=ERROR"وضعیت های نمایه سازی مرتبط را مرور کنید، مانند موارد زیر:
- شروع نمایه سازی مخزن - برای مثال،
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
مخزنی است که میخواهید بررسی کنید.- شروع نمایه سازی مخزن - برای مثال،
خطاهای نمایه سازی مرتبط را مرور کنید، مانند موارد زیر:
- واکشی مخزن انجام نشد.
- فهرست کردن فایلهای مخزن انجام نشد.
- بازیابی اطلاعات مخزن از نمایه انجام نشد.
- بازیابی فایل ها از فهرست انجام نشد.
- خطای داخلی
از سفارشی سازی کد استفاده کنید
هنگامی که سفارشیسازی کد را تنظیم کردید، کاربران شروع به مشاهده پیشنهادات تکمیل کد و تولید کد میکنند که ممکن است بر اساس کد خصوصی که نمایهسازی کردهاید، علاوه بر نتایج حاصل از آگاهی کامل از پایگاه کد باشد.
سفارشی سازی کد را خاموش کنید
برای فهرست کردن همه گروههای مخزن برای نمایه فعلی، در یک محیط پوسته، از دستور
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
: نام نمایه ای که در مرحله قبل برای ایجاد نمایه ایجاد کردید.
-
برای حذف یک گروه مخزن از فهرست فعلی، از دستور
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 را برای هر گروه مخزن تکرار کنید تا زمانی که همه گروه های مخزن را از فهرست حذف کنید.
اختیاری: برای حذف فهرست، در محیط پوسته، از دستور
gemini code-repository-indexes delete
استفاده کنید:gcloud gemini code-repository-indexes delete
INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
بعدش چی
- استفاده از Gemini Code Assist را شروع کنید:
- VS Code، IntelliJ، و سایر IDE های پشتیبانی شده JetBrains: کد با Gemini Code Assist
- Cloud Shell: کد با Gemini Code Assist
- ایستگاه های کاری ابری: کد با Gemini Code Assist
- نحوه رمزگذاری داده ها با کلیدهای رمزگذاری مدیریت شده توسط مشتری (CMEK) را بیاموزید.
- درباره Developer Connect بیشتر بیاموزید.
- بیاموزید Gemini for Google Cloud چگونه و چه زمانی از دادههای شما استفاده میکند .