Запустите этап очистки, если задание этапа проверки не выполнено - PullRequest
0 голосов
/ 05 октября 2018

У меня есть 2 этапа в проекте Jenkins Multijob.Одна фаза очистки и другая фаза имеют 4 тестовых задания для последовательного запуска.

Мой вопрос: при сбое одного из 4 тестовых заданий я хотел бы запустить этап очистки, а затем повторно запустить сбойное задание.

Можно ли это сделать на Дженкинсе?

1 Ответ

0 голосов
/ 06 октября 2018

Да, вы можете достичь того, чего хотите, с конвейером Дженкинса.Ниже приведен пример с 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, но это было бы очень некрасиво.

...