Как сообщить о ходе сборки в TFS vNext из сценария powershell? - PullRequest
0 голосов
/ 11 ноября 2018

Моя сборка vNext содержит очень мало шагов - я просто настраиваю несколько настроек и вызываю основной скрипт сборки Powershell, который внутренне вызывает msbuild, но он также выполняет другие действия.

Я знаю, что vNext поставляется с распределенным регистратором msbuild, который позволяет msbuild сообщать о событиях до vNext для отображения на временной шкале шага.

Можно ли это сделать для произвольной логики, а не только для msbuild?

РЕДАКТИРОВАТЬ 1

Моя философия при написании проекта vNext (или Octopus) заключается в минимизации количества шагов. Это потому, что эти шаги являются кодом, но ни vNext, ни Octopus не обеспечивают среду, которую я ожидаю получить при написании кода, а именно:

  1. Контроль версий
    • Технически, в vNext он есть, но для меня VCS подразумевает легкое различие с другими версиями. vNext diff полон неактуальной ерунды. Все еще световые годы лучше, чем у Осьминога, которого нет.
  2. Проверка кода
  3. Связанные рабочие элементы (почему X изменил Y?)
  4. 1024 * Debugging *

Для меня это важно, и поэтому у меня, как правило, один основной сценарий сборки. Я делегирую вещи в vNext (Octopus) - например, публикация артефактов и тестов или получение источников. Но код, который запускается на конкретной машине локально, является моим скриптом Powershell.

1 Ответ

0 голосов
/ 11 ноября 2018

Я согласен с комментариями, предлагающими разделить процесс конвейерной сборки на несколько шагов / задач, чтобы лучше видеть и регистрировать общее состояние. Тем не менее, есть способ сообщить о прогрессе обратно к графику сборки. Вы можете использовать команду ##vso[task.setprogress], описанную на странице Команды ведения журнала задач Azure *1003*. Следующее будет печатать процент выполнения в журнале / консоли, а также отображать процент рядом с именем шага на временной шкале:

$myArray = @(1..10)
foreach ($item in $myArray) {
    $simplePercentage = (($myArray.IndexOf($item)/$myArray.Length)*100)
    Write-Output ("Current Percentage: $simplePercentage")
    Write-Output ('##vso[task.setprogress value={0};]{1}' -f $simplePercentage, 'My Sample Task')
    Start-Sleep -Seconds 3
}

Вы можете разбить ваши скрипты / функции Powershell на любой общий процент, а затем использовать эту команду регистрации, чтобы сообщить о прогрессе секций.

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