تمرين - نشر وحدة إلى أحد السجلات
في شركة الألعاب خاصتك، كنت تنشر وحدات Bicep خاصتك في سجل. لقد شغلت عملية النشر يدوياً من حاسوبك الخاص. الآن، تريد إنشاء سير عمل للتعامل مع عملية النشر.
في هذا التمرين، ستقوم بما يلي:
- بادر بإنشاء سجل حاوية لوحدات Bicep خاصتك.
- أضِف مهمة تحليل الأخطاء إلى سير العمل.
- أضِف مهمة سير عمل لنشر الوحدة إلى سجلك.
- تحقق من تشغيل سير عملك بنجاح.
- تحقق من الوحدة المنشورة في سجلك الخاص.
إنشاء سجل حاويات
قبل أن تتمكن من نشر الوحدات، يتعين إنشاء سجل لتستخدمه مؤسستك. هنا، يمكنك استخدام مدخل Azure لإنشاء سجل.
في متصفحك، بادر بإنشاء سجل حاوية جديد داخل مدخل Azure.
في علامة التبويب Basics، حدد اشتراكك المستهدف ومجموعة موارد ToyReusable التي أنشأتها سابقاً.
أدخل اسمًا لسجلك وموقعًا قريبًا منك.
هام
يجب أن يكون اسم التسجيل فريداً داخل Azure وأن يحتوي على 5-50 حرفاً أبجدياً رقمياً. تشير علامة الاختيار الموجودة بجوار اسم السجل إلى توفر الاسم الذي اخترته.
بالنسبة لـ" SKU"، حدد " Basic".
اترك القيم الافتراضية لإعدادات التكوين الأخرى.
حدد "Review + create".
راجع الإعدادات تعرض التحقق من الصحة الذي تم تمريره ثم حدد إنشاء.
انتظر حتى ينتهي التوزيع، والذي يستغرق عادةً من دقيقة إلى دقيقتين.
عند ظهور رسالة Deployment succeeded، حدد Go to resource لفتح سجل الحاوية.
في منطقة Overview الخاصة بسجل الحاويات، لاحظ قيمة إعداد Login server. الاسم مثل yourregistryname.azurecr.io.
ستحتاج إلى هذه القيمة قريباً.
أضف ملف بيانات تعريف الوحدة
في الوحدة السابقة، تعلمت أهمية وجود استراتيجية تعيين الإصدار لوحداتك. تعلمت أيضاً كيفية استخدام ملفات بيانات التعريف الخاصة بالوحدة لتحديد رقم الإصدار الرئيسي والثانوي لوحدتك داخل سير العمل. هنا، يمكنك إضافة ملف بيانات التعريف لوحدة حساب التخزين خاصتك.
في Visual Studio Code، قم بتوسيع المجلد modules /storage-account في جذر المستودع الخاص بك.
بادر بإنشاء ملف جديد باسم metadata.json.
أضف المحتوى التالي إلى الملف:
{ "version": { "major": 1, "minor": 2 } }
لاحظ أنه في ملف بيانات التعريف، يمكنك تحديد أرقام الإصدارات الرئيسية والثانوية بشكل منفصل. يجمع سير العمل بين هذه الأرقام ورقم تشغيل سير العمل، في رقم إصدار كامل، في كل مرة يتم فيها تشغيل سير العمل.
حفظ التغييرات الخاصة بك على الملف.
حدِّث تعريف سير عملك وأضِف مهمة تحليل الأخطاء
يحتوي مستودعك على مسودة سير العمل التي يمكنك استخدامها لتكون نقطة بداية.
في Visual Studio Code، قم بتوسيع المجلد .github/workflows في جذر المستودع.
افتح ملف module-storage-account.yml.
تحديث قيمة
MODULE_REGISTRY_SERVER
متغير البيئة إلى اسم خادم سجل الحاوية. لقد نسخت هذا الاسم في وقتٍ سابقٍ من هذا التمرين.على سبيل المثال، إذا كان خادم تسجيل الدخول الخاص بالسجل الخاص بك yourregistryname.azurecr.io، فإن التعليمات البرمجية الخاصة بك مثل هذا المثال:
env: MODULE_NAME: storage-account MODULE_REGISTRY_SERVER: yourregistryname.azurecr.io MODULE_FILE_PATH: modules/storage-account/main.bicep MODULE_METADATA_FILE_PATH: modules/storage-account/metadata.json
في أسفل الملف، بالنسبة لتعليق To be added، أضِف تعريف مهمة تحليل الأخطاء التالي:
jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.MODULE_FILE_PATH }}
أضِف مهمة الإبلاغ عن النشر إلى سير عملك
الآن، يمكنك إضافة مهمة ثانية لنشر الوحدة إلى سجل الحاوية خاصتك.
في أسفل ملف module-storage-account.yml، أضِف الجزء الأول من تعريف مهمة النشر.
publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
تسحب الخطوات من التعليمات البرمجية من مستودعك وتسجل الدخول إلى Azure.
أسفل التعليمة البرمجية التي أضفتها للتو، أضِف خطوة لقراءة رقم الإصدار من ملف metadata.json الخاص بوحدتك وبادر بتعيينه ليكون أحد متغيرات البيئة.
- name: Get module version number run: | majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' ${{ env.MODULE_METADATA_FILE_PATH }} -r ) versionNumber="$majorMinorVersionNumber.${{ github.run_number }}" echo "MODULE_VERSION=$versionNumber" >> $GITHUB_ENV
تشغل الخطوة برنامجاً نصياً يستخدم تطبيق سطر الأوامر jq لتوزيع ملف JSON.
بعد الخطوة التي قمت بإنشائها، أضف خطوة لنشر الوحدة النمطية إلى السجل.
- uses: azure/cli@v1 name: Publish module with: inlineScript: | az bicep publish \ --target 'br:${{ env.MODULE_REGISTRY_SERVER }}/${{ env.MODULE_NAME }}:${{ env.MODULE_VERSION }}' \ --file ${{ env.MODULE_FILE_PATH }}
لاحظ أن هذه الخطوة تنشئ قيمة الوسيطة
--target
ديناميكياً. إنه يجمع بين قيمة خادم السجل واسم الوحدة ورقم الإصدار.حفظ التغييرات الخاصة بك على الملف.
تحقق من تعريف سير العمل الخاص بك ونفذه
تحقق من أن ملف module-storage-account.yml خاصتك يبدو كالمثال التالي:
name: module-storage-account concurrency: module-storage-account on: workflow_dispatch: push: branches: - main paths: - 'modules/storage-account/**' permissions: id-token: write contents: read env: MODULE_NAME: storage-account MODULE_REGISTRY_SERVER: yourregistryname.azurecr.io MODULE_FILE_PATH: modules/storage-account/main.bicep MODULE_METADATA_FILE_PATH: modules/storage-account/metadata.json jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file ${{ env.MODULE_FILE_PATH }} publish: runs-on: ubuntu-latest needs: [ lint ] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: Get module version number run: | majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' ${{ env.MODULE_METADATA_FILE_PATH }} -r ) versionNumber="$majorMinorVersionNumber.${{ github.run_number }}" echo "MODULE_VERSION=$versionNumber" >> $GITHUB_ENV - uses: azure/cli@v1 name: Publish module with: inlineScript: | az bicep publish \ --target 'br:${{ env.MODULE_REGISTRY_SERVER }}/${{ env.MODULE_NAME }}:${{ env.MODULE_VERSION }}' \ --file ${{ env.MODULE_FILE_PATH }}
إذا لم يكن كذلك، فقم بتحديثه ليطابق هذا المثال، ثم احفظه.
قم بتثبيت التغييرات ودفعها إلى مستودع Git الخاص بك عن طريق تشغيل الأوامر التالية في المحطة الطرفية لتعليمة Visual Studio البرمجية:
git add . git commit -m "Add lint and publish jobs to storage account module workflow" git push
تشغيل مسار العمل
في متصفحك، انتقل إلى مستودع GitHub خاصتك وحدد علامة التبويب Actions.
حدد سير عمل module-storage-account.
لاحظ أن تشغيل سير عمل قيد التقدم بالفعل. تم تشغيل مشغل الدفع لأنك عدلت ملف metadata.json داخل مجلد الوحدة.
حدد أحدث تشغيل في القائمة.
انتظر سير العمل حتى ينتهي. تُنشر الوحدة Bicep إلى سجل الحاوية خاصتك.
لاحظ رقم تشغيل سير العمل، والذي ربما يكون 3.
مراجعة الوحدة في السجل
يمكنك أيضاً عرض الوحدة المنشورة في مدخل Azure.
في المستعرض لديك، انتقل إلى مدخل Azure.
انتقل إلى مجموعة موارد ToyReusable.
حدد سجل الحاوية الذي أنشأته مُسبقاً.
حدد Repositories من القائمة. ثم حدد مستودع modules\storage-account، الذي يمثل سير العمل الذي نشرته البنية الأساسية.
لاحظ أن هناك علامة واحدة تتطابق مع رقم إصدار الوحدة التي نشره سير العمل لديك. يتطابق الإصدار الرئيسي (1) والإصدار الثانوي (2) مع أرقام الإصدارات التي حددتها في ملف metadata.json. يطابق عدد المراجعة (3) رقم تشغيل سير العمل.
تفريغ مجموعة الموارد
الآن بعد الانتهاء من التمرين، يمكنك إزالة الموارد حتى لا تتم محاسبتك عليها.
في المحطة الطرفية لتعليمة Visual Studio البرمجية، شغِّل الأمر التالي:
az group delete --resource-group ToyReusable --yes --no-wait
يتم حذف مجموعة الموارد في الخلفية.
Remove-AzResourceGroup -Name ToyReusable -Force
يمكنك أيضا إزالة أسرار GitHub والمستودع وهويات حمل عمل Azure.
البيانات السرية في GitHub
- من مستودع GitHub، انتقل إلى الإعدادات> Secrets والمتغيرات>Actions.
- حدد إزالة البيانات السرية لكل سر مستودع واتبع المطالبات.
مستودع GitHub
- انتقل إلى الإعدادات> General
- حدد حذف هذا المستودع واتبع المطالبات.
بيانات اعتماد تسجيل تطبيق Azure الموحدة ومدير الخدمة.
- من الصفحة الرئيسية للمدخل، ابحث عن Azure Active Directory وحدده من قائمة الخدمات.
- انتقل إلى إدارة>تسجيلات التطبيقات.
- في التطبيقات المملوكة ، حدد toy-reusable.
- حدد حذف واتبع المطالبات.
- حدد التطبيقات المحذوفة لحذف تسجيل التطبيق نهائيا.
هام
من الممكن أن يكون لديك تسجيل تطبيق مكرر وأسماء كيان الخدمة. يوصى بالتحقق من معرف التطبيق للتأكد من حذف المورد الصحيح.