Я хотел бы сослаться на пользователя, который запустил конвейер и указать, что предыдущая заданная задача c в многоступенчатом конвейере успешно выполнена или нет в скрипте PowerShell.
1.Только как Шайки Абрамчик предлагает выше, вы можете использовать Build.RequestedFor
для вывода пользователя, который запускает конвейер. Смотрите предопределенные переменные , вы можете использовать что-то вроде: Write-Host $(Build.RequestedFor)
2.Для получения статуса вашей задачи AzureRmWebAppDeployment@4
, на данный момент нет предопределенной переменной, доступной для выполнения этой работы. Таким образом, вы должны сделать это с некоторыми логиками c ...
В качестве обходного пути:
Вы можете установить одну переменную SuccessOrFail: 'Succeed'
следующим образом в yml:
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
SuccessOrFail: 'Succeed'
А затем добавьте одну задачу powershell сразу после вашей задачи AzureRmWebAppDeployment@4
:
- task: PowerShell@2
condition: failed()
inputs:
targetType: 'inline'
script: |
# This script will run only when any previous task failed
echo "##vso[task.setvariable variable=SuccessOrFail]Fail"
3. Убедитесь, что для вашей задачи AzureRmWebAppDeployment@4
не задано пользовательское условие. Как я знаю, эта задача не является независимой, поэтому она будет выполняться при успешном выполнении всех предыдущих задач.
Подводя итог:
Этот сценарий ps будет запускаться, когда задача AzureRmWebAppDeployment@4
не выполнена или пропущена, и сбросит значение SuccessOrFail
на Fail. Поэтому, если ваш AzureRmWebAppDeployment@4
успешен, значение $(SuccessOrFail)
равно Succeed
, в случае сбоя или пропуска значение будет Fail
.
Теперь значение Succeed
представляет задачу, безусловно, должна успешно, и если значение Fail
, оно фактически представляет вашу задачу NotSucceed
(Fail + Skip).
Порядок ваших задач должен быть: other tasks =>
AzureRmWebAppDeployment@4=> PS task above=> other tasks => Your own Powershell Task
.