@Library('shared-lib') _ import tech.avroid.eva.Eva import tech.avroid.kube.PodTemplates import tech.avroid.jenkins.Notifications properties([ buildDiscarder(logRotator(artifactNumToKeepStr: '10', numToKeepStr: '10')), parameters([ string(name: 'DATA_JSON', defaultValue: '') ]) ]) slaveTemplates = new PodTemplates(this, env.JENKINS_DOCKER_REGISTRY, ["${env.JENKINS_K8S_HARBOR_SECRET}"]) slaveTemplates.jnlp { slaveTemplates.poetry { slaveTemplates.docker { node(POD_LABEL) { try { stage('Add PR link to Eva task') { Map dataJSON = readJSON text: params.DATA_JSON String prLink = dataJSON.pull_request.url String taskPattern = '[A-Z]+(-[A-Z]+)?-[0-9]+' // Eva Api adds name with Spaces, but returnes 500 response code String prName = dataJSON.pull_request.title.replace(' ','_') List prTasks = prName.findAll(taskPattern) Eva eva = new Eva(this, env.JENKINS_EVA_URL, env.JENKINS_EVA_CREDENTIALS) if (prTasks.isEmpty()) { prTasks = dataJSON.pull_request.body.findAll(taskPattern) } prTasks.each { String taskCode -> Map task = eva.getTaskInfo(taskCode) if (task.id) { eva.createLink(task.id, prName, prLink) println "Eva task $taskCode linked with PR $prLink" } else { println "Eva task $taskCode doesn't exist" } } } } catch(err) { errorMessage = err.getMessage() println 'ERROR: ' + errorMessage currentBuild.result = 'FAILURE' String currentBuildUser = Jenkins.GetCurrentBuildUser(script: this) String subject = "${currentBuild.currentResult}. Pipeline task: ${currentBuild.fullDisplayName}" Notifications.email( script: this, subject: subject, errorString: errorMessage, recipientProviders: [], to: "${currentBuildUser}@avroid.team" ) } } } } }