共用方式為


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 字串。
平行執行的作業數目上限。

preDeploy preDeployHook
預先部署攔截以進行滾動部署策略。

deploy deployHook
輪流部署策略的部署攔截。

routeTraffic routeTrafficHook
輪流部署策略的路由流量攔截。

postRouteTraffic postRouteTrafficHook
輪流部署策略的張貼路由流量勾點。

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

備註

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

另請參閱