‫GitLab - التشغيل الآلي لمراجعة الرموز البرمجية باستخدام الذكاء الاصطناعي التوليدي

1. نظرة عامة

في هذا التمرين العملي، ستعمل على إعداد مسارَي التعلّم "الدمج المستمر" (CI) أو "النشر المستمر" (CD) ضمن GitLab ودمجهما مع Gemini لتنفيذ خطوات مراجعة الرموز البرمجية آليًا.

e6923862de67e3f5.png

ما ستتعلمه

في هذه الميزة الاختبارية، ستتعرّف على كيفية إجراء ما يلي:

  • كيفية إضافة خطوات التشغيل الآلي لمراجعة الرمز البرمجي باستخدام الذكاء الاصطناعي التوليدي في GitLab
  • كيفية تشغيل أداة سطر الأوامر devai محليًا لأتمتة مراجعات الرموز البرمجية

المتطلبات الأساسية

  • يفترض هذا التمرين العملي معرفة بيئتَي Cloud Console وCloud Shell.

2. الإعداد والمتطلبات

إعداد مشروع على السحابة الإلكترونية

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

fbef9caa1602edd0.pnga99b7ace416376c4.png5e3ff691252acf41.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم آخر عشوائي. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة ويظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، وتستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير، إن وُجدت أي تكلفة. لإيقاف الموارد وتجنُّب تحمّل تكاليف فوترة تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

إعداد البيئة

افتح محادثة Gemini.

bc3c899ac8bcf488.png

أو اكتب "اسأل Gemini" في شريط البحث.

e1e9ad314691368a.png

فعِّل واجهة برمجة التطبيقات Gemini for Google Cloud API باتّباع الخطوات التالية:

990a0ceea7d05531.png

انقر على "Start chatting" واتّبِع أحد الأسئلة النموذجية أو اكتب طلبك الخاص لتجربته.

ed120d672468b412.png

إليك بعض الطلبات التي يمكن تجربتها:

  • اشرح Cloud Run في 5 نقاط رئيسية.
  • أنا مدير منتج Cloud Run في Google Cloud، أريد شرح Cloud Run لطالب في 5 نقاط رئيسية قصيرة.
  • أنت مدير منتج في Google Cloud Run، اشرح خدمة Cloud Run لمطوّر معتمد في Kubernetes في 5 نقاط رئيسية قصيرة.
  • أنت مدير منتج في Google Cloud Run، اشرح متى تستخدم Cloud Run بدلاً من GKE لأحد كبار المطوّرين في 5 نقاط رئيسية قصيرة.

يمكنك الاطّلاع على دليل الطلبات لمعرفة المزيد حول كتابة طلبات أفضل.

كيف يستخدم "Gemini في Google Cloud" بياناتك؟

التزام Google بالخصوصية

كانت Google من أوائل الشركات في المجال التي نشرت التزامًا بشأن خصوصية الذكاء الاصطناعي/تعلُّم الآلة، يوضّح اعتقادنا بأنّه يجب أن يحصل العملاء على أعلى مستوى من الأمان والتحكّم في بياناتهم المخزّنة في السحابة الإلكترونية.

البيانات التي ترسلها وتتلقّاها

تُعرف الأسئلة التي تطرحها على Gemini، بما في ذلك أي معلومات أو رموز برمجية ترسلها إلى 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) هو أداة مستندة إلى الويب مصمّمة لمساعدتك في استكشاف إمكانات نماذج الذكاء الاصطناعي من Google Gemini والاستفادة منها.

4. إنشاء حساب خدمة

فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

3e0c761ca41f315e.png

في نافذة الوحدة الطرفية التي تم فتحها، فعِّل الخدمات المطلوبة لاستخدام واجهات برمجة التطبيقات في Vertex AI ومحادثة Gemini.

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

إذا طُلب منك منح الإذن، انقر على "منح الإذن" للمتابعة.

6356559df3eccdda.png

نفِّذ الأوامر التالية لإنشاء حساب خدمة ومفاتيح جديدة.

ستستخدم حساب الخدمة هذا لإجراء طلبات البيانات من واجهة برمجة التطبيقات إلى 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 إلى مستودع GitLab

انتقِل إلى https://gitlab.com/projects/new واختَر الخيار "Import project" / "Repository by URL":

عنوان URL الخاص بمستودع Git:

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

ضمن "عنوان URL للمشروع"، اختَر معرّف مستخدم gitlab

اضبط مستوى الرؤية على Public.

انقر على "Create Project" لبدء عملية الاستيراد.

إذا ظهر لك خطأ بشأن عنوان URL غير صالح لمستودع GitHub، عليك إنشاء رمز مميّز جديد في GitHub(دقيق) مع إذن وصول للقراءة فقط إلى المستودعات العامة، ثم إعادة محاولة الاستيراد مرة أخرى مع تقديم معرّف مستخدم GitHub والرمز المميّز.

6. إضافة متغيّرات مسار التكامل المستمر والنشر المستمر في GitLab

بعد ذلك، ستفعّل مسار CICD في GitLab لتشغيل مراجعة التعليمات البرمجية عند إرسال التغييرات إلى المستودع.

افتح مستودع 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

طريقة عرض متغيرات التكامل المستمر/التسليم المستمر:

2f4594ce72be4834.png

7. تشغيل مسار التكامل المستمر والنشر المستمر في GitLab

افتح "Build / Pipelines" في واجهة مستخدم GitLab وانقر على "Run Pipeline".

a7518e37dde42366.png

8. مراجعة ناتج مسار GitLab

افتح "Build / Jobs" في واجهة مستخدم GitLab وراجِع نتائج خط الأنابيب.

985e4b322fb73b1c.png

نظرة عامة على أوامر مسار الإجراءات

إعداد مسار GitLab: .gitlab-ci.yml

أمر تغطية الاختبار:

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 مراجعة الرمز البرمجي شاملة لمقتطف الرمز البرمجي المقدَّم باستخدام نموذج الذكاء الاصطناعي التوليدي. يأخذ هذا الإجراء الرمز المراد مراجعته كمدخل (السياق) وتفضيل تنسيق الإخراج (الإخراج). تستفيد هذه الأداة من نموذج لغوي كبير لتحليل الرمز البرمجي من حيث صحته وكفاءته وسهولة صيانته وأمانه والتزامه بأفضل الممارسات. ينشئ الأمر طلبًا تفصيليًا يقدّم تعليمات إلى 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 في وحدة التحكّم. يتيح ذلك للمستخدم تدقيق التعليمات البرمجية بسهولة للتأكّد من امتثالها للمعايير.

9. استنساخ مستودع GitLab

ارجع إلى نافذة 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

انقر بزر الماوس الأيمن في أي مكان في ملف .gitlab-ci.yml واختَر Gemini Code Assist > Explain.

f112229bcb52f48a.png

شرح المراجعة:

b07fb4cdf803c141.png

11. تطوير DevAI CLI

في هذا القسم، ستجري تغييرات على devai cli.

للبدء، عليك إعداد بيئة python الافتراضية وتثبيت المتطلبات وتشغيل الأمر النموذجي.

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

اضبط متغيرات البيئة المطلوبة.

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 > code-review.md

cloudshell edit code-review.md

راجِع النتائج باستخدام معاينة Markdown في Cloud Shell Editor.

استخدِم "لوحة الأوامر" (Command Palette) واختَر "Markdown: Open Preview".

9587123b62f12a55.png9999e7fbb20cf251.png9a12ba6ee8b3eedd.png

12. استكشاف أوامر devai cli

أمر مراجعة تغطية الاختبار

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

cloudshell edit testcoverage.md

أمر مراجعة الامتثال

devai review compliance --context ~/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 ~/genai-for-developers/sample-app/src/main/java > performance-review.md

cloudshell edit performance-review.md

أمر مراجعة الأمان

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

cloudshell edit security-review.md

أوامر مراجعة الحظر

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

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

أو يمكنك مراجعة ملف README.md في مستودع GitHub.

13. تهانينا!

تهانينا، لقد أكملت درس البرمجة.

المواضيع التي تناولناها:

  • إضافة خطوات مراجعة الرموز البرمجية آليًا باستخدام الذكاء الاصطناعي التوليدي في GitLab
  • تشغيل أداة سطر الأوامر devai محليًا

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

  • سنقدّم المزيد من الجلسات العملية قريبًا.

تَنظيم

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، احذف المشروع الذي يحتوي على الموارد أو احتفظ بالمشروع واحذف الموارد الفردية.

حذف المشروع

أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.

‫‎© 2024 Google LLC. جميع الحقوق محفوظة. ‫Google وشعار Google هما علامتان تجاريتان (TM) تابعتان لشركة Google LLC. جميع أسماء الشركات والمنتجات الأخرى قد تكون علامات تجارية للشركات المالكة لها.