Я пытаюсь добиться следующего:
- Запустите набор тестов Serenity (плюс Cucumber) как часть конвейера сборки.
- Собирайте отчеты независимо от того, пройдены все тесты или нет (очевидно, они особенно полезны при сбоях)
- Только в случае сбоев теста, пишите авторам по электронной почте.
- Никогда не завершайте сборку из-за неудачного приемочного теста, так как этот конвейер предназначен для ЭК фиксации. Только хотите потерпеть неудачу, если в Nightly есть сломанные приемочные тесты.
Итак, имея все это в виду, я попытался настроить сборку:
stage ('Serenity') {
steps {
// For the Delivery CI build don't fail on regression failure
sh 'mvn clean verify -pl regression -DskipCuke=false'
}
post {
always {
publishHTML([allowMissing: true, alwaysLinkToLastBuild: true,
keepAll: true, reportDir: 'regression/target/site/serenity',
reportFiles: 'index.html', reportName: 'Serenity',
reportTitles: ''])
}
failure{
echo 'There are regression suite failures.'
script {
currentBuild.result = 'SUCCESS'
}
emailext attachLog: true, body: 'Find Attached',
compressLog: true, recipientProviders: [[$class:
'CulpritsRecipientProvider']], subject: 'Broken Regression Tests',
to: '[email protected]'
}
}
}
Однако это не работает, так как я не могу сбросить значение currentBuild.result
на «УСПЕХ». Так что я мог бы все || true
передать команде mvn
, но это означало бы, что я не могу отправлять сообщения о неработающих регрессионных тестах.
Поэтому мне интересно, справился ли кто-нибудь еще с этим каким-то умным способом. Нужно ли мне назначать код выхода или что-то в этом роде, и будет ли это включать переопределение параметров оболочки по умолчанию в Jenkins?
Любая помощь высоко ценится.