Такая ситуация, на работе есть pipeline который работает по принципу:
“деплой на тест -> тесты на тесте(с репортом) -> деплой на проде -> тесты на проде(с репортом)”
как видим из пути, должно генерироваться 2 репорта, каждый со своими результатами.
у меня вышло это прикрепить вставив эти строки в нужных местах:
allure([includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: '/home/developer/workspace/testServer/target/allure-results']]])
и
allure([includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: '/home/developer/workspace/prodServer/target/allure-results']]])
Прописал полный путь специально для того, что бы они точно знали где искать этот самый репорт. В итоге: тесты проходят, но репорт что на проде дублирует тот же репорт, что и на тестовом сервере. Допустим, на тестовом сервере тесты прошли, на проде они упали, и у меня будет невнятное отображение, что стейдж с тестами упал, в репорте все тесты успешны, а если перейти конкретно в джобу с тестами на проде, то там будет репорт в котором будут упавшие тесты.
Надеюсь смог обьяснить максимально не запутанно.
прилагаю полный код для простоты понимания:
stage('Deploy on test'){
build 'Deploy test'
}
try{
echo 'its test on test server'
stage('test on test') {
node('forTests') {
def e2e = build job:'test Selenium Regression'
result = e2e.result
stage('allure report on test serv if success') {
allure([includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: '/home/developer/workspace/test Selenium Regression'/target/allure-results']]])
}
}
}
}catch(e){
echo 'its report on test server if failed'
stage('allure'){
node('forTests') {
def al = allure([includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: '/home/developer/workspace/test Selenium Regression'/target/allure-results']]])
result = "FAILURE"
al.result = "FAILURE"
}
}
}
if(result.equals("SUCCESS")){
stage('Deploy on prod'){
build 'Deploy prod'
}
try{
echo 'its test on prod server'
stage('test on prod') {
node('forTests') {
def e2e = build job: 'prod Selenium Regression'
result = e2e.result
stage('allure report on prod serv if success') {
allure([includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: '/home/developer/workspace/prod Selenium Regression/target/allure-results']]])
}
}
}
}catch(e){
echo 'its report on prod server if failed'
stage('allure'){
node('forTests') {
allure([includeProperties: false, jdk: '', properties: [], reportBuildPolicy: 'ALWAYS', results: [[path: '/home/developer/workspace/prod Selenium Regression/target/allure-results/target/allure-results']]])
result = "FAILURE"
al.result = "FAILURE"
}
}
}
}