[DO-1652] refactoring eva create link (!87)
Co-authored-by: Rustam Tagaev <rustam.tagaev@avroid.tech> Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/87 Reviewed-by: Vasiliy Chipizhin <vasiliy.chipizhin@avroid.team> Reviewed-by: Denis Patrakeev <denis.patrakeev@avroid.team>
This commit is contained in:
@@ -1,66 +1,67 @@
|
|||||||
@Library('shared-lib') _
|
@Library('shared-lib') _
|
||||||
|
|
||||||
import tech.avroid.api.Eva
|
import tech.avroid.eva.Eva
|
||||||
|
import tech.avroid.kube.PodTemplates
|
||||||
|
import tech.avroid.jenkins.Notifications
|
||||||
|
|
||||||
properties([
|
properties([
|
||||||
buildDiscarder(logRotator(artifactNumToKeepStr: '10',
|
buildDiscarder(logRotator(artifactNumToKeepStr: '10', numToKeepStr: '10')),
|
||||||
numToKeepStr: '10')),
|
|
||||||
parameters([
|
parameters([
|
||||||
string(name: 'DATA_JSON', defaultValue: '')
|
string(name: 'DATA_JSON', defaultValue: '')
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
podTemplate(workspaceVolume: emptyDirWorkspaceVolume(memory: false),
|
slaveTemplates = new PodTemplates(this, env.JENKINS_DOCKER_REGISTRY, ["${env.JENKINS_K8S_HARBOR_SECRET}"])
|
||||||
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)
|
|
||||||
|
|
||||||
if (prTasks.isEmpty()) {
|
slaveTemplates.jnlp {
|
||||||
prTasks = dataJSON.pull_request.body.findAll(taskPattern)
|
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 ->
|
Eva eva = new Eva(this, env.JENKINS_EVA_URL, env.JENKINS_EVA_CREDENTIALS)
|
||||||
String taskId = eva.getTaskId(taskCode)
|
|
||||||
|
|
||||||
if (taskId) {
|
if (prTasks.isEmpty()) {
|
||||||
eva.createLink(taskId, prName, prLink)
|
prTasks = dataJSON.pull_request.body.findAll(taskPattern)
|
||||||
println "Eva task $taskCode linked with PR $prLink"
|
}
|
||||||
} else {
|
|
||||||
println "Eva task $taskCode doesn't exist"
|
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'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user