練習 - 將預覽作業新增至您的工作流程
您想要將額外的作業新增至工作流程,以檢查 Azure 環境將有何變更。
在此過程期間,您將執行下列工作:
- 更新工作流程定義 YAML 檔案,以新增預覽作業。
- 將環境新增至 GitHub 存放庫。
- 將環境設定為需要檢閱。
- 更新工作流程 YAML 檔案,以將環境用於部署作業。
- 檢視假設狀況結果並核准工作流程執行。
更新工作流程定義以新增預覽作業
在這裡,您會將新作業新增至執行假設狀況作業的工作流程。
在 Visual Studio Code 中,開啟 [.github/workflows] 資料夾中的 workflow.yml 檔案。
在驗證和部署作業之間,為預覽作業新增下列定義:
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 和驗證作業是否順利完成。
更新部署作業,使其取決於預覽作業:
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 }}
儲存對檔案所做的變更。
新增環境
在瀏覽器中,前往 [設定] > [環境]。
選取 [新增環境]。
輸入 Website 作為環境名稱。
選取 [設定環境]。
在本課程模組的設定步驟中,您已為工作流程建立同盟認證,以在部署至環境時使用。
將必要的檢閱者保護規則新增至環境
選取 [必要的檢閱者] 方塊。
將您自己的 GitHub 使用者名稱新增至檢閱者清單。
選取 [儲存保護規則]。
選取 [環境] 以結束設定。
更新工作流程定義以要求環境和檢閱者
在此,您會將部署作業設定為針對先前建立的 Website 環境執行。
在 Visual Studio Code 中開啟 workflow.yml 檔案。
將
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 }}
如果您的檔案看起來不同,請更新以符合此範例,然後將其儲存。
在 Visual Studio Code 終端機中執行下列命令,以認可所做的變更,並將其推送至您的 Git 存放庫:
git add . git commit -m "Add preview job" git push
執行工作流程並檢閱假設狀況輸出
在瀏覽器中,前往工作流程執行。
選取工作流程的最新執行。
等候工作流程完成 lint 分析、驗證和預覽作業。 雖然 GitHub 會以最新狀態自動更新頁面,但建議您偶爾重新整理頁面。
請注意,工作流程會提示您進行檢閱。 視 GitHub 帳戶的設定方式而定,您將會收到電子郵件或 Web 通知,並附帶檢閱工作流程的要求。
在核准繼續工作流程之前,您需要檢閱假設狀況結果,以確保其符合您的期望。
選取 [預覽] 作業。
選取 [執行假設狀況] 步驟,以檢查假設狀況命令所報告的變更。
請注意,工作流程記錄提供類似下列程式碼的假設狀況結果:
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 環境。 在 [留言] 方塊中,輸入檢閱的假設狀況結果。
選取 [核准並部署]。
觀察成功的部署
核准工作流程執行之後,請注意,部署作業會開始執行。
請等候作業完成。
請注意,工作流程執行會成功完成。