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


Определение 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

Свойства

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

deploydeployHook.
Перехватчик развертывания для стратегии развертывания runOnce.

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

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

ononSuccessOrFailureHook.
Об успешном или неудачном перехватчике для стратегии развертывания 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), так как задание развертывания связано со средой. Это полезно в случаях, когда для нескольких шагов задания заданы одинаковые сведения о подключении.

См. также раздел