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