[DO-1142] add_notification (#36)

Reviewed-on: https://git.avroid.tech/DevOps/jenkins-shared-lib/pulls/36
Reviewed-by: Aleksandr Vodyanov <aleksandr.vodyanov@avroid.tech>
This commit is contained in:
Rustam Tagaev
2024-10-04 13:02:29 +03:00
parent 2c35b29f7f
commit ef06386a67
4 changed files with 59 additions and 1 deletions

View File

@@ -1,3 +1,5 @@
package tech.avroid.api
import groovy.json.JsonOutput import groovy.json.JsonOutput
import groovy.json.JsonSlurper import groovy.json.JsonSlurper

View File

@@ -1,3 +1,5 @@
package tech.avroid.api
import groovy.json.JsonOutput import groovy.json.JsonOutput
/** /**

View File

@@ -1,4 +1,4 @@
package com.ncloudtech.jenkins package tech.avroid.jenkins
import hudson.model.Result import hudson.model.Result
import jenkins.model.CauseOfInterruption import jenkins.model.CauseOfInterruption

View File

@@ -0,0 +1,54 @@
package tech.avroid.jenkins
/**
*Класс для отправки преднастроенных оповещений из Jenkins
*/
class Notifications implements Serializable {
// See https://www.baeldung.com/java-serial-version-uid
private static final long serialVersionUID = 1L
/**
* Отправка преднастроенного почтового оповещения
* <a href="https://www.jenkins.io/doc/pipeline/steps/email-ext/#emailext-extended-email">Документация плагина</a>
* Передаём через тип Map* Передаём через тип Map
* @param script Script - указатель на контекст вызывающего объекта шага script
* @param subject String - [опционально] тема письма
* @param body String - [опционально] тело письма
* @param mimeType String - [опционально] тип MIME тела письма
* @param attachLog boolean - [опционально] прикреплять ли лог к сообщению
* @param recipientProviders List - [опционально] предзаданные классы получателей сообщения
* @param to String - [опционально] одиночный получатель сообщения
* @param errorString String - [опционально] специальная переменная для ввода в тело письма текста ошибки
*/
static void email(Map args = [:]) {
Map defaultArgs = [
mimeType: 'text/html',
attachLog: true,
recipientProviders: [args.script.developers(), args.script.requestor()],
to: '',
subject: "${args.script.currentBuild.currentResult}. Pipeline task: " +
args.script.currentBuild.fullDisplayName,
body: "<p>Console output: &QUOT;<a href=\'${args.script.env.BUILD_URL}\'>" +
"${args.script.env.JOB_NAME} [${args.script.env.BUILD_NUMBER}]</a>&QUOT;</p>"
]
defaultArgs.each { k, v ->
if (args[k] == null || args[k] == '' || args[k] == []) {
args[k] = v
}
}
if (args.errorString != '' && args.errorString != null) {
args.body = args.body + "\nTask error:\n${args.errorString}"
}
args.script.emailext subject: args.subject,
mimeType: args.mimeType,
body: args.body,
attachLog: args.attachLog,
recipientProviders: args.recipientProviders,
to: args.to
}
}