Azure Задание DevOps YAML для конвейера вручную выполняется параллельно с другим заданием - PullRequest
1 голос
/ 07 февраля 2020

Я хочу, чтобы задания go следовали один за другим, и первое задание должно контролировать выполнение следующего.

Поскольку в конвейере YAML нет доступных разрешений для развертывания за пределами Kubernetes, я использую ручное вмешательство, чтобы остановить выполнение задания. Но, очевидно, это не останавливает работу раньше, а останавливает предстоящий этап. Что я делаю не так? Я ожидаю некоторого уведомления о вмешательстве, но оно немедленно завершается неудачей и совсем не останавливает следующую работу.

enter image description here

Это часть код для этапа развертывания STG, где parameters.interventionEnabled имеет значение true

jobs:
- job: RunOnServer
  displayName: 'Reject or resume'
  pool: server
  continueOnError: false
  steps:
  - task: ManualIntervention@8
    displayName: 'Manual Intervention'
    timeoutInMinutes: 0
    inputs:
      instructions: 'reject or resume'
    enabled: ${{ parameters.interventionEnabled }}

- job: Deploy
  displayName: ${{ parameters.name }}
  pool:
    name: ${{ parameters.agentPoolName }}
  steps:
  - checkout: none # skip checking out the default repository resource

  - task: DownloadPipelineArtifact@2
    displayName: Download NPM build artifact
    inputs:
      artifact: ${{ parameters.artifactName }}
      buildType: 'current'
      targetPath: ${{ parameters.artifactPath }}

1 Ответ

1 голос
/ 08 февраля 2020

Эй, Andree ManualIntervention@8 не поддерживается в YAML. Это карта для 2020 \ Q2 .

Я думаю, что вы хотите проложить go вниз, чтобы использовать утверждений с generi c типов среды .

Таким образом, вы определяете задание развертывания и среду в вашем yaml, например,

- deployment: DeploymentHosted Context
  displayName: Runs in Hosted Pool
  pool:
    vmImage: 'Ubuntu-16.04'
  # creates an environment if it doesn't exist
  environment: 'Dev'
  strategy:
    runOnce:
      deploy:
        steps:
        - bash: |
            echo This multiline script always runs in Bash.
            echo Even on Windows machines!

И вы используете GUI для защиты среды.

  • Перейдите к Трубопроводам -> Среды .
  • Выберите среду (вы можете предварительно создать их).
  • Затем добавьте и утверждение

    approvals menu

approvals

Есть некоторые недостатки по сравнению с определениями релизов classi c и возможностью ручного переключения на ступени. Возможно, вы не захотите, чтобы каждый артефакт был кандидатом на каждом этапе, и если вы не одобрили среду, это в конечном итоге приведет к истечению времени ожидания и сообщению о сбое. Другие хорошие обсуждения в комментариях здесь .

...