Я создаю конвейер YAML в DevOps Azure, который состоит из двух этапов.
Первый этап (Prerequisites) отвечает за чтение коммита git и создает переменную через запятую, содержащую список сервисов, на которые повлиял коммит.
Второй этап (сборка)отвечает за сборку и модульное тестирование проекта. Эта стадия состоит из множества templates
, по одному на каждую услугу. В шаблонном сценарии задание будет проверять, включена ли соответствующая служба в переменную, созданную на предыдущем этапе. Если задание обнаружит Службу, оно продолжит сборку и проверку службы. Однако, если он не может найти службу, он пропустит эту работу.
Run.yml:
stages:
- stage: Prerequisites
jobs:
- job: SetBuildQueue
steps:
- task: powershell@2
name: SetBuildQueue
displayName: 'Set.Build.Queue'
inputs:
targetType: inline
script: |
## ... PowerShell script to get changes - working as expected
Write-Host "Build Queue Auto: $global:buildQueueVariable"
Write-Host "##vso[task.setvariable variable=buildQueue;isOutput=true]$global:buildQueueVariable"
- stage: Build
jobs:
- job: StageInitialization
- template: Build.yml
parameters:
projectName: Service001
projectLocation: src/Service001
- template: Build.yml
parameters:
projectName: Service002
projectLocation: src/Service002
Build.yml:
parameters:
projectName: ''
projectLocation: ''
jobs:
- job:
displayName: '${{ parameters.projectName }} - Build'
dependsOn: SetBuildQueue
continueOnError: true
condition: and(succeeded(), contains(dependencies.SetBuildQueue.outputs['SetBuildQueue.buildQueue'], '${{ parameters.projectName }}'))
steps:
- task: NuGetToolInstaller@1
displayName: 'Install Nuget'
Проблема:
При запуске первых этапов создается переменная с именем buildQueue
, которая заполняется, как видно из вывода консоли сценария PowerShell:
Service001 Changed
Build Queue Auto: Service001;
Однако, когда он получаетна втором этапе, и он пытается запустить шаблон сборки, когда он проверяет условия, он возвращает следующий вывод:
Started: Today at 12:05 PM
Duration: 16m 7s
Evaluating: and(succeeded(), contains(dependencies['SetBuildQueue']['outputs']['SetBuildQueue.buildQueue'], 'STARS.API.Customer.Assessment'))
Expanded: and(True, contains(Null, 'service001'))
Result: False
Итак, мой вопрос, как мне установить dependsOn
и condition
, чтобы получитьинформация с предыдущего этапа?