Сборки Jenkins не помечены как нестабильные / сбойные при сбое PHPUnit

Таким образом, название в значительной степени выдает его. Мы используем Jenkins 2 с PHPUnit 6.5.12 и пару дней назад все работало нормально. Теперь каждая сборка, которую мы делаем и имеет сбои (или, что еще хуже, ошибки) в разделе PHPUnit, не помечается как нестабильная / неудачная. Для тестов мы используем PHPUnit + Selenium Standalone 3.4.0 с новейшим geckodriver. (Да, есть более новые версии Selenium, но они всегда убивают тесты с исключениями и вообще не запускаются - 3.4.0 работает хорошо.)

Часть нашего конвейера, который запускает юнит-тесты, можно увидеть ниже:

stage ('UnitTests') {
            steps {
                sh 'cd module/App/test/ && chmod a+r+w+x runtests.sh && ./runtests.sh'
            }
        }
    }
    post {
        success {
            slackSend  color: '#458B00', message: "Build success for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
            sh 'rm -rf \\"${WORKSPACE}/data/cache/*\\"'
            sh 'rm -rf ${WORKSPACE}/data/cache/*'
            sh 'rsync --delete -r "${WORKSPACE}"/* myhost:/path
        }
        failure {
           slackSend color: '#8C1717', message: "Build failed for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
        }
        unstable {
           slackSend color: '#FF8C00', message: "Build unstable for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
        }
    }

runtests.sh по сути запускает тесты PHPUnit (а также автономный сервер Selenium) и убивает Selenium и каждый оставшийся сеанс Firefox в конце.

Теперь, исходя из того, что я собрал, PHPUnit ДОЛЖЕН иметь несколько кодов выхода, таких как 1 для сбоя, 0 для успеха и так далее. Итак, что-то здесь произошло? Из того, что я видел, не вышло ни одной новой версии, которая касалась бы всего этого.

Я также читал, что PHPUnit может выдавать отчет, который, в свою очередь, может быть получен jUnit, а затем использовать его для проверки, работает ли все или нет, но, как я уже сказал, раньше это работало, именно с такой конфигурацией.

Надеюсь, что у кого-нибудь есть идеи, потому что я уверен, что нет.

1 ответ

Решение

Вы должны проверить код выхода как phpunit, так и вашего скрипта. Дженкинс при использовании шага sh принимает во внимание только код завершения всего сценария, а не что-либо в нем. Может быть, раньше это работало из-за невозможности убить рабочих? AFAIK другие функции, о которых вы говорите, предоставляются плагином JUnit.

Другие вопросы по тегам