次の方法で共有


jobs.deployment.strategy.rolling definition

ローリング デプロイは、アプリケーションの以前のバージョンのインスタンスを、各イテレーションの固定された仮想マシン (ローリング セット) 上の新しいバージョンのアプリケーションのインスタンスに置き換えます。

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 文字列。
並列で実行されるジョブの最大数。

preDeployHookpreDeployします。
ローリング デプロイ戦略のためのデプロイ前フック。

deployHookdeployします。
展開フックを展開して展開戦略を展開します。

routeTrafficHookrouteTrafficします。
ローリング デプロイ戦略のためのトラフィック フックをルーティングします。

postRouteTrafficHookpostRouteTrafficします。
ローリング デプロイ戦略のためのルートトラフィックフック後。

onSuccessOrFailureHookonします。
ローリング デプロイ戦略の成功または失敗フック。

注釈

現在、Azure Pipelines では、VM リソースへのローリング戦略のみがサポートされています。

たとえば、ローリング デプロイでは、通常、各仮想マシンセットのデプロイが完了するのを待ってから、次の一連のデプロイに進みます。 各イテレーションの後に正常性チェックを行うことができ、重大な問題が発生した場合は、ローリング デプロイを停止できます。

ローリング デプロイは、rolling: ノードの下にキーワード strategy: を指定することで構成できます。 strategy.name 変数は、戦略の名前を受け取るこの戦略ブロックで使用できます。 この場合、ローリング。

すべてのライフサイクル フックがサポートされ、各 VM で実行するライフサイクル フック ジョブが作成されます。

preDeploydeployrouteTraffic、および 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

こちらもご覧ください