練習 - 將預覽階段新增至管線
您想要將額外的階段新增至管線,以檢查 Azure 環境將有何變更。
在此過程中,您將會:
- 更新管線 YAML 檔案以新增預覽階段。
- 將環境新增至 Azure Pipelines。
- 將環境設定為需要核准。
- 更新管線 YAML 檔案,以在部署階段使用環境。
- 檢視假設狀況結果並核准管線執行。
更新管線定義以新增預覽階段
在此,您會將新的階段新增至管線,以執行假設狀況作業。
在 Visual Studio Code 中,開啟 deploy 資料夾中的 azure-pipelines.yml 檔案。
在驗證和部署階段之間,為預覽階段新增下列定義:
- stage: Preview jobs: - job: PreviewAzureChanges displayName: Preview Azure changes steps: - task: AzureCLI@2 name: RunWhatIf displayName: Run what-if inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az deployment group what-if \ --resource-group $(ResourceGroupName) \ --template-file deploy/main.bicep \ --parameters environmentType=$(EnvironmentType)
儲存對檔案所做的變更。
新增環境
在瀏覽器中,移至 [管線] > [環境]。
選取 [建立環境]。
輸入 Website 作為環境名稱。
將描述處保留空白。 針對 [資源],選取 [無]。
注意
在 Azure Pipelines 中,環境用來啟用部署功能。 其中一些功能只在部署至 Kubernetes 或虛擬機器時才適用。 本課程模組中不使用這些功能,可忽略。
選取 建立。
將核准檢查新增至環境
選取畫面左上方的 [核准和檢查] 索引標籤。
選取 [核准]。
在 [核准者] 文字方塊中,輸入您自己的名稱並選取您自己。
選取 [進階] 旁的箭號按鈕。
請注意,預設允許核准者核准他們已觸發的執行。 因為您是唯一使用此管線的人,請保持選取此核取方塊。
選取 建立。
更新管線定義以要求環境和核准
在此,您將部署階段設定為針對先前建立的網站環境執行。 您會將部署階段轉換為執行部署作業,而不是標準作業,並將其設定為部署至環境。
在 Visual Studio Code 的 azure-pipelines.yml 檔案中,將部署階段定義換成下列程式碼:
- stage: Deploy jobs: - deployment: DeployWebsite displayName: Deploy website environment: Website strategy: runOnce: deploy: steps: - checkout: self - task: AzureResourceManagerTemplateDeployment@3 name: DeployBicepFile displayName: Deploy Bicep file inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
請注意,您定義了新的
checkout
步驟。 不同於一般作業,部署作業必須設定為從 Git 存放庫簽出 (下載) 檔案。 若未執行此步驟,部署作業無法讀取 Bicep 檔案。 您可以考慮改用「管線成品」在管線階段之間傳送檔案。 如需成品的詳細資訊,請前往摘要中的連結。儲存檔案。
驗證並認可管線定義
確認 azure-pipelines.yml 檔案看起來像下列程式碼:
trigger: batch: true branches: include: - main pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file deploy/main.bicep name: LintBicepCode displayName: Run Bicep linter - stage: Validate jobs: - job: ValidateBicepCode displayName: Validate Bicep code steps: - task: AzureResourceManagerTemplateDeployment@3 name: RunPreflightValidation displayName: Run preflight validation inputs: connectedServiceName: $(ServiceConnectionName) location: $(deploymentDefaultLocation) deploymentMode: Validation resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) - stage: Preview jobs: - job: PreviewAzureChanges displayName: Preview Azure changes steps: - task: AzureCLI@2 name: RunWhatIf displayName: Run what-if inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az deployment group what-if \ --resource-group $(ResourceGroupName) \ --template-file deploy/main.bicep \ --parameters environmentType=$(EnvironmentType) - stage: Deploy jobs: - deployment: DeployWebsite displayName: Deploy website environment: Website strategy: runOnce: deploy: steps: - checkout: self - task: AzureResourceManagerTemplateDeployment@3 name: DeployBicepFile displayName: Deploy Bicep file inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
如果不是,請將其更新以符合此範例,然後加以儲存。
在 Visual Studio Code 終端機中執行下列命令,以認可所做的變更,並將其推送至您的 Git 存放庫:
git add . git commit -m "Add preview stage" git push
執行管線並檢閱假設狀況輸出
在瀏覽器中,前往您的管線。
選取管線的最近一次執行。
等候管線完成 Lint、驗證和預覽階段。 雖然 Azure Pipelines 自動將頁面更新為最新狀態,但最好偶爾重新整理頁面。
如果系統要求您授與存取資源的權限,請選取 [檢視],然後選取 [允許]。
請注意,Azure Pipelines 會提示您核准。 您也會收到電子郵件,告知您需要核准管線。
在核准管線繼續之前,您需要檢閱假設狀況結果,以確定符合您的期望。
選取 [預覽] 階段。
選取 [執行假設狀況] 步驟,以檢查假設狀況命令所報告的變更。
請注意,管線記錄提供類似下列程式碼的假設狀況結果:
Resource and property changes are indicated with these symbols: + Create ~ Modify = Nochange The deployment will update the following scope: Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyWebsiteTest ~ Microsoft.Web/sites/toy-website-nbfnedv766snk [2021-01-15] + properties.siteConfig.localMySqlEnabled: false + properties.siteConfig.netFrameworkVersion: "v4.6" = Microsoft.Insights/components/toywebsite [2020-02-02] = Microsoft.Storage/storageAccounts/mystoragenbfnedv766snk [2021-04-01] = Microsoft.Web/serverfarms/toy-website [2021-01-15] Resource changes: 1 to modify, 3 no change.
假設狀況作業偵測到網站資源有變更。 但偵測到的變更是雜訊。 不代表資源真的變更。 Azure 小組持續努力減少雜訊。 目前,針對這兩個特定屬性,您可以忽略偵測到的變更。
您在假設狀況輸出中也可能看資源類型
microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
的項目。 Application Insights 會自動建立此資源。 假設狀況命令偵測到不會變更資源。
核准管線執行
選取向左箭號以返回管線執行的詳細資料。
在核准面板上選取 [檢閱] 按鈕。
在 [註解] 方塊中,輸入 Reviewed what-if results。
選取 [核准]。
觀察成功的部署
核准管線執行之後,請注意部署階段開始執行。
等候階段完成。
請注意,管線執行順利完成。