التمرين - تحديث مشغل سير العمل
يطلب منك زميل تشغيل ميزة «AlwaysOn» لتطبيق «App Service» على موقع ويب الشركة، وبالتالي فإن تطبيق موقع الويب يعمل دائمًا.
في هذا التمرين، ستقوم بتحديث سير العمل الذي أنشأته لتشغيله تلقائيًا كلما تغير ملف على الفرع الرئيسي. ستستخدم سير العمل الذي تم تحديثه لتوزيع تغيير التكوين المطلوب على موقع الويب.
أثناء العملية، ستقوم بما يلي:
- حدّث سير العمل بحيث يتم تشغيله تلقائيًا كلما تغير الملف في مجلد deploy على الفرع الرئيسي.
- إجراء تغيير على ملف Bicep الخاص بك.
- تحقق من تشغيل سير العمل تلقائيًا.
تحديث المشغل ليكون مستندًا إلى الفرع
في «Visual Studio Code»، افتح الملف .github/workflows/workflow.yml.
في أعلى الملف، بعد السطر
name: deploy-toy-website
أضف التعليمات البرمجية التالية لمنع تشغيل مهام سير عمل متزامنة متعددة:name: deploy-toy-website concurrency: toy-company
قم بإزالة المشغل اليدوي، وهو حاليًا السطر
on: [workflow_dispatch]
.بين
concurrency:
وإضافةpermissions:
تعريف المشغل التالي:concurrency: toy-company on: push: branches: - main paths: - 'deploy/**' permissions:
حفظ التغييرات الخاصة بك على الملف.
قم بتنفيذ التغييرات، ولكن لا تدفعها بعد. ستدفع التغييرات قريبا.
git add . git commit -m 'Add branch trigger'
تحديث ملف Bicep الخاص بك
في Visual Studio Code، افتح الملف main.bicep.
في خاصية
appServiceApp
تعريف المواردsiteConfig
، أضِف الخاصيةalwaysOn
بقيمةtrue
:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: true appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } }
حفظ التغييرات الخاصة بك على الملف.
في الوحدة الطرفية «Visual Studio Code»، شغّل التعليمات البرمجية التالية لتثبيت التغييرات ودفع كلا عمليتي التثبيت:
git add . git commit -m 'Configure app Always On setting' git push
التحقق من فشل تشغيل سير العمل
في المتصفح، حدد قائمةGitHub Actions، وحدد سير العمل.
حدد آخر تشغيل لسير العمل للتأكد من تشغيل سير العمل تلقائيا. تم تشغيل سير العمل لأنك دفعت التغييرات إلى فرع مراقب بواسطة مشغل الدفع. إذا كان سير العمل لا يزال قيد التشغيل، انتظر دقيقة ثم قم بتحديث الصفحة.
يعرض سير العمل عملية توزيع فاشلة.
لتشخيص الفشل، حدد وظيفة deploy، وحدد مهمة arm-deploy الفاشلة.
لاحظ أنها تتضمن النص التالي:
There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails
تشير رسالة الخطأ هذه إلى فشل عملية التوزيع بسبب توزيع تطبيق App Service باستخدام االمستوى المجاني F1 والذي لا يدعم ميزة «مجموعات قابلية وصول عالية التوفر AlwaysOn».
هام
يوضح هذا المثال كيفية اختبار ملفات Bicep، بما في ذلك كافة قيم المعلمات التي تستخدمها. من السهل إضافة الأخطاء الدقيقة إلى تكوين الموارد أو التعليمات البرمجية الأخرى. قد لا تكتشف مشكلة حتى يوزع سير العمل التعليمات البرمجية وتفشل. في وحدة لاحقة، ستتعلم بعض الاستراتيجيات التي يمكنك استخدامها للتحقق من تعليمة Bicep البرمجية واختبارها.
إصلاح ملف Bicep وعرض سير العمل الذي تم تشغيله مرة أخرى
تحدث إلى زميلك حول عملية التوزيع الفاشلة. معًا، تقرر أن إعداد «AlwaysOn» يجب ألا يتم تطبيقه إلا على بيئة الإنتاج. هنا، يمكنك إصلاح المشكلة التي تسببت في فشل التوزيع عن طريق تطبيق القاعدة الجديدة التي قررت استخدامها.
فيVisual Studio Code، قم بإضافة خصائص جديدة لكل نوع بيئة إلى المتغير
environmentConfigurationMap
:var environmentConfigurationMap = { nonprod: { appServiceApp: { alwaysOn: false } appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServiceApp: { alwaysOn: true } appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } }
تغيير إعداد التطبيق
alwaysOn
لاستخدام قيمة مخطط التكوين المناسبة لنوع البيئة:resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
حفظ التغييرات الخاصة بك على الملف.
في الوحدة الطرفية «Visual Studio Code»، قم بتثبيت التغييرات ودفعها:
git add . git commit -m 'Enable App Service Always On for production environments only' git push
التحقق من نجاح تشغيل سير العمل
في «GitHub»، ارجع إلى قائمة workflows. حدد سير العمل.
حدد أحدث عملية تحديث. إذا كان سير العمل لا يزال قيد التشغيل، انتظر دقيقة ثم قم بتحديث الصفحة.
يتم عرض تشغيل سير العمل.
يعرض سير العمل عملية توزيع ناجحة. نجح هذه المرة لأنك استخدمت ملف Bicep صالح.
تفريغ مجموعة الموارد
الآن بعد الانتهاء من التمرين، يمكنك إزالة الموارد حتى لا تتم محاسبتك عليها.
في Terminal في «Visual Studio Code»، شغِّل الأمر التالي:
az group delete --resource-group ToyWebsite --yes --no-wait
يتم حذف مجموعة الموارد في الخلفية.
Remove-AzResourceGroup -Name ToyWebsite -Force