Да, вы можете достичь того, чего хотите, с конвейером Дженкинса.Ниже приведен пример с 3 тестовыми заданиями:
node{
def results = new String[3]
stage("Run tests"){
for(int i=1; i<=3; i++) {
// Run tests and store results (SUCCESS, FAILURE, etc.) in array
results[i-1] = build(job: "TEST_JOB_$i", propagate: false).result
}
// If at least one test failed
if("FAILURE" in results)
{
build job: 'CLEANUP_JOB', propagate: false
for(int i=1; i<=3; i++) {
if(results[i-1] == "FAILURE")
{
// If this job fails now, then current build ends with failure
build(job: "TEST_JOB_$i", propagate: true)
}
}
}
}
}
«размножение: ложь» приводит к запуску остальной части конвейера даже в случае сбоя сборки.Можно добиться чего-то похожего с плагином Multijob, но это было бы очень некрасиво.