任务1是PowerShell脚本。它设置变量##vso[task.setvariable variable=Metadata.ContinueGen;]false
任务2具有自定义条件,只有在满足eq(variables['Metadata.ContinueGen'], true)
条件时才会运行。任务被跳过,这没关系。但是我仍然有一系列我不想参加的任务。
我想弄清楚如何在不必将条件应用于每个任务定义的情况下停止剩余的构建任务。
答案 0 :(得分:1)
听起来你想在发生条件时停止构建..
如果你将它放在你的PowerShell脚本中,它将会出错并退出你的其余活动。
Write-Error ("Stopping Build steps, will not continue to the next")
exit 1
答案 1 :(得分:1)
自定义条件只能设置如何运行任务而不是以下所有任务。因此,您需要为以下所有任务设置自定义条件(如果您希望按自定义条件存档)。
但如果变量Metadata.ContinueGen
为false
,则可以跳过/取消以下任务的另一种方式。详细步骤如下:
在任务之前添加 PowerShell任务以比较Metadata.ContinueGen
的值是否为false。如果为false,则将jobstatus设置为已取消:
Write-Host "##vso[task.setvariable variable=agent.jobstatus;]canceled"
如果Metadata.ContinueGen
为false,则由于PowerShell任务的状态未成功,以下任务也将被取消。
答案 2 :(得分:1)
(其他答案也有效,但它们触发了失败/成功登录仪表板的操作。)
我创建了一个名为vstsabort
的PowerShell脚本,以便在构建期间可以调用它以取消整个构建。
https://github.com/lextm/vstsabort
批处理文件可能看起来像
echo no change. abort.
set LEXTUDIO_VSTSABORT=TRUE
set SYSTEM_PAT=%~1
powershell -executionpolicy bypass -File abort.ps1
然后在信息中心中,您可以看到此构建已被取消。