Есть ли способ убить (остановить) сборку команды TFS 2017 из кода? - PullRequest
0 голосов
/ 05 июня 2018

У меня есть сборка TFS2017, и первый шаг - проверить, существует ли необходимая папка на диске c: \.Эта папка является необходимым условием для правильного завершения сборки, поэтому, если папка не существует, я хочу отобразить сообщение об ошибке и завершить сборку.Я попытался вернуть -1, но это не мешает продолжению сборки.Есть ли способ убить работающую сборку программно?

Вот мой текущий скрипт PS, который проверяет папку.Я заменил xxxx собственными именами папок (чтобы защитить невинных; -):

param([string]$DirSuffix="x")
<#
This script is called by the xxxx build to make sure that the GVB folder 
exists on c:\ before the build is run. It should be called by passing in the 
directory suffix (e.g. \xxxx 2.3.1). I can't figure out how to 
kill the build 
if the folder doesn't exist so I'm just going to write multiple errors to 
the console and hope that the builder see them and cancels the build.
#>

[string] $WholeDirectory='C:\XXXX' + $DirSuffix
if (-NOT [IO.Directory]::Exists($WholeDirectory)) 
{
  Write-Host Directory $WholeDirectory does not exist - please make sure that the xxxx build has run first!!!
  Write-Host "##vso[task.logissue type=error;] Directory $WholeDirectory does not exist - please make sure that the xxxx build has run 
  return -1
}

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вместо использования return -1 вы должны использовать Команды ведения журнала и код выхода , чтобы завершить задачу сборки, а затем выполнить всю сборку.

 Write-Error "Some error"
 exit 1

Добавьте задачу powershell, чтобы отследить, если папка не существует, и определите, нужно ли вам выполнить задачу или нет.

Подробнее о том, как прервать сборку vNext, см. В следующем вопросе: Какне выполнить сборку из задачи PowerShell в TFS 2015

Также не забудьте проверить опцию Ошибка при стандартной ошибке в задаче PowerShell, а также выбрать условие Только когдавсе предыдущие задачи успешно , чтобы выполнить эту задачу для задачи сборки, которая находится рядом с powershell в вашем конвейере сборки.Это убьет процесс сборки.

enter image description here

0 голосов
/ 06 июня 2018

Если у вас есть несколько агентов, и вы хотите запустить сборку только на том агенте, для которого существует необходимая папка, вы можете добавить эту папку в «Возможности» ( Нажмите здесь, чтобы фото ), и вопределение сборки, которое нужно указать в «Требованиях», что требуется ( Нажмите сюда, чтобы фото ).

...