1. نظرة عامة
في هذا الدرس، ستضبط مسار التعلّم "التكامل المستمر/التسليم المستمر" (CICD) في GitLab وتدمجه مع Gemini لأتمتة خطوات مراجعة الرموز البرمجية.

المواضيع التي ستتعرّف عليها
في هذا الدرس، ستتعرّف على ما يلي:
- كيفية إضافة خطوات أتمتة مراجعة الرموز البرمجية باستخدام الذكاء الاصطناعي التوليدي في GitLab
- كيفية تشغيل devai cli محليًا لأتمتة مراجعات الرموز البرمجية
المتطلبات الأساسية
- يفترض هذا الدرس الإلمام ببيئتَي Cloud Console وCloud Shell.
2. الإعداد والمتطلبات
إعداد مشروع على السحابة الإلكترونية
- سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.



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

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

فعِّل Gemini for Google Cloud API:

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

إليك بعض الطلبات التي يمكن تجربتها:
- اشرح Cloud Run في 5 نقاط رئيسية.
- أنت مدير منتج Google Cloud Run، اشرح 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.
- تطبيق Gemini للويب (gemini.google.com)
تطبيق Google Gemini للويب (gemini.google.com) هو أداة مستندة إلى الويب مصمّمة لمساعدتك في استكشاف قوة نماذج الذكاء الاصطناعي من Gemini من Google واستخدامها.
- تطبيق Google Gemini للأجهزة الجوّالة على Android وتطبيق Google على iOS
4. إنشاء حساب خدمة
فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

في الوحدة الطرفية المفتوحة، فعِّل الخدمات المطلوبة لاستخدام Vertex AI APIs ومحادثة Gemini.
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
إذا طُلب منك منح الإذن، انقر على "منح الإذن" للمتابعة.

شغِّل الأوامر التالية لإنشاء حساب خدمة جديد ومفاتيح.
ستستخدم حساب الخدمة هذا لإجراء طلبات إلى Vertex AI Gemini API من مسارَي التعلّم "التكامل المستمر/التسليم المستمر".
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
بعد ذلك، ستفعِّل مسار التعلّم "التكامل المستمر/التسليم المستمر" في GitLab لتشغيل مراجعة الرموز البرمجية عند إرسال التغييرات إلى المستودع.
افتح مستودع GitLab في المتصفّح وانتقِل إلى القسم "Settings / CICD"
وسِّع قسم Variables وانقر على "Add variable".
احرص على إزالة العلامة من جميع مربّعات الاختيار عند إضافة المتغيّرات الجديدة.
مثال:

أضِف 3 متغيّرات:
PROJECT_ID- رقم تعريف مشروع qwiklabsLOCATION- us-central1GOOGLE_CLOUD_CREDENTIALS
بالنسبة إلى قيمة المتغيّر GOOGLE_CLOUD_CREDENTIALS، استخدِم مفتاح حساب الخدمة الذي تم إنشاؤه في القسم أعلاه. شغِّل هذا الأمر في Google Cloud Shell وانسخ القيمة والصقها.
cat ~/vertex-client-key.json
عرض متغيّرات التكامل المستمر/التسليم المستمر:

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

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

نظرة عامة على أوامر مسار التعلّم
إعداد مسار التعلّم في 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 هذا.

راجِع الشرح:

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.
استخدِم لوحة الأوامر واختَر "Markdown: Open Preview".



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

أمر المراجعة:
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 Editor:
cloudshell edit ~/gitlab/genai-for-developers/devai-cli/README.md
أو راجِع الملف README.md في مستودع GitHub.
13. تهانينا!
تهانينا، لقد أكملت الدرس التطبيقي حول الترميز.
المواضيع التي تناولناها:
- إضافة خطوات أتمتة مراجعة الرموز البرمجية باستخدام الذكاء الاصطناعي التوليدي في GitLab
- تشغيل devai cli محليًا
الخطوة التالية:
- سنعلن قريبًا عن جلسات عملية إضافية.
إخلاء مساحة
لتجنُّب تكبّد رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، يمكنك حذف المشروع الذي يحتوي على الموارد أو الاحتفاظ بالمشروع وحذف الموارد الفردية.
حذف المشروع
أسهل طريقة لإلغاء الفوترة هي حذف المشروع الذي أنشأته للبرنامج التعليمي.
©2024 Google LLC. جميع الحقوق محفوظة. Google وشعار Google هما علامتان تجاريتان (TM) تابعتان لشركة Google LLC. جميع أسماء الشركات والمنتجات الأخرى قد تكون علامات تجارية للشركات المالكة لها.