Поделиться через


определение jobs.deployment.strategy.runOnce

Стратегия развертывания runOnce развертывает изменения, выполняя каждый из его шагов один раз.

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

Свойства

preDeploy preDeployHook.
предварительно развернуть перехватчик для стратегии развертывания runOnce.

deploy deployHook.
развертывание перехватчика для стратегии развертывания runOnce.

routeTraffic routeTrafficHook.
перехватчик трафика маршрута для стратегии развертывания runOnce.

postRouteTraffic postRouteTrafficHook.
перехватчик трафика после маршрутизации для стратегии развертывания runOnce.

on onSuccessOrFailureHook.
При успешном выполнении или сбое перехватчика для стратегии развертывания runOnce.

Замечания

runOnce — это простейшая стратегия развертывания, в которой выполняются все перехватчики жизненного цикла, а именно preDeploydeploy, routeTrafficи postRouteTraffic. Затем выполняется 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), так как задание развертывания связано с средой. Это полезно в тех случаях, когда для задания задано одно и то же значение соединения.

См. также