Bitbucket - اتوماسیون مرور کد با GenAI

۱. مرور کلی

در این آزمایش، شما خط لوله Bitbucket را راه‌اندازی کرده و آن را با Gemini ادغام خواهید کرد تا مراحل بررسی کد را خودکار کنید.

92eff32c1969388f.png

آنچه یاد خواهید گرفت

در این آزمایشگاه، شما یاد خواهید گرفت که چگونه موارد زیر را انجام دهید:

  • نحوه اضافه کردن مراحل اتوماسیون بررسی کد GenAI در Bitbucket
  • نحوه اجرای devai cli به صورت محلی برای خودکارسازی بررسی کد

پیش‌نیازها

  • این آزمایشگاه آشنایی با محیط‌های Cloud Console و Cloud Shell را پیش‌فرض قرار می‌دهد.

۲. تنظیمات و الزامات

راه‌اندازی پروژه ابری

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود. شما همیشه می‌توانید آن را به‌روزرسانی کنید.
  • شناسه پروژه در تمام پروژه‌های گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاه‌های کد، باید شناسه پروژه خود را (که معمولاً با عنوان PROJECT_ID شناخته می‌شود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، می‌توانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، می‌توانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی می‌ماند.
  • برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده می‌کنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینه‌ای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

تنظیمات محیط

چت جمینی را باز کنید.

bc3c899ac8bcf488.png

یا در نوار جستجو عبارت «از جمینی بپرسید» را تایپ کنید.

e1e9ad314691368a.png

فعال کردن Gemini برای Google Cloud API:

990a0ceea7d05531.png

روی « Start chatting » کلیک کنید و یکی از نمونه سوالات را دنبال کنید یا سوال خودتان را تایپ کنید تا آن را امتحان کنید.

ed120d672468b412.png

نکاتی برای امتحان کردن:

  • Cloud Run را در 5 نکته کلیدی توضیح دهید.
  • شما مدیر محصول Google Cloud Run هستید، Cloud Run را در 5 نکته کلیدی کوتاه برای یک دانشجو توضیح دهید.
  • شما مدیر محصول Google Cloud Run هستید، Cloud Run را برای یک توسعه‌دهنده‌ی مجاز Kubernetes در 5 نکته‌ی کلیدی کوتاه توضیح دهید.
  • شما مدیر محصول Google Cloud Run هستید، در 5 نکته کلیدی کوتاه، توضیح دهید که چه زمانی از Cloud Run در مقابل GKE استفاده می‌کنید.

برای کسب اطلاعات بیشتر در مورد نوشتن دستورالعمل‌های بهتر، به راهنمای دستورالعمل مراجعه کنید.

چگونه Gemini برای Google Cloud از داده‌های شما استفاده می‌کند

تعهد گوگل به حفظ حریم خصوصی

گوگل یکی از اولین شرکت‌هایی بود که در این صنعت، تعهدنامه‌ای در مورد حریم خصوصی هوش مصنوعی/یادگیری ماشین منتشر کرد که در آن، باور ما مبنی بر اینکه مشتریان باید بالاترین سطح امنیت و کنترل را بر داده‌های ذخیره شده در فضای ابری خود داشته باشند، تشریح شده است.

داده‌هایی که ارسال و دریافت می‌کنید

سوالاتی که از Gemini می‌پرسید، شامل هرگونه اطلاعات ورودی یا کدی که برای تجزیه و تحلیل یا تکمیل به Gemini ارسال می‌کنید، prompt نامیده می‌شوند. پاسخ‌ها یا تکمیل کدی که از Gemini دریافت می‌کنید، response نامیده می‌شوند. Gemini از promptهای شما یا پاسخ‌های خود به عنوان داده برای آموزش مدل‌های خود استفاده نمی‌کند .

رمزگذاری پیام‌های تبلیغاتی

وقتی درخواست‌هایی را به Gemini ارسال می‌کنید، داده‌های شما در حین انتقال به عنوان ورودی به مدل اصلی در Gemini رمزگذاری می‌شوند .

داده‌های برنامه تولید شده از Gemini

جمینی (Gemini) بر اساس کد گوگل کلود (Google Cloud) شخص ثالث و همچنین کد منتخب شخص ثالث آموزش دیده است. شما مسئول امنیت، آزمایش و اثربخشی کد خود ، از جمله هرگونه تکمیل، تولید یا تجزیه و تحلیل کدی که جمینی به شما ارائه می‌دهد، هستید.

بیشتر بدانید که گوگل چگونه درخواست‌های شما را مدیریت می‌کند.

۳. گزینه‌هایی برای آزمایش دستورالعمل‌ها

اگر می‌خواهید دستورات devai cli موجود را تغییر دهید/گسترش دهید، گزینه‌های مختلفی برای این کار دارید.

استودیوی هوش مصنوعی ورتکس (Vertex AI Studio) بخشی از پلتفرم هوش مصنوعی ورتکس گوگل کلود (Google Cloud) است که به‌طور خاص برای ساده‌سازی و تسریع توسعه و استفاده از مدل‌های هوش مصنوعی مولد (Generative AI) طراحی شده است.

گوگل هوش مصنوعی استودیو (Google AI Studio) ابزاری مبتنی بر وب برای نمونه‌سازی اولیه و آزمایش با مهندسی سریع و رابط برنامه‌نویسی کاربردی (API) جمینی (Gemini) است.

برنامه وب گوگل جمینی (gemini.google.com) ابزاری مبتنی بر وب است که برای کمک به شما در کشف و استفاده از قدرت مدل‌های هوش مصنوعی گوگل جمینی طراحی شده است.

۴. ایجاد حساب کاربری سرویس

با کلیک روی آیکون سمت راست نوار جستجو، Cloud Shell را فعال کنید.

3e0c761ca41f315e.png

در ترمینال باز شده، سرویس‌های مورد نیاز برای استفاده از APIهای Vertex AI و چت Gemini را فعال کنید.

gcloud services enable \
    aiplatform.googleapis.com \
    cloudaicompanion.googleapis.com \
    cloudresourcemanager.googleapis.com \
    secretmanager.googleapis.com

اگر از شما خواسته شد که مجوز دهید، برای ادامه روی «مجوز» کلیک کنید.

6356559df3eccdda.png

برای ایجاد یک حساب کاربری سرویس جدید و کلیدها، دستورات زیر را اجرا کنید.

شما از این حساب سرویس برای برقراری تماس‌های API به Vertex AI Gemini API از طریق خطوط لوله CICD استفاده خواهید کرد.

PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
KEY_FILE_NAME='vertex-client-key'

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"

نقش‌ها را اعطا کنید.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None

gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

۵. مخزن گیت‌هاب را به مخزن بیت‌باکت ایمپورت کنید

به https://bitbucket.org/ وارد شوید و گزینه " Create " / Repository / Import repository " را انتخاب کنید.

bf74d0d8c903f71.png

آدرس مخزن گیت:

https://github.com/GoogleCloudPlatform/genai-for-developers.git

فضای کاری و پروژه خود را انتخاب کنید و نامی برای مخزن جدید انتخاب کنید.

891c8ac58cc71419.png

برای شروع فرآیند وارد کردن، روی « Import repository » کلیک کنید.

۶. متغیرهای خط لوله Bitbucket را اضافه کنید

در مرحله‌ی بعد، باید خط لوله‌ی Bitbucket CICD را فعال کنید تا هنگام ارسال تغییرات به مخزن، بررسی کد را اجرا کند.

مخزن Bitbucket را در مرورگر باز کنید و به بخش «تنظیمات Repository settings / PIPELINES / Settings" بروید. خطوط لوله را برای این مخزن فعال کنید.

8b431c2a83222546.png

به بخش «تنظیمات Repository settings / PIPELINES / Repository variables" بروید.

اضافه کردن ۳ متغیر:

  • PROJECT_ID - شناسه پروژه qwiklabs شما
  • LOCATION - us-central1
  • GOOGLE_CLOUD_CREDENTIALS

برای مقدار متغیر GOOGLE_CLOUD_CREDENTIALS ، از کلید حساب سرویس ایجاد شده در بخش بالا استفاده کنید. این دستور را در پوسته Google Cloud اجرا کنید و مقدار را کپی/پیست کنید.

cat ~/vertex-client-key.json

نمای متغیرهای مخزن:

fe2b8e768c09dc5b.png

۷. اجرای خط لوله Bitbucket

بخش « Pipelines » را باز کنید و روی « Run initial pipeline » کلیک کنید.

f97424bbfc790da8.png

شاخه « main » و خط لوله « default » را انتخاب کرده و روی « Run » کلیک کنید.

8e7604e2f513360e.png

۸. بررسی خروجی خط لوله Bitbucket

بخش « Pipelines » را باز/بازخوانی کنید و خروجی خط لوله را بررسی کنید.

abf4fbdec6781ffd.png

335acbee3cba263f.png

نتایج دستور Test Coverage :

devai review testcoverage -c ./sample-app/src

این دستور devai review testcoverage کد و مجموعه تست مرتبط با آن را، در صورت وجود، با استفاده از یک مدل هوش مصنوعی مولد، Gemini، تجزیه و تحلیل می‌کند. این دستور، پوشش تست کد ارائه شده را ارزیابی می‌کند و فایل‌ها و روش‌های دارای تست واحد و بدون آن را شناسایی می‌کند. سپس این دستور از مدل برای ارائه خلاصه‌ای از پوشش، از جمله معیارهایی مانند خطوط و شاخه‌ها/شرایط پوشش داده شده، استفاده می‌کند. بر اساس تجزیه و تحلیل آن، توصیه‌هایی برای بهبود پوشش تست ارائه می‌دهد، تست‌های خاصی را برای اضافه کردن پیشنهاد می‌دهد و توصیه‌های کلی در مورد بهترین شیوه‌های تست ارائه می‌دهد. در نهایت، پاسخ مدل Gemini را که شامل جزئیاتی مانند فایل‌های فاقد پوشش و پیشنهاداتی برای بهبود تست‌های موجود است، از طریق خط فرمان به کاربر ارائه می‌دهد.

نتایج دستور بررسی کد :

devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

دستور devai review code با استفاده از یک مدل Generative AI، یک بررسی جامع کد از یک قطعه کد ارائه شده انجام می‌دهد. این دستور، کدی را که قرار است بررسی شود به عنوان ورودی (زمینه) و یک فرمت خروجی ترجیحی (خروجی) دریافت می‌کند. این دستور از یک مدل زبانی بزرگ برای تجزیه و تحلیل کد از نظر صحت، کارایی، قابلیت نگهداری، امنیت و پایبندی به بهترین شیوه‌ها استفاده می‌کند. این دستور یک دستورالعمل دقیق ایجاد می‌کند که به Gemini نحوه انجام بررسی را آموزش می‌دهد و سپس آن را برای ارزیابی کد ارائه شده به مدل ارسال می‌کند. در نهایت، پاسخ Gemini را پردازش می‌کند، آن را در markdown، JSON یا یک جدول مطابق با ترجیح کاربر قالب‌بندی می‌کند و نتایج بررسی را ارائه می‌دهد.

نتایج دستور بررسی انطباق :

devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md

دستور devai review compliance کد را در مقایسه با مجموعه‌ای از بهترین شیوه‌ها، معمولاً برای پیکربندی‌های Kubernetes، تجزیه و تحلیل می‌کند. این دستور از یک مدل Gemini برای بررسی کد ارائه شده ( context ) و مقایسه آن با استانداردهای مشخص شده تعریف شده در یک فایل پیکربندی جداگانه ( config ) استفاده می‌کند. این دستور از یک اعلان برای آموزش مدل Gemini به عنوان یک مهندس متخصص Kubernetes و ارائه گزارش انطباق استفاده می‌کند. سپس یافته‌ها را به صورت یک توضیح مختصر قالب‌بندی می‌کند و بر نمونه‌های کدی تمرکز دارد که نحوه رسیدگی به هرگونه مشکل شناسایی شده را نشان می‌دهند. در نهایت، این دستور خروجی بررسی انطباق Gemini را در کنسول چاپ می‌کند. این به کاربر اجازه می‌دهد تا به راحتی کد خود را از نظر انطباق ممیزی کند.

۹. مخزن Bitbucket را کلون کنید و کلید SSH را راه‌اندازی کنید

به ترمینال Google Cloud Shell برگردید و یک کلید SSH جدید تنظیم کنید.

قبل از اجرای دستورات، ایمیل خود را به‌روزرسانی کنید.

ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

cat ~/.ssh/id_ed25519.pub

یک کلید دسترسی به مخزن Bitbucket خود اضافه کنید.

« Repository settings / SECURITY / Access keys » را باز کنید و روی «افزودن کلید» کلیک کنید.

برای مقدار کلید، خروجی آخرین دستور را کپی/پیست کنید.

bac102fd433bb388.png

در بخش « Source »، روی « Clone » کلیک کنید و آدرس اینترنتی (URL) را کپی کنید.

571f4f775bcbd1f7.png

46c163d7e5356c67.png

به ترمینال برگردید و مخزن را کلون کنید.

cd ~
mkdir bitbucket
cd bitbucket

با آدرس پروژه و مخزن Bitbucket خود جایگزین کنید.

git clone git@bitbucket.org:YOUR_PROJECT/genai-for-developers.git

دایرکتوری را تغییر دهید و فایل bitbucket-pipelines.yml را باز کنید. اگر نام مخزن را هنگام وارد کردن تغییر داده‌اید، قبل از اجرای دستورات زیر، نام پوشه را به‌روزرسانی کنید.

cd genai-for-developers

cloudshell edit bitbucket-pipelines.yml

۱۰. توضیح کد با Gemini Code Assist

روی هر قسمتی از فایل bitbucket-pipelines.yml کلیک راست کنید و گزینه Gemini Code Assist > Explain this را انتخاب کنید.

29ef71c136d173a2.png

توضیح نقد:

a183a2df0b6cc668.png

۱۱. توسعه رابط خط فرمان DevAI

در این بخش شما تغییراتی در devai cli ایجاد خواهید کرد.

برای شروع، محیط مجازی پایتون (python virtualenv) را راه‌اندازی کنید، نیازمندی‌ها را نصب کنید و دستور نمونه را اجرا کنید.

cd ~/bitbucket/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo

متغیرهای محیطی مورد نیاز را تنظیم کنید.

export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1

دستور بررسی کد را اجرا کنید تا بررسی شود که همه چیز به خوبی کار می‌کند:

devai review code -c ~/bitbucket/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader > code-review.md

cloudshell edit code-review.md

نتایج را با استفاده از پیش‌نمایش Markdown در ویرایشگر Cloud Shell بررسی کنید.

سپس از پالت فرمان (Command Palette) استفاده کنید و گزینه « Markdown: Open Preview » را انتخاب کنید.

۹۵۸۷۱۲۳b۶۲f۱۲a۵۵.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

دستور بررسی پوشش تست

devai review testcoverage -c ~/bitbucket/genai-for-developers/sample-app/src > testcoverage.md

cloudshell edit testcoverage.md

دستور بررسی انطباق

devai review compliance --context ~/bitbucket/genai-for-developers/sample-app/k8s --config ~/genai-for-developers/devai-cli/.gemini/styleguide.md > k8s-review.md

cloudshell edit k8s-review.md

دستور بررسی عملکرد

devai review performance -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > performance-review.md

cloudshell edit performance-review.md

دستور بررسی امنیتی

devai review security -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > security-review.md

cloudshell edit security-review.md

دستورات بررسی مسدودکننده‌ها

devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/setup.md

بررسی و خلاصه‌سازی تصویر/نمودار

نمودار ورودی[ ~/bitbucket/genai-for-developers/images/extension-diagram.png ]:

4b109a74e1aa3fb6.png

دستور مرور:

devai review image \
  -f ~/bitbucket/genai-for-developers/images/extension-diagram.png \
  -p "Review and summarize this diagram" > image-review.md

cloudshell edit image-review.md

خروجی:

The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts. 

**Process Flow:**

1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud. 
3. **Vertex AI Review:**  Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally: 
    - Create new JIRA issues directly from the IDE based on the review prompts.
    - Generate new issues in a GitLab repository.

**Key Components:**

* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):**  Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.

**Benefits:**

* **Automated Review Assistance:**  Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews. 
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.

تحلیل تفاوت تصویر

devai review imgdiff \
  -c ~/bitbucket/genai-for-developers/images/devai-api.png \
  -t ~/bitbucket/genai-for-developers/images/devai-api-slack.png > image-diff-review.md

cloudshell edit image-diff-review.md

خروجی:

The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image:

1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 
2. **Storage Bucket:**  The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 
3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI."
4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image.

**Decision Explanation:**

The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.

تحلیل فایل ویدیویی:

devai review video \
  -f "/tmp/video.mp4" \
  -p "Review user journey video and create unit tests using jest framework"

دستور تولید مستندات

devai document readme -c ~/bitbucket/genai-for-developers/sample-app/src/main/

خروجی:

# Bank of Anthos - Balance Reader Service

## Description

The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster.

## Features
...

دستورات devai cli موجود در ویرایشگر Cloud Shell را بررسی کنید:

cloudshell edit ~/bitbucket/genai-for-developers/devai-cli/README.md

یا README.md را در مخزن گیت‌هاب مرور کنید.

۱۲. تبریک می‌گویم!

تبریک می‌گویم، شما codelab را تمام کردید!

آنچه ما پوشش داده‌ایم:

  • افزودن مراحل خودکارسازی بررسی کد GenAI در Bitbucket
  • اجرای devai cli به صورت محلی

قدم بعدی چیست؟

  • جلسات عملی بیشتری در راه است!

تمیز کردن

برای جلوگیری از تحمیل هزینه به حساب گوگل کلود خود برای منابع استفاده شده در این آموزش، یا پروژه‌ای که شامل منابع است را حذف کنید، یا پروژه را نگه دارید و منابع تکی را حذف کنید.

حذف پروژه

ساده‌ترین راه برای حذف هزینه‌ها، حذف پروژه‌ای است که برای آموزش ایجاد کرده‌اید.

©2024 Google LLC تمامی حقوق محفوظ است. گوگل و لوگوی گوگل علائم تجاری Google LLC هستند. سایر نام‌های شرکت‌ها و محصولات ممکن است علائم تجاری شرکت‌های مربوطه باشند که با آنها مرتبط هستند.