التمرين - أضف وظيفة معاينة إلى سير العمل

مكتمل

تريد إضافة وظيفة إضافية إلى سير العمل الخاص بك حتى تتمكن من التحقق من التغييرات التي سيتم إجراؤها على بيئة Azure الخاصة بك.

أثناء العملية، ستقوم بالمهام التالية:

  • تحديث ملف YAML لتعريف سير العمل لإضافة مهمة معاينة جديدة.
  • أضف بيئة إلى مستودع GitHub.
  • أعدّ البيئة لطلب موافقة.
  • تحديث ملف YAML الخاص سير العمل لاستخدام البيئة لوظيفة التوزيع.
  • عرض مخرجات «ماذا لو» والموافقة على تشغيل سير العمل.

حدّث تعريف سير العمل لإضافة وظيفة معاينة

هنا، يمكنك إضافة وظيفة جديدة إلى سير العمل الخاص بك الذي يقوم بتشغيل عملية «ماذا لو».

  1. في «Visual Studio Code»، افتح الملف .github/workflows/workflow.yml في مجلد .github/workflows.

  2. بين وظيفتي التحقق من الصحة والتوزيع، أضف التعريف التالي لوظيفة المعاينة:

    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
    

    لاحظ أن مهمة المعاينة تعتمد على الإكمال الناجح للوظائف والتحقق من صحتها.

  3. تحديث وظيفة التوزيع لجعلها تعتمد على وظيفة المعاينة:

    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 }}
    
  4. حفظ التغييرات الخاصة بك على الملف.

إضافة بيئة

  1. في متصفحك، انتقل إلى Settings>Environments.

  2. حدد New environment.

    لقطة شاشة لواجهة GitHub تعرض صفحة «البيئات»، مع تمييز زر

  3. أدخل Website كاسم البيئة.

  4. حدد Configure environment.

    لقطة شاشة لصفحة GitHub في بيئة جديدة مع اكتمال التفاصيل وتمييز بيئة الزر Configure

في خطوات الإعداد لهذه الوحدة، قمت بالفعل بإنشاء بيانات اعتماد موحدة لسير العمل الخاص بك لاستخدامه عند نشره في البيئة.

إضافة قاعدة حماية المراجع المطلوب إلى البيئة

  1. حدد مربع المراجعون المطلوبون "Required reviewers".

  2. أضف اسم المستخدم GitHub الخاص بك إلى قائمة المراجعين.

    لقطة شاشة لواجهة GitHub التي تعرض بيئة موقع الويب، مع جعل مربع المراجعين المطلوبين وعلبة النص مميزة بلون.

  3. حدد حفظ قواعد الحماية.

  4. حدد البيئات للخروج من التكوين.

حدّث تعريف سير العمل لطلب بيئة ومراجع

هنا، يمكنك تكوين وظيفة التوزيع للتشغيل على بيئة Website التي قمت بإنشائها مسبقًا.

  1. افتح ملف workflow.yml في Visual Studio Code.

  2. أضف 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 }}
    
  3. حفظ الملف.

تحقق من تعريف سير العمل الخاص بك ونفذه

  1. تحقق من أن ملف 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 }}
    

    إذا كان الملف مختلفا، فقم بتحديثه ليطابق هذا المثال، ثم احفظه.

  2. قم بتثبيت التغييرات ودفعها إلى مستودع Git الخاص بك عن طريق تشغيل الأوامر التالية في المحطة الطرفية لتعليمة Visual Studio البرمجية:

    git add .
    git commit -m "Add preview job"
    git push
    

شغّل سير العمل ومراجعة مخرجات «ماذا لو»

  1. في المتصفح انتقل إلى تشغيل سير العمل.

  2. حدد أحدث تشغيل لسير العمل الخاص بك.

    انتظر حتى يكمل سير العمل وظائف التحليل، والتحقق من الصحة، والمعاينة. على الرغم من أن GitHub يقوم تلقائيًا بتحديث الصفحة بآخر حالة، فمن المستحسن تحديث صفحتك من حين لآخر.

  3. لاحظ أن سير العمل يطالبك بمراجعة. اعتمادا على كيفية إعداد حساب GitHub الخاص بك، ستتلقى رسالة بريد إلكتروني أو إشعار ويب مع طلب لمراجعة سير العمل.

    لقطة شاشة لواجهة GitHub التي تعرض تشغيل سير العمل، مع تمييز متطلبات المراجعة.

    قبل الموافقة على متابعة سير العمل، ستقوم بمراجعة مخرجات «ماذا لو» للتأكد من أنها تتطابق مع توقعاتك.

  4. حدد وظيفة المعاينة.

  5. حدد خطوة تشغيل ماذا لو لفحص التغييرات التي يقوم أمر «ماذا لو» بالإبلاغ عنها.

  6. لاحظ أن سجل سير العمل يوفر مخرجات «ماذا لو» مشابهة للتعليمات البرمجية التالية:

    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 تلقائيًا. يكتشف أمر «ماذا لو» أنه لن يتم إجراء أي تغيير على المورد.

أكد تشغيل سير العمل

  1. حدد الملخص للرجوع إلى النظرة العامة لتشغيل سير العمل.

    لقطة شاشة لواجهة GitHub التي تعرض قائمة الملخص، مع تمييز السهم الخلفي.

  2. حدد الزر مراجعة عمليات التوزيع في لوحة المراجعة.

  3. في النافذة المنبثقة مراجعة عمليات التوزيع المعلقة حدد بيئة Website. في مربع Leave a comment، أدخل Reviewed what-if results.

  4. حدد Approve and deploy.

    لقطة شاشة لواجهة GitHub تعرض صفحة الموافقة على سير العمل، مع تمييز الزر Approve

مراقبة التوزيع الناجح

  1. بعد الموافقة على تشغيل سير العمل، لاحظ أن مهمة التوزيع تبدأ في التشغيل.

    انتظر حتى تنتهي المهمة.

  2. لاحظ أن تشغيل سير العمل قد اكتمل بنجاح.