В конвейере Дженкинса не существует понятия шага успеха или неудачного шага.Существует только состояние вашей сборки (успешное, неудачное, нестабильное и т. Д.)
У вас есть два способа решения вашей проблемы:
Первый.Вы можете потерпеть неудачу в вашем конвейере, если тест не пройден (с помощью шага jenkins 'error').Например:
stage('Build') {
// build application
}
stage('Test') {
def testResult = ... // run command executing tests
if (testResult == 'Failed') {
error "test failed"
}
}
stage('Push Artifacts') {
//push artifacts
}
Или, если ваша команда выдает ошибку при неудачном тестировании (например, 'mvn test'), вы можете написать так:
stage('Build') {
// build application
}
stage('Test') {
sh 'mvn test'
}
stage('Push Artifacts') {
}
В этих случаях ваш конвейербудет провалено, когда тесты не пройдены.И ни один этап после этапа «Тест» не будет выполнен.
Второй.Если вы хотите выполнить только несколько шагов, в зависимости от того, какой шаг вы выполнили, вы должны записать результат теста в переменную.И вы можете проанализировать значение этой переменной перед выполнением шагов.Например:
stage('Build') {
// build application
}
boolean testPassed = true
stage('Test') {
try{
sh 'mvn test'
}catch (Exception e){
testPassed = false
}
}
stage('Push Artifacts') {
if(testPassed){
//push to artifactory
}
}