Назад | Перейти на главную страницу

Сборки 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, а затем использовать его, чтобы проверить, все ли работает или нет, но, как я уже сказал, он работал раньше, именно с такой конфигурацией.

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

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