Не найдено ни одной ссылки на этот конкретный вопрос.
Я ищу способ добиться чего-то подобного в конвейере Jenkins, который запускает наши приемочные тесты с использованием Protractor и Cucumber. js:
steps {
container('selenium') {
script {
try {
{
//run tests
}
}
catch (err) {
if (env.testFailed == 'true') {
println "A test failure exists - build status updated to failure"
currentBuild.result = 'FAILURE'
error "Test(s) have failed"
}
else {
println "No test failures exist - build status updated to success"
currentBuild.result = 'SUCCESS'
}
}
}
}
}
Это может привести к сбою сборки если env var testFailed равен 'true'. Причина этого заключается в том, что мы сталкиваемся с ошибками в платформе Protractor-Cucumber, в которой, если неудачный тест повторяется и проходит, код выхода этапа все еще равен 1.
Таким образом, в ловушке После каждого теста я устанавливаю env var использует node.js в значение true, если состояние сценария не удалось:
if (scenario.result.status === Status.FAILED) {
process.env.testFailed = 'true';
}
if (scenario.result.status === Status.PASSED) {
process.env.testFailed = 'false';
}
Проблема, которую я обнаружил, заключается в том, что конвейеру Jenkins не удается прочитать значение env var в блоке кода раздела catch. Это всегда ноль.
Есть идеи?