У меня есть конвейер jenkins, который запустит автоматизацию и отправит уведомление в стадо. Проблема в том, что когда результат не удался, он говорит об успешном выполнении, потому что я не могу переопределить значение, чтобы дать правильное условие, чтобы дать статус, отправленный на стадо
class Configs{
static String appUnderTest = ""
static int totalTests=1
static int resultE2E=1
static String runningTag = ""
static String buildStatus = ""
static String notifColor = "#00BFFF"
static def setBuildStatus(){
def countAll = Configs.resultE2E
if (countAll >= totalTests){
Configs.buildStatus = "SUCCESS"
Configs.notifColor = "#0ABE51"
}else{
Configs.buildStatus = "FAILURE"
Configs.notifColor = "#FF0000"
}
println "count setBuildStatus => countAll ${countAll}"
}
}
stage("Testing") {
node('docker') {
timeout(120) {
try {
def docker_run = "docker run -v $WORKSPACE/report:/app/report -e t='\"${cucumberTags}\"' -e BASE_URL=**"
echo docker_run
sh docker_run
}catch(Exception error){
echo "Cucumber test: FAILED"
Configs.resultE2E = -1
}finally{
sh "ls -a "
cucumber fileIncludePattern: '**/*.json', jsonReportDirectory: "$WORKSPACE/report/output", buildStatus: 'FAILURE', failedScenariosNumber: 0, trendsLimit: 5
generateReport dir: "$WORKSPACE/report/output", file: "*", result: Configs.resultE2E, repName: "Report_cucumber_parallel"
}
}
}
}
stage('Notify'){
try{
Configs.setBuildStatus()
echo "BUild status => ${Configs.buildStatus}"
flockNotifyFinished()
}catch(Exception error){
echo "Someting happen in notify:"
echo error.toString()
}finally{
// currentBuild.result = Configs.buildStatus
if(Configs.buildStatus == "SUCCESS"){
echo "out with SUCCESS"
// return here instead of throwing error to keep the build "green"
node('ubuntu') {
echo "SUCCESS"
currentBuild.result = 'SUCCESS'
sh "exit 0"
}
echo "finished"
}else{
echo "FAILURE"
currentBuild.result = 'FAILURE'
}
echo "done"
return
}
}
def generateReport(option){
publishHTML (target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: option.dir,
reportFiles: "${option.file}.html",
reportName: "${option.repName ?: option.file}_test_${env.BUILD_NUMBER}_${(option.result != 1)? 'FAILED' : 'PASS' }"
])
}
def parseStatus(result){
def status = "? Skip: "
if (result != "skip"){
status = (result != 1)? '? Fail: ' : '? Pass: '
}
return status
}
def flockNotifyFinished(){
echo "FLOCK notif begin"
def flockUrl = '*****'
title = "****${Configs.appUnderTest}"
text = """
<ul>
<li>${parseStatus(Configs.resultE2E)} SmokeTest Web UI</li>
</ul>"""
echo text
def payloadData = [
attachments : [
[
title: title,
color: Configs.notifColor,
views: [
html: [
inline: text,
height: 200
]
],
buttons: [
[
name: "Visit Job",
action: [
type: "openBrowser",
url: env?.BUILD_URL,
sendContext: false
],
id: "job_url"
],
],
]
]
]
// replace notify success with gif if all is well
if(Configs.buildStatus == "SUCCESS"){
def r = new Random()
def idx = r.nextInt(3)
payloadData['attachments'][0]['title'] = "*** #${env.BUILD_NUMBER} ${customTag} test result for ${Configs.appUnderTest} is ${Configs.buildStatus}"
payloadData['attachments'][0]['views'] = [image: [original: [src: memes[idx], width: 320]]]
}
def jsonPayload = JsonOutput.toJson(payloadData)
def posting = "curl -X POST ${flockUrl} -H 'Content-Type: application/json' -d \'${jsonPayload}\'"
// echo "calon payload:"
// println posting
node('ubuntu') {
try{
println "Report to flock?"
println reportFlock
if (reportFlock == 'true'){
println "Reporting"
sh posting
}
}catch(Exception error){
echo "something wrong with curl flock \n"
println error.toString()
}
}
}
Есть ли способ получить текущее состояние отчета об огурце или любое количество неудачных попыток, чтобы я мог изменить параметр Configs.resultE2E и отправить правильное условие перед отправкой в стадо?