#powershell #azure-devops #azure-pipelines
#powershell #azure-devops #azure-конвейеры
Вопрос:
В конвейере выпуска Azure DevOps я запускаю встроенный скрипт как часть действия после развертывания задачи развертывания службы приложений Azure (версия задачи 4. *).
Встроенный скрипт выглядит следующим образом:
powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File UpdateCSP.ps1 -ApiUrl "$(API_URL) $(API_TESTING_URL)"
powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File GenerateVarsJs.ps1 -ApiUrl "$(API_URL)" -IdamAuthServerUrl "$(AUTH_SERVER)" -IdamClientId "$(CLIENT_ID)" -TestApiUrl "$(API_TESTING_URL)"
Один из сценариев был жестко завершен (путем вызова Throw "some error text"
) команды. Ошибка была записана в выходные данные задачи, но сама задача выполнена успешно.
Жестко завершенный сценарий powershell возвращает код ошибки 1. Поэтому я ожидал, что сбой скрипта также приведет к сбою задачи.
Мне нужно, чтобы задача завершилась с ошибкой в случае сбоя скрипта (никто не проверяет вывод успешной задачи). Как это можно сделать?
Комментарии:
1. @DanielMann Как упоминалось в вопросе, это задача развертывания службы приложений. У него есть действие после развертывания, в котором вы можете указать встроенный скрипт. Конвейеры выпуска не поддерживают YAML, поэтому он классический. Я полагаю, что информация содержится в вопросе
2. Привет, у вас была возможность ознакомиться с приведенными ниже обходными путями. Получилось ли это?
Ответ №1:
Я провел простой тест. И это сработало нормально.
У меня есть простая команда throw "This is an error.
в файле .ps1. Я вызываю сценарий в действии после развертывания задачи развертывания службы приложений Azure:
Ожидаемый сбой задачи:
Однако вы можете попробовать использовать команды ведения #vso[task.complete result=Failed;]Failed
журнала в файле .ps1, чтобы вручную выполнить задачу с ошибкой. См. Ниже:
Throw "some error text"
Write-Host "##vso[task.complete result=Failed;]Failed"
Или вы можете попробовать использовать [Environment]::Exit($exitCode)
после Throw
команды в вашем файле .ps1.
Throw "some error text"
[Environment]::Exit(1)