jobs.deployment.strategy.runOnce 定義

runOnce 配置戦略では、各手順を 1 回実行して変更をロールアウトします。

runOnce:
  preDeploy: # Pre deploy hook for runOnce 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 runOnce 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 runOnce 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 runOnce 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 runOnce 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

プロパティ

preDeploypreDeployHook
runOnce 配置戦略の事前配置フック。

deploydeployHook
runOnce 配置戦略の配置フック。

routeTrafficrouteTrafficHook
runOnce 配置戦略のトラフィック フックをルーティングします。

postRouteTrafficpostRouteTrafficHook
runOnce 配置戦略のルート トラフィック フックをポストします。

ononSuccessOrFailureHook
runOnce 配置戦略の成功または失敗フック。

解説

runOnce は最も簡単なデプロイ方法であり、すべてのライフ サイクル フック (つまり、preDeploydeployrouteTrafficpostRouteTraffic) が 1 回実行されます。 その後、on:success または on:failure が実行されます。

ライフサイクル フックの説明

preDeploy: アプリケーションのデプロイが開始される前にリソースを初期化するステップを実行するために使用されます。

deploy: アプリケーションをデプロイするステップを実行するために使用されます。 ダウンロード成果物タスクは、デプロイ ジョブの deploy フックにのみ自動挿入されます。 成果物のダウンロードを停止するには、- download: none を使用するか、パイプライン成果物のダウンロード タスクを指定して、ダウンロードする特定の成果物を選択します。

routeTraffic: 更新されたバージョンへのトラフィックを処理するステップを実行するために使用されます。

postRouteTraffic: トラフィックのルーティング後にステップを実行するために使用されます。 通常、これらのタスクは、定義された間隔で、更新されたバージョンの正常性を監視します。

on: failure または on: success: ロールバック アクションまたはクリーンアップのステップを実行するために使用されます。

次の YAML スニペットの例では、デプロイ戦略を使用してデプロイ ジョブを簡単に使用する方法を runOnce 示します。 この例には、チェックアウト ステップが含まれています。


jobs:
  # Track deployments on the environment.
- deployment: DeployWeb
  displayName: deploy Web App
  pool:
    vmImage: ubuntu-latest
  # Creates an environment if it doesn't exist.
  environment: 'smarthotel-dev'
  strategy:
    runOnce:
      deploy:
        steps:
        - checkout: self 
        - script: echo my first deployment

このジョブを実行するたびに、smarthotel-dev 環境に対してデプロイ履歴が記録されます。

注意

  • 前述の例に示すように、空のリソースを含む環境を作成し、それを抽象シェルとして使用してデプロイ履歴を記録することもできます。

次の例では、デプロイ ジョブのターゲットとして使用される環境とリソースの両方をパイプラインでどのように参照できるかを示します。

jobs:
- deployment: DeployWeb
  displayName: deploy Web App
  pool:
    vmImage: ubuntu-latest
  # Records deployment against bookings resource - Kubernetes namespace.
  environment: 'smarthotel-dev.bookings'
  strategy: 
    runOnce:
      deploy:
        steps:
          # No need to explicitly pass the connection details.
        - task: KubernetesManifest@0
          displayName: Deploy to Kubernetes cluster
          inputs:
            action: deploy
            namespace: $(k8sNamespace)
            manifests: |
              $(System.ArtifactsDirectory)/manifests/*
            imagePullSecrets: |
              $(imagePullSecret)
            containers: |
              $(containerRegistry)/$(imageRepository):$(tag)

この方法には次の利点があります。

  • 環境内のすべてのリソースの履歴を記録するのではなく、環境内の特定のリソースのデプロイ履歴を記録します。
  • デプロイ ジョブのステップでは、デプロイ ジョブが環境にリンクされているため、リソースの接続の詳細 (この場合は Kubernetes 名前空間、smarthotel-dev.bookings) が自動的に継承されます。 これは、ジョブの複数のステップで同じ接続の詳細が設定されている場合に便利です。

関連項目