diff --git a/pipelines/gitea-events/eva-pr-link-webhook.groovy b/pipelines/gitea-events/eva-pr-link-webhook.groovy index c58c1a4..c7ec016 100644 --- a/pipelines/gitea-events/eva-pr-link-webhook.groovy +++ b/pipelines/gitea-events/eva-pr-link-webhook.groovy @@ -1,66 +1,67 @@ @Library('shared-lib') _ -import tech.avroid.api.Eva +import tech.avroid.eva.Eva +import tech.avroid.kube.PodTemplates +import tech.avroid.jenkins.Notifications properties([ - buildDiscarder(logRotator(artifactNumToKeepStr: '10', - numToKeepStr: '10')), + buildDiscarder(logRotator(artifactNumToKeepStr: '10', numToKeepStr: '10')), parameters([ string(name: 'DATA_JSON', defaultValue: '') ]) ]) -podTemplate(workspaceVolume: emptyDirWorkspaceVolume(memory: false), - yaml: """ - apiVersion: v1 - kind: Pod - spec: - containers: - - name: alpine - image: ${env.JENKINS_DOCKER_REGISTRY}/docker-hub-proxy/library/alpine:3.18.5 - command: - - sleep - args: - - 99d - resources: - limits: - cpu: 100m - memory: 64Mi - requests: - cpu: 100m - memory: 64Mi -""" -) { - 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) +slaveTemplates = new PodTemplates(this, env.JENKINS_DOCKER_REGISTRY, ["${env.JENKINS_K8S_HARBOR_SECRET}"]) - if (prTasks.isEmpty()) { - prTasks = dataJSON.pull_request.body.findAll(taskPattern) - } +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) - prTasks.each { String taskCode -> - String taskId = eva.getTaskId(taskCode) + Eva eva = new Eva(this, env.JENKINS_EVA_URL, env.JENKINS_EVA_CREDENTIALS) - if (taskId) { - eva.createLink(taskId, prName, prLink) - println "Eva task $taskCode linked with PR $prLink" - } else { - println "Eva task $taskCode doesn't exist" + 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" + ) } } } - catch(err) { - echo 'ERROR: ' + err.getMessage() - currentBuild.result = 'FAILURE' - } } }