Visual Studio Online Build обрабатывает выходные данные git как ошибки

Моя сборка в Visual Studio Online пытается развернуть мой веб-сайт Azure через Kudu. Сценарий работает нормально, и развертывание проходит, но VSO по какой-то причине рассматривает выходные данные git как ошибки и объявляет, что вся сборка не удалась. Взгляните на скриншот ниже.

Некоторые детали:

  1. Это "новая скриптовая" сборка, а не определенная XAML.
  2. Определение сборки состоит всего из одного шага, который выполняет сценарий PowerShell, который запускает F# FAKE (не уверен, что это актуально).
  3. Когда я запускаю тот же скрипт на своем локальном компьютере, я не вижу никаких «странных» результатов, включая [K в конце каждой строки.
  4. После запуска на моем локальном компьютере $LastExitCode равно нулю.
  5. Я очень хотел бы сохранить сборку в один шаг, чтобы я мог продолжать использовать силу FAKE.

введите здесь описание изображения


person Fyodor Soikin    schedule 16.12.2015    source источник
comment
Странный. Пробовали ли вы распечатать $LastExitCode из скрипта, чтобы увидеть, равен ли он 0 при работе под сборкой VSO?   -  person David Ebbo    schedule 16.12.2015
comment
В каком сценарии? Вы имеете в виду в сценарии PowerShell сразу после выполнения FAKE?   -  person Fyodor Soikin    schedule 16.12.2015
comment
Попробовал только сейчас. В самом конце моего сценария PowerShell $LastExitCode равно нулю. Кажется, что VSO выносит решение исключительно на основе текстового вывода.   -  person Fyodor Soikin    schedule 16.12.2015
comment
На самом деле не уверен, что VSO делает здесь. Возможно, часть вывода отправляется на stderr вместо stdout, и они рассматривают это как состояние ошибки независимо от кода выхода. Хотя это было бы очень сомнительным поведением, и это только предположение. Я работаю над частью Kudu, и я не очень хорошо знаком с тем, что происходит в той части VSO, которая его вызывает.   -  person David Ebbo    schedule 17.12.2015
comment
Это происходит только при запуске команды git pull и push?   -  person Eddie Chen - MSFT    schedule 17.12.2015


Ответы (1)


Git выводит свое содержимое в поток ошибок, который Visual Studio Team Services интерпретирует как ошибку.

Вам нужно перенаправить вывод Gits в свой скрипт следующим образом, чтобы он работал:

git pull 2>&1 | Write-Host

person Pascal Berger    schedule 26.12.2015
comment
Извините, что так долго, отвлёкся на другие вещи. Да, это ответ, просто перенаправление stderr на stdout решило его. - person Fyodor Soikin; 08.02.2016