التمرين - أضف وظيفة معاينة إلى سير العمل
تريد إضافة وظيفة إضافية إلى سير العمل الخاص بك حتى تتمكن من التحقق من التغييرات التي سيتم إجراؤها على بيئة Azure الخاصة بك.
أثناء العملية، ستقوم بالمهام التالية:
- تحديث ملف YAML لتعريف سير العمل لإضافة مهمة معاينة جديدة.
- أضف بيئة إلى مستودع GitHub.
- أعدّ البيئة لطلب موافقة.
- تحديث ملف YAML الخاص سير العمل لاستخدام البيئة لوظيفة التوزيع.
- عرض مخرجات «ماذا لو» والموافقة على تشغيل سير العمل.
حدّث تعريف سير العمل لإضافة وظيفة معاينة
هنا، يمكنك إضافة وظيفة جديدة إلى سير العمل الخاص بك الذي يقوم بتشغيل عملية «ماذا لو».
في «Visual Studio Code»، افتح الملف .github/workflows/workflow.yml في مجلد .github/workflows.
بين وظيفتي التحقق من الصحة والتوزيع، أضف التعريف التالي لوظيفة المعاينة:
preview: runs-on: ubuntu-latest needs: [lint, validate] 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 }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if
لاحظ أن مهمة المعاينة تعتمد على الإكمال الناجح للوظائف والتحقق من صحتها.
تحديث وظيفة التوزيع لجعلها تعتمد على وظيفة المعاينة:
deploy: runs-on: ubuntu-latest needs: preview 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 }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
حفظ التغييرات الخاصة بك على الملف.
إضافة بيئة
في متصفحك، انتقل إلى Settings>Environments.
حدد New environment.
أدخل Website كاسم البيئة.
حدد Configure environment.
في خطوات الإعداد لهذه الوحدة، قمت بالفعل بإنشاء بيانات اعتماد موحدة لسير العمل الخاص بك لاستخدامه عند نشره في البيئة.
إضافة قاعدة حماية المراجع المطلوب إلى البيئة
حدد مربع المراجعون المطلوبون "Required reviewers".
أضف اسم المستخدم GitHub الخاص بك إلى قائمة المراجعين.
حدد حفظ قواعد الحماية.
حدد البيئات للخروج من التكوين.
حدّث تعريف سير العمل لطلب بيئة ومراجع
هنا، يمكنك تكوين وظيفة التوزيع للتشغيل على بيئة Website التي قمت بإنشائها مسبقًا.
افتح ملف workflow.yml في Visual Studio Code.
أضف
environment
العوامل إلى وظيفة التوزيع. قم بتعيين القيمة إلىWebsite
، لمطابقة اسم البيئة التي قمت بإنشائها:deploy: runs-on: ubuntu-latest environment: Website needs: preview 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 }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
حفظ الملف.
تحقق من تعريف سير العمل الخاص بك ونفذه
تحقق من أن ملف workflow.yml الخاص بك يبدو كما يلي:
name: deploy-toy-website-test concurrency: toy-company on: push: branches: - main permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest ENVIRONMENT_TYPE: Test jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file deploy/main.bicep validate: runs-on: ubuntu-latest 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 }} - uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }} deploymentMode: Validate preview: runs-on: ubuntu-latest needs: [lint, validate] 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 }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if deploy: runs-on: ubuntu-latest environment: Website needs: preview 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 }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
إذا كان الملف مختلفا، فقم بتحديثه ليطابق هذا المثال، ثم احفظه.
قم بتثبيت التغييرات ودفعها إلى مستودع Git الخاص بك عن طريق تشغيل الأوامر التالية في المحطة الطرفية لتعليمة Visual Studio البرمجية:
git add . git commit -m "Add preview job" git push
شغّل سير العمل ومراجعة مخرجات «ماذا لو»
في المتصفح انتقل إلى تشغيل سير العمل.
حدد أحدث تشغيل لسير العمل الخاص بك.
انتظر حتى يكمل سير العمل وظائف التحليل، والتحقق من الصحة، والمعاينة. على الرغم من أن GitHub يقوم تلقائيًا بتحديث الصفحة بآخر حالة، فمن المستحسن تحديث صفحتك من حين لآخر.
لاحظ أن سير العمل يطالبك بمراجعة. اعتمادا على كيفية إعداد حساب GitHub الخاص بك، ستتلقى رسالة بريد إلكتروني أو إشعار ويب مع طلب لمراجعة سير العمل.
قبل الموافقة على متابعة سير العمل، ستقوم بمراجعة مخرجات «ماذا لو» للتأكد من أنها تتطابق مع توقعاتك.
حدد وظيفة المعاينة.
حدد خطوة تشغيل ماذا لو لفحص التغييرات التي يقوم أمر «ماذا لو» بالإبلاغ عنها.
لاحظ أن سجل سير العمل يوفر مخرجات «ماذا لو» مشابهة للتعليمات البرمجية التالية:
Resource and property changes are indicated with these symbols: - Delete + Create ~ Modify = Nochange * Ignore The deployment will update the following scope: Scope: /subscriptions/***/resourceGroups/ToyWebsiteTest ~ Microsoft.OperationalInsights/workspaces/workspace-abcdefghijklm [2022-10-01] - properties.retentionInDays: 30 - properties.sku: name: "pergb2018" - properties.workspaceCapping: dailyQuotaGb: -1.0 ~ Microsoft.Web/sites/toy-website-abcdefghijklm [2022-03-01] + properties.siteConfig.localMySqlEnabled: false + properties.siteConfig.netFrameworkVersion: "v4.6" = Microsoft.Insights/components/toywebsite [2020-02-02] = Microsoft.Storage/storageAccounts/mystorageabcdefghijklm [2022-09-01] = Microsoft.Web/serverfarms/toy-website [2022-03-01] * microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite Resource changes: 2 to modify, 3 no change, 1 to ignore.
اكتشفت عملية ماذا لو تغييرا في مساحة عمل تحليلات السجل وموارد موقع الويب. ومع ذلك، فإن التغييرات التي اكتشفها هي ضوضاء. لا تمثل تغييرات حقيقية على المورد الخاص بك. بمرور الوقت، يعمل فريق Azure على تقليل الضجيج. في هذه الأثناء، يمكنك تجاهل التغييرات المكتشفة.
قد ترى أيضًا عنصرًا في إخراج «ماذا لو» لنوع المورد
microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
. هذا مورد أنشأه Application Insights تلقائيًا. يكتشف أمر «ماذا لو» أنه لن يتم إجراء أي تغيير على المورد.
أكد تشغيل سير العمل
حدد الملخص للرجوع إلى النظرة العامة لتشغيل سير العمل.
حدد الزر مراجعة عمليات التوزيع في لوحة المراجعة.
في النافذة المنبثقة مراجعة عمليات التوزيع المعلقة حدد بيئة Website. في مربع Leave a comment، أدخل Reviewed what-if results.
حدد Approve and deploy.
مراقبة التوزيع الناجح
بعد الموافقة على تشغيل سير العمل، لاحظ أن مهمة التوزيع تبدأ في التشغيل.
انتظر حتى تنتهي المهمة.
لاحظ أن تشغيل سير العمل قد اكتمل بنجاح.