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 で実行するライフサイクル フック ジョブが作成されます。
preDeploy
、deploy
、routeTraffic
、postRouteTraffic
は、maxParallel
によって定義されたバッチ サイズごとに 1 回実行されます。
その後、on: success
または on: failure
が実行されます。
maxParallel: <# or % of VMs>
を使用すると、並列にデプロイする仮想マシン ターゲットの数/割合を制御できます。 これにより、アプリがこれらのマシンで実行され、デプロイがマシンの残りの部分で実行されている間に要求を処理できるため、全体的なダウンタイムが短縮されます。
注意
この機能には、いくつかの既知のギャップがあります。 たとえば、ステージを再試行すると、失敗したターゲットだけでなく、すべての VM でデプロイが再実行されます。
ライフサイクル フックの説明
preDeploy
: アプリケーションのデプロイが開始される前にリソースを初期化するステップを実行するために使用されます。
deploy
: アプリケーションをデプロイするステップを実行するために使用されます。 ダウンロード成果物タスクは、デプロイ ジョブの deploy
フックにのみ自動挿入されます。 成果物のダウンロードを停止するには、- download: none
を使用するか、パイプライン成果物のダウンロード タスクを指定して、ダウンロードする特定の成果物を選択します。
routeTraffic
: 更新されたバージョンへのトラフィックを処理するステップを実行するために使用されます。
postRouteTraffic
: トラフィックのルーティング後にステップを実行するために使用されます。 通常、これらのタスクは、定義された間隔で、更新されたバージョンの正常性を監視します。
on: failure
または on: success
: ロールバック アクションまたはクリーンアップのステップを実行するために使用されます。
例
VM の次のローリング戦略の例では、各イテレーションで最大 5 つのターゲットが更新されます。 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