我想引用一个运行管道的用户,并指出多阶段管道中的先前特定任务是否在PowerShell脚本中成功运行。我怎样才能做到这一点? 像这样:
Write-Host $env:UserThatRanPipeline $env:Task:BuildApp1:SuccessOrFail
所以我会得到输出:
John Smith Success
答案 0 :(得分:1)
我想引用一个运行管道的用户,并指出 多阶段管道中先前的特定任务是否成功运行 在PowerShell脚本中。
1。就像上面的 Shayki Abramczyk 所建议的那样,您可以使用Build.RequestedFor
输出运行管道的用户。请参见predefined variables,您可以使用类似Write-Host $(Build.RequestedFor)
2。要获取您的AzureRmWebAppDeployment@4
任务的状态,目前尚无可用于该工作的预定义变量。所以您必须按照一定的逻辑来做...
一种解决方法:
您可以在yml中像这样设置一个变量SuccessOrFail: 'Succeed'
:
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
SuccessOrFail: 'Succeed'
然后在您的AzureRmWebAppDeployment@4
任务之后添加一个powershell任务:
- 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
(失败+跳过)。
您的任务顺序应为:other tasks =>
AzureRmWebAppDeployment @ 4 => PS task above=> other tasks => Your own Powershell Task
。