練習 - 將預覽作業新增至您的工作流程

已完成

您想要將額外的作業新增至工作流程,以檢查 Azure 環境將有何變更。

在此過程期間,您將執行下列工作:

  • 更新工作流程定義 YAML 檔案,以新增預覽作業。
  • 將環境新增至 GitHub 存放庫。
  • 將環境設定為需要檢閱。
  • 更新工作流程 YAML 檔案,以將環境用於部署作業。
  • 檢視假設狀況結果並核准工作流程執行。

更新工作流程定義以新增預覽作業

在這裡,您會將新作業新增至執行假設狀況作業的工作流程。

  1. 在 Visual Studio Code 中,開啟 [.github/workflows] 資料夾中的 workflow.yml 檔案。

  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
    

    請注意,預覽作業取決於 lint驗證作業是否順利完成。

  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. 在瀏覽器中,前往 [設定] > [環境]

  2. 選取 [新增環境]

    GitHub 介面的螢幕擷取畫面,其中顯示 [環境] 頁面與已醒目提示的建立環境按鈕。

  3. 輸入 Website 作為環境名稱。

  4. 選取 [設定環境]

    新環境 GitHub 頁面的螢幕擷取畫面,其中包含已完成的詳細資料和已醒目提示的 [設定環境] 按鈕。

在本課程模組的設定步驟中,您已為工作流程建立同盟認證,以在部署至環境時使用。

將必要的檢閱者保護規則新增至環境

  1. 選取 [必要的檢閱者] 方塊。

  2. 將您自己的 GitHub 使用者名稱新增至檢閱者清單。

    GitHub 介面的螢幕擷取畫面,其中顯示 Website 環境與已醒目提示的 [必要的檢閱者] 核取方塊和文字方塊。

  3. 選取 [儲存保護規則]

  4. 選取 [環境] 以結束設定。

更新工作流程定義以要求環境和檢閱者

在此,您會將部署作業設定為針對先前建立的 Website 環境執行。

  1. 在 Visual Studio Code 中開啟 workflow.yml 檔案。

  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. 在 Visual Studio Code 終端機中執行下列命令,以認可所做的變更,並將其推送至您的 Git 存放庫:

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

執行工作流程並檢閱假設狀況輸出

  1. 在瀏覽器中,前往工作流程執行。

  2. 選取工作流程的最新執行。

    等候工作流程完成 lint 分析驗證預覽作業。 雖然 GitHub 會以最新狀態自動更新頁面,但建議您偶爾重新整理頁面。

  3. 請注意,工作流程會提示您進行檢閱。 視 GitHub 帳戶的設定方式而定,您將會收到電子郵件或 Web 通知,並附帶檢閱工作流程的要求。

    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 環境。 在 [留言] 方塊中,輸入檢閱的假設狀況結果

  4. 選取 [核准並部署]

    GitHub 介面的螢幕擷取畫面,其中顯示工作流程核准頁面與已醒目提示的 [核准] 按鈕。

觀察成功的部署

  1. 核准工作流程執行之後,請注意,部署作業會開始執行。

    請等候作業完成。

  2. 請注意,工作流程執行會成功完成。