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

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

درباره این codelab

subjectآخرین به‌روزرسانی: سپتامبر ۹, ۲۰۲۴
account_circleنویسنده: Andrey Shakirov

1. نمای کلی

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

b284497a465faf07.png

آنچه خواهید آموخت

در این آزمایشگاه با نحوه انجام کارهای زیر آشنا می شوید:

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

پیش نیازها

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

2. راه اندازی و الزامات

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

راه اندازی محیط

چت Gemini را باز کنید.

bc3c899ac8bcf488.png

یا «Ask Gemini» را در نوار جستجو تایپ کنید.

e1e9ad314691368a.png

فعال کردن Cloud AI Companion API:

66cb6e561e384bbf.png

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

5482c153eef23126.png

درخواست برای امتحان کردن:

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

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

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

تعهد حریم خصوصی Google

Google یکی از اولین شرکت‌هایی در این صنعت بود که تعهد حفظ حریم خصوصی AI/ML را منتشر کرد، که این اعتقاد ما را نشان می‌دهد که مشتریان باید بالاترین سطح امنیت و کنترل را بر داده‌های ذخیره‌شده در ابر داشته باشند.

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

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

رمزگذاری دستورات

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

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

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

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

3. گزینه هایی برای آزمایش فرمان ها

اگر می‌خواهید درخواست‌های devai cli موجود را تغییر یا گسترش دهید، چندین گزینه برای آن دارید.

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

Google AI Studio یک ابزار مبتنی بر وب برای نمونه سازی و آزمایش با مهندسی سریع و Gemini API است.

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

4. ایجاد حساب سرویس

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

3e0c761ca41f315e.png

در ترمینال باز شده، خدمات مورد نیاز را برای استفاده از Vertex AI API و چت 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

5. GitHub Repo را به GitLab Repo وارد کنید

به https://gitlab.com/projects/new بروید و گزینه " Import project " / " Repository by URL " را انتخاب کنید:

url مخزن Git:

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

زیر پروژه URL - شناسه کاربری gitlab خود را انتخاب کنید

Visibility را روی Public تنظیم کنید.

برای شروع فرآیند واردات، روی " Create Project " کلیک کنید.

اگر خطایی در مورد URL مخزن GitHub نامعتبر مشاهده کردید، یک توکن GitHub جدید (ریزدانه) با دسترسی فقط خواندنی مخازن عمومی ایجاد کنید و مجدداً با ارائه شناسه کاربری و رمز GitHub خود وارد کنید.

6. متغیرهای خط لوله GitLab CICD را اضافه کنید

در مرحله بعد می خواهید خط لوله GitLab CICD را فعال کنید تا زمانی که تغییرات به مخزن داده می شود، بازبینی کد را اجرا کند.

مخزن GitLab را در مرورگر باز کنید و به بخش " Settings / CICD" بروید.

بخش Variables را باز کرده و روی " Add variable " کلیک کنید.

هنگام اضافه کردن متغیرهای جدید، مطمئن شوید که علامت تمام چک باکس ها را بردارید.

مثال:

5644cec84e7303c3.png

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

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

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

cat ~/vertex-client-key.json

نمای متغیرهای CI/CD:

2f4594ce72be4834.png

7. خط لوله GitLab CICD را اجرا کنید

" Build / Pipelines " را در رابط کاربری GitLab باز کنید و روی " Run Pipeline " کلیک کنید.

a7518e37dde42366.png

8. خروجی خط لوله GitLab را مرور کنید

" Build / Jobs " را در رابط کاربری GitLab باز کنید و خروجی خط لوله را بررسی کنید.

985e4b322fb73b1c.png

9. کلون GitLab Repo

به ترمینال Google Cloud Shell برگردید و مخزن را شبیه سازی کنید.

cd ~
mkdir gitlab
cd gitlab

کاربر GitLab و url مخزن خود را که به تازگی ایجاد شده است جایگزین کنید.

git clone https://gitlab.com:YOUR_GITLAB_USERID/genai-for-developers.git

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

cd genai-for-developers

cloudshell edit
.gitlab-ci.yml

10. Gemini Code Assist را فعال کنید

روی نماد " Gemini " در گوشه سمت راست پایین کلیک کنید 7c891e32c055c0e4.png ،

روی « Login to Google Cloud » و « Select a Google Cloud Project » کلیک کنید.

f5318f22c91ecaa8.png

6b7203ffdd8485fa.png

fb8d42a6bc8a260f.png

از پنجره بازشو، پروژه Qwiklabs خود را انتخاب کنید.

f661047956a6d6f9.png

11. کد را با Gemini Code Assist توضیح دهید

در هر نقطه از فایل .gitlab-ci.yml کلیک راست کرده و Gemini Code Assist > Explain this را انتخاب کنید.

ca8f4318e7c3ea4c.png

توضیح نقد:

345e0f10411a3b11.png

12. DEVAI CLI را به صورت محلی اجرا کنید

به ترمینال Cloud Shell برگردید و دستورات زیر را برای نصب devai به صورت محلی اجرا کنید.

pip3 install devai-cli

cli نصب شد اما در PATH نیست.

WARNING: The script devai is installed in '/home/student_00_478dfeb8df15/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

برای به روز رسانی متغیر محیطی PATH دستور زیر را اجرا کنید. نام پوشه اصلی کاربر خود را جایگزین کنید. به عنوان مثال: student_00_478dfeb8df15

export PATH=$PATH:/home/YOUR-USER-HOME-FOLDER/.local/bin

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

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

devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

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

cloudshell edit ~/gitlab/genai-for-developers/devai-cli/src/devai/commands/review.py

در هر نقطه از فایل review.py کلیک راست کرده و Gemini Code Assist > Explain this را انتخاب کنید.

توضیح بررسی

30e3baf4c272c8ab.png

13. توسعه DevAI CLI

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

برای شروع، python virtualenv را راه اندازی کنید، نیازمندی ها را نصب کنید و دستور نمونه را اجرا کنید.

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

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

devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader

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

یک فایل جدید ایجاد کنید و پاسخ Gemini را جایگذاری کنید.

سپس از Command Palette استفاده کنید و " Markdown: Open Preview " را انتخاب کنید.

ec6fedf4b6d3fb73.png

9999e7fbb20cf251.png

9a12ba6ee8b3eedd.png

14. دستورات devai cli را کاوش کنید

دستور بررسی کد

devai review code -c ~/gitlab/genai-for-developers/sample-app/src/main/java

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

devai review performance -c ~/gitlab/genai-for-developers/sample-app/src/main/java

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

devai review security -c ~/gitlab/genai-for-developers/sample-app/src/main/java

دستور بررسی پوشش را تست کنید

devai review testcoverage -c ~/gitlab/genai-for-developers/sample-app/src

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

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

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

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

4b109a74e1aa3fb6.png

دستور بررسی:

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

خروجی:

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 ~/gitlab/genai-for-developers/images/devai-api.png \
 
-t ~/gitlab/genai-for-developers/images/devai-api-slack.png  

خروجی:

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 document readme -c ~/gitlab/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

- Securely retrieves account balances using JWT authentication.
- Leverages a local cache for fast balance retrieval.
- Asynchronously processes transactions from a central ledger.
- Provides health check endpoints for Kubernetes liveness and readiness probes.
...

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

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

یا README.md را در مخزن GitHub مرور کنید.

15. تبریک می گویم!

تبریک می گویم، شما نرم افزار کد را تمام کردید!

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

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

بعدش چیه:

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

پاک کن

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

حذف پروژه

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

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