jobs.deployment.strategy.rolling 定義

輪流部署會將繼承應用程式的實例取代為固定虛擬機器集上新版應用程式的實例, (每次反復專案) 滾動集。

rolling:
  maxParallel: string # Maximum number of jobs running in parallel.
  preDeploy: # Pre deploy hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where pre deploy steps will run.
  deploy: # Deploy hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where deploy steps will run.
  routeTraffic: # Route traffic hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where route traffic steps will run.
  postRouteTraffic: # Post route traffic hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where post route traffic steps will run.
  on: # On success or failure hook for rolling deployment strategy.
    failure: # Runs on failure of any step.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where post on failure steps will run.
    success: # Runs on success of all of the steps.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where on success steps will run.

參考此定義的定義: jobs.deployment.strategy

屬性

maxParallel 字串。
平行執行的作業數目上限。

preDeploypreDeployHook
預先部署攔截以進行輪流部署策略。

deploydeployHook
部署輪流部署策略的攔截。

routeTrafficrouteTrafficHook
路由流量攔截以進行輪流部署策略。

postRouteTrafficpostRouteTrafficHook
輪流部署策略的路由流量攔截後。

ononSuccessOrFailureHook
輪流部署策略的成功或失敗勾點。

備註

Azure Pipelines 目前僅支援 VM 資源的滾動策略。

例如,滾動部署通常會等待每一組虛擬機器上的部署完成,再繼續進行下一組部署。 您可以在每次反復專案之後執行健康情況檢查,如果發生重大問題,則可以停止輪流部署。

您可以藉由在節點下 strategy: 指定 關鍵字 rolling: 來設定滾動部署。 此策略區塊中提供變數 strategy.name ,其採用策略的名稱。 在此情況下,輪流。

支援所有生命週期勾點,並建立生命週期勾點作業,以在每個 VM 上執行。

preDeploydeployrouteTrafficpostRouteTraffic 會針對 所 maxParallel 定義的每個批次大小執行一次。 然後會執行 on: successon: failure

透過 maxParallel: <# or % of VMs> ,您可以控制要平行部署的虛擬機器目標數目/百分比。 這可確保應用程式在這些機器上執行,而且能夠在部署在其餘機器上執行時處理要求,這可降低整體停機時間。

注意

這項功能有一些已知的差距。 例如,當您重試階段時,它會在所有 VM 上重新執行部署,而不只是失敗的目標。

生命週期勾點的描述

preDeploy:用來執行在應用程式部署開始之前初始化資源的步驟。

deploy:用來執行部署應用程式的步驟。 下載成品工作只會在部署作業的勾點中 deploy 自動插入。 若要停止下載成品,請使用 - download: none 或選擇要下載的特定成品,方法是指定 [下載管線成品] 工作

routeTraffic:用來執行提供已更新版本流量的步驟。

postRouteTraffic:用來在路由傳送流量之後執行步驟。 一般而言,這些工作會監視已更新版本的健全狀況,以取得定義的間隔。

on: failureon: success :用來執行復原動作或清除的步驟。

範例

下列 VM 滾動策略範例會在每個反復專案中更新最多五個目標。 maxParallel 將決定可以平行部署到的目標數目。 選取範圍可說明在要部署到的目標以外,有多少數量或百分比的目標必須隨時保持可用狀態。 這也可用來判斷部署期間的成功和失敗狀況。

jobs: 
- deployment: VMDeploy
  displayName: web
  environment:
    name: smarthotel-dev
    resourceType: VirtualMachine
  strategy:
    rolling:
      maxParallel: 5  #for percentages, mention as x%
      preDeploy:
        steps:
        - download: current
          artifact: drop
        - script: echo initialize, cleanup, backup, install certs
      deploy:
        steps:
        - task: IISWebAppDeploymentOnMachineGroup@0
          displayName: 'Deploy application to Website'
          inputs:
            WebSiteName: 'Default Web Site'
            Package: '$(Pipeline.Workspace)/drop/**/*.zip'
      routeTraffic:
        steps:
        - script: echo routing traffic
      postRouteTraffic:
        steps:
        - script: echo health check post-route traffic
      on:
        failure:
          steps:
          - script: echo Restore from backup! This is on failure
        success:
          steps:
          - script: echo Notify! This is on success

另請參閱