練習 - 發佈範本規格

已完成

您的小組已建置一些強化安全性的 Bicep 檔案,符合您公司的新治理模型規範。 其中一個強化的 Bicep 檔案會部署以 Linux 為基礎的 Azure App Service 應用程式。 在此練習中,您將使用部署工作流程,將 Bicep 檔案發佈為範本規格。

在此過程中,您將會:

  • 將 lint 工作新增至工作流程。
  • 新增工作流程工作以發佈範本規格。
  • 手動執行工作流程,並確認工作流程順利完成。
  • 檢查 Azure 中已發佈的範本規格。

將 lint 工作新增至工作流程

存放庫包含工作流程的草稿,可當作起點。

  1. 在 Visual Studio Code 中,展開存放庫根目錄中的 .github/workflows 資料夾。

  2. 開啟 template-spec-linux-app-service.yml 檔案。

    Visual Studio Code 的螢幕擷取畫面,其中顯示工作流程定義檔案的位置。

    工作流程定義包含兩個觸發程序。 在此練習中,您不會修改範本規格的 Bicep 檔案,因此 push 觸發程序絕不會引發。 若要試用您的工作流程,請使用 workflow_dispatch 觸發程序手動叫用。

  3. 在檔案底部,您會看到 # To be added 註解,請新增以下 lint 工作定義:

    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    

    您的存放庫有 bicepconfig.json 檔案,其會設定 Linter 發出錯誤,而非警告。 lint 工作期間的任何失敗都會造成工作流程失敗。

    提示

    YAML 檔案會區分縮排。 無論您是輸入或貼上此程式碼,請確定您的縮排正確無誤。 在本練習的後續操作中,您將會看到完整的 YAML 工作流程定義,以便驗證您的檔案是否相符。

將發佈工作新增至工作流程

現在,您可以新增第二個工作,將範本規格發佈至 Azure。

  1. 將以下程式碼新增在 template-spec-linux-app-service.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 }}
      - uses: azure/cli@v1
        name: Publish template spec
        with:
          inlineScript: |
            az ts create \
              --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
              --name ${{ env.TEMPLATE_SPEC_NAME }} \
              --version ${{ github.run_number }} \
              --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
              --location ${{ env.AZURE_REGION }} \
              --yes
    

    此工作會從您的存放庫簽出程式碼,並使用您所建立的 GitHub 祕密登入 Azure。 接著會執行 az ts create 命令,將範本規格發佈至 Azure。

    提示

    為了簡化,您的工作流程會將工作流程的「執行編號」當作範本規格的版本號碼。 在下一個單元中,您會了解更複雜的版本設定配置。

  2. 儲存對檔案所做的變更。

驗證並認可您的工作流程定義

  1. 確認您的 template-spec-linux-app-service.yml 檔案看起來如以下範例:

    name: template-spec-linux-app-service
    concurrency: template-spec-linux-app-service
    
    on:
      workflow_dispatch:
      push:
        branches:
          - main
        paths:
          - 'template-specs/linux-app-service/**'
    
    permissions:
      id-token: write
      contents: read
    
    env:
      AZURE_RESOURCEGROUP_NAME: ToyReusable
      AZURE_REGION: westus3
      TEMPLATE_SPEC_NAME: linux-app-service
      TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_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 }}
        - uses: azure/cli@v1
          name: Publish template spec
          with:
            inlineScript: |
              az ts create \
                --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
                --name ${{ env.TEMPLATE_SPEC_NAME }} \
                --version ${{ github.run_number }} \
                --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
                --location ${{ env.AZURE_REGION }} \
                --yes
    

    如果不相符,請更新以符合此範例,然後將其儲存。

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

    git add .
    git commit -m "Add lint and publish jobs to Linux App Service template spec workflow"
    git push
    
  3. 這是您第一次推送至此存放庫,因此系統可能會提示您登入。

    在 Windows 上,輸入 1 以使用網頁瀏覽器驗證,然後選取 Enter

    在 macOS 上,選取 [授權]

  4. 瀏覽器視窗隨即出現。 您可能需要重新登入 GitHub。 選取授權

觸發工作流程

  1. 在瀏覽器中,選取 [動作] 索引標籤。

    顯示 [動作] 索引標籤的 GitHub 螢幕擷取畫面。

    已列出失敗的工作流程執行,但您不需要擔心。 因為您建立存放庫時尚未完成工作流程定義,所以造成執行失敗。

  2. 選取 template-spec-linux-app-service 工作流程,選取 [執行工作流程] 按鈕,然後選取 [執行工作流程]

    GitHub 的螢幕擷取畫面,其中顯示執行範本規格工作流程的選取項目。

    GitHub 會啟動新的工作流程執行。 您可能需要重新整理瀏覽器視窗,才能看到執行出現。

  3. 選取清單中的最近一次執行。

    GitHub 的螢幕擷取畫面,其中醒目提示最新執行的範本規格工作流程。

    等待工作流程執行完畢。 執行完畢時,範本規格會發佈至 Azure。

  4. 記下工作流程的執行編號,可能是 2

    GitHub 的螢幕擷取畫面,其中顯示成功的工作流程執行,並醒目提示執行編號。

檢閱 Azure 中的範本規格

您也可以在 Azure 入口網站中檢視已發佈的範本規格。

  1. 在瀏覽器中,移至 Azure 入口網站

  2. 移至 ToyReusable 資源群組,然後選取 linux-app-service 範本規格。

    Azure 入口網站的幕螢擷取畫面,其中顯示資源群組並醒目提示範本規格。

  3. 仔細檢視範本規格的詳細資訊。

    Azure 入口網站的幕螢擷取畫面,其中顯示範本規格詳細資料。

    請注意,[最新版本] 和 [版本] 號碼與工作流程的執行編號相同。 您的工作流程會針對範本規格的版本號碼使用執行編號。