Есть обходные пути для достижения этой цели. 1. Первый обходной путь требует добавления задачи сценария для вывода переменной со значением Build.SourceVersionMessage
на предыдущем этапе. И добавьте dependency
и condition
на этапе выпуска. Вы можете обратиться к приведенному ниже примеру:
stages:
- stage: Publish
displayName: 'Publish stage'
jobs:
- job: jobA
pool: Default
...
- script: echo "##vso[task.setvariable variable=commitMessage;isOutput=true]$(Build.SourceVersionMessage)"
name: setvarStep
- stage: Release
dependsOn: Publish
condition: contains(dependencies.<Previous stage name>.outputs['<name of the job which execute the task.setvariable >.setvarStep.commitMessage'], 'keyword')
jobs:
- job:
....
2. Другой обходной путь для достижения этой цели - добавить еще один этап с задачей powershell, который оценивает значение Build.SourceVersionMessage
. Затем добавьте зависимость и условие на этапе Release на этом этапе.
В следующем примере на этапе GetSourceMessage есть задание с одной задачей powershell, которое завершится неудачей, если Build.SourceVersionMessage
не содержит «ключевого слова». И этап Релиз зависит от этапа GetSourceMessage будет выполняться только при условии успешного выполнения этапа GetSourceMessage .
...
- stage: GetSourceMessage
jobs:
- job: jobofstage2
steps:
- powershell: |
if('$(Build.SourceVersionMessage)' -inotmatch "key")
{
exit 1
}
- stage: Release
dependsOn: GetSourceMessage
condition: succeeded()
jobs:
...