練習 - 發佈範本規格
您的小組已建置一些強化安全性的 Bicep 檔案,符合您公司的新治理模型規範。 其中一個強化的 Bicep 檔案會部署以 Linux 為基礎的 Azure App Service 應用程式。 在此練習中,您將使用部署工作流程,將 Bicep 檔案發佈為範本規格。
在此過程中,您將會:
- 將 lint 工作新增至工作流程。
- 新增工作流程工作以發佈範本規格。
- 手動執行工作流程,並確認工作流程順利完成。
- 檢查 Azure 中已發佈的範本規格。
將 lint 工作新增至工作流程
存放庫包含工作流程的草稿,可當作起點。
在 Visual Studio Code 中,展開存放庫根目錄中的 .github/workflows 資料夾。
開啟 template-spec-linux-app-service.yml 檔案。
工作流程定義包含兩個觸發程序。 在此練習中,您不會修改範本規格的 Bicep 檔案,因此
push
觸發程序絕不會引發。 若要試用您的工作流程,請使用workflow_dispatch
觸發程序手動叫用。在檔案底部,您會看到
# 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。
將以下程式碼新增在 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。提示
為了簡化,您的工作流程會將工作流程的「執行編號」當作範本規格的版本號碼。 在下一個單元中,您會了解更複雜的版本設定配置。
儲存對檔案所做的變更。
驗證並認可您的工作流程定義
確認您的 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
如果不相符,請更新以符合此範例,然後將其儲存。
在 Visual Studio Code 終端機中執行下列命令,以認可所做的變更,並將其推送至您的 Git 存放庫:
git add . git commit -m "Add lint and publish jobs to Linux App Service template spec workflow" git push
這是您第一次推送至此存放庫,因此系統可能會提示您登入。
在 Windows 上,輸入 1 以使用網頁瀏覽器驗證,然後選取 Enter。
在 macOS 上,選取 [授權]。
瀏覽器視窗隨即出現。 您可能需要重新登入 GitHub。 選取授權。
觸發工作流程
在瀏覽器中,選取 [動作] 索引標籤。
已列出失敗的工作流程執行,但您不需要擔心。 因為您建立存放庫時尚未完成工作流程定義,所以造成執行失敗。
選取 template-spec-linux-app-service 工作流程,選取 [執行工作流程] 按鈕,然後選取 [執行工作流程]。
GitHub 會啟動新的工作流程執行。 您可能需要重新整理瀏覽器視窗,才能看到執行出現。
選取清單中的最近一次執行。
等待工作流程執行完畢。 執行完畢時,範本規格會發佈至 Azure。
記下工作流程的執行編號,可能是 2。
檢閱 Azure 中的範本規格
您也可以在 Azure 入口網站中檢視已發佈的範本規格。
在瀏覽器中,移至 Azure 入口網站。
移至 ToyReusable 資源群組,然後選取 linux-app-service 範本規格。
仔細檢視範本規格的詳細資訊。
請注意,[最新版本] 和 [版本] 號碼與工作流程的執行編號相同。 您的工作流程會針對範本規格的版本號碼使用執行編號。