Azure DevOps Условное выполнение задания, которое зависит от задания в другой стадии - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть pipeline.yaml, который выглядит следующим образом

pool:
  vmImage: image

stages:
  -stage: A
   jobs: 
     -job: a
      steps: 
     - script: |
          echo "This is stage build"
          echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes"
        name: BuildStageRun
  -stage: B
   jobs:
      -job: b
       steps: #do something in steps

      -job: c
       dependsOn: a
       condition: eq(dependencies.build.outputs['BuildStageRun.doThing'], 'Yes')
       steps:
        - script: echo "I am scripting" 

Итак, есть 2 этапа: A с одной работой a и B с 2 заданиями b и c. Я хотел бы, чтобы задание c выполнялось только тогда, когда задание a выполнено. Я попытался сделать это, установив для переменной doThing в задании a значение Да, а затем проверил эту переменную в задании c.

Но я получаю сообщение об ошибке:

Задание поэтапного плана c зависит от неизвестного задания a .

Переменное определение и определение условия были взяты из Azure документации

Есть ли у вас какие-либо предложения о том, как заставить это работать?

1 Ответ

0 голосов
/ 12 февраля 2020

Это потому, что вы не можете зависеть от работы на другом этапе, вы можете зависеть от этапа B на этапе A или от задания c от задания b.

Вы не можете достичь своей цели в условиях YAML поскольку вы хотите использовать переменную, которую вы объявили на первом этапе, второй этап не знает эту переменную, Azure DevOps пока не поддерживает ее :

В настоящее время нельзя указать, что этап выполняется на основе значения выходной переменной, установленной на предыдущем этапе.

Вы можете зависеть от этапа B от A, поэтому если на этапе A имеется только один работа зависит от стадии B на стадии A:

- stage: B
  dependsOn: A
...