From ef06386a67149cacf1fd9dec18e97658dd6cbf1f Mon Sep 17 00:00:00 2001 From: Rustam Tagaev Date: Fri, 4 Oct 2024 13:02:29 +0300 Subject: [PATCH] [DO-1142] add_notification (#36) Reviewed-on: https://git.avroid.tech/DevOps/jenkins-shared-lib/pulls/36 Reviewed-by: Aleksandr Vodyanov --- src/tech/avroid/api/Eva.groovy | 2 + src/tech/avroid/api/Gitea.groovy | 2 + src/tech/avroid/jenkins/Jenkins.groovy | 2 +- src/tech/avroid/jenkins/Notifications.groovy | 54 ++++++++++++++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/tech/avroid/jenkins/Notifications.groovy diff --git a/src/tech/avroid/api/Eva.groovy b/src/tech/avroid/api/Eva.groovy index 6008a1d..9fbaa23 100644 --- a/src/tech/avroid/api/Eva.groovy +++ b/src/tech/avroid/api/Eva.groovy @@ -1,3 +1,5 @@ +package tech.avroid.api + import groovy.json.JsonOutput import groovy.json.JsonSlurper diff --git a/src/tech/avroid/api/Gitea.groovy b/src/tech/avroid/api/Gitea.groovy index 4deff1f..a8db155 100644 --- a/src/tech/avroid/api/Gitea.groovy +++ b/src/tech/avroid/api/Gitea.groovy @@ -1,3 +1,5 @@ +package tech.avroid.api + import groovy.json.JsonOutput /** diff --git a/src/tech/avroid/jenkins/Jenkins.groovy b/src/tech/avroid/jenkins/Jenkins.groovy index 77074f7..6992485 100644 --- a/src/tech/avroid/jenkins/Jenkins.groovy +++ b/src/tech/avroid/jenkins/Jenkins.groovy @@ -1,4 +1,4 @@ -package com.ncloudtech.jenkins +package tech.avroid.jenkins import hudson.model.Result import jenkins.model.CauseOfInterruption diff --git a/src/tech/avroid/jenkins/Notifications.groovy b/src/tech/avroid/jenkins/Notifications.groovy new file mode 100644 index 0000000..d191706 --- /dev/null +++ b/src/tech/avroid/jenkins/Notifications.groovy @@ -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 + + /** + * Отправка преднастроенного почтового оповещения + * Документация плагина + * Передаём через тип 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: "

Console output: "" + + "${args.script.env.JOB_NAME} [${args.script.env.BUILD_NUMBER}]"

" + ] + + 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 + } + +}