Передайте команду stderr из задачи сборки в DevOps Azure - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть сборка VSTS (Azure DevOps), которая содержит задачу PowerShell или Командная строка . Эта задача запускает некоторую программу: program.exe. Когда program.exe возвращает ненулевой код завершения, сборка завершается неудачно, как и ожидалось. program.exe также выводит подробное сообщение об ошибке в поток stderr в случае ошибки.

Проблема в том, что содержимое потока stderr не передается в сборку. Задача всегда возвращает следующее сообщение об ошибке, которое также отображается в виде сообщения об ошибке сборки на вкладке сводной информации о сборке:

Процесс завершен с кодом выхода 1.

Что бесполезно. Пользователь должен найти невыполненную задачу, открыть ее вывод и найти там сообщение об ошибке. Это не очень удобно.

Как легко передать содержимое stderr в сборку?

Нужно ли вручную захватывать stderr и затем отправлять его в сборку с помощью PowerShell, или есть параметр, позволяющий изменить поведение сборки так, как я ожидаю?

1 Ответ

0 голосов
/ 05 сентября 2018

Я только что добавил "2>&1 | Write-Host" в команду, чтобы поток stderr был направлен в поток Write-Host. Ссылка на этот поток: Сборка VSTS завершается с ошибкой «Процесс завершен с кодом выхода 0, и в поток ошибок было записано 3 ошибки». даже если я настроил свой сценарий PowerShell на игнорирование ошибок

Вы также можете снять флажок Fail on Standard Error в конфигурации скрипта PowerShell и написать код lastexitcode для выполнения задачи:

Enter image description here

Ошибка при стандартной ошибке

Если это так, эта задача не будет выполнена, если в конвейер ошибок, или если какие-либо данные записываются в стандартную ошибку поток. В противном случае задача будет зависеть исключительно от $ LASTEXITCODE и код выхода для определения ошибки.

Затем вы можете вывести ошибку или предупреждение с помощью команд задач PowerShell или VSTS.

Write-Warning “warning”
Write-Error “error”
Write-Host " ##vso[task.logissue type=warning;]this is the waring"
Write-Host " ##vso[task.logissue type=error;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]this is an error "

Более подробную информацию о команде задачи VSTS вы можете получить по ссылке: Команды ведения журнала

...