Azure DevOps。 PowerShell中的参考管道设置

时间:2020-03-24 06:16:45

标签: azure-devops

我想引用一个运行管道的用户,并指出多阶段管道中的先前特定任务是否在PowerShell脚本中成功运行。我怎样才能做到这一点? 像这样:

Write-Host $env:UserThatRanPipeline $env:Task:BuildApp1:SuccessOrFail

所以我会得到输出:

John Smith Success

1 个答案:

答案 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