Изменение получателей по умолчанию для плагина Jenkins email-ext с помощью скрипта Groovy

Я хотел бы иметь возможность изменять список получателей по умолчанию моих писем о сборках Jenkins на основе ротации поддержки. В настоящее время я пытаюсь понять, как это сделать.

Пока я пробовал это:

import jenkins.model.*;
import org.kohsuke.stapler.*;

def plugin = jenkins.model.Jenkins.instance.getDescriptorByType(hudson.plugins.emailext.ExtendedEmailPublisherDescriptor.class);

println plugin.getClass();

plugin.configure(new StaplerRequest());

Я вижу, что успешно получаю Descriptor для плагина, который хочу настроить, но не совсем уверен, что делать дальше.

Теперь я понимаю, что StaplerRequest - это интерфейс. Есть ли реализация, которую я могу создать и установить требуемый параметр?

Из просмотра email_ext исходный код Я вижу, что параметр, который я мог бы захотеть установить, - ext_mailer_default_recipients. Кроме того, я вижу в файле конфигурации hudson.plugins.emailext.ExtendedEmailPublisher.xml элемент XML, который я хочу обновить, называется recipientList.

Кто-нибудь может подсказать, как я могу это сделать?


person Ed .    schedule 30.01.2015    source источник


Ответы (3)


Чтобы настроить Extended Email Publisher с простым Groovy, вы можете использовать следующий код:

extendedMailer = j.getDescriptorByType(hudson.plugins.emailext.ExtendedEmailPublisherDescriptor.class)
extendedMailer.setDefaultSuffix("@server.local")
extendedMailer.setDefaultContentType("text/html")
extendedMailer.setSmtpServer("my-smtp.server.local")
extendedMailer.save()
person Lukas    schedule 22.02.2018

Я думаю, вы можете использовать job-dsl-plugin, чтобы изменить работы. Это будет отдельная работа (для вашего случая), которую можно было бы приурочить к изменению ротации.

как указано в wiki

def emailTrigger = {
    trigger {
        email {
            recipientList '$PROJECT_DEFAULT_RECIPIENTS'
            subject '$PROJECT_DEFAULT_SUBJECT'
            body '$PROJECT_DEFAULT_CONTENT'
            sendToDevelopers true
            sendToRequester false
            includeCulprits false
            sendToRecipientList true
        }
    }
}

job {
    configure { project ->
        project / publisher << 'hudson.plugins.emailext.ExtendedEmailPublisher' {
              recipientList '[email protected]'
              configuredTriggers {
                  'hudson.plugins.emailext.plugins.trigger.FailureTrigger' emailTrigger
                  'hudson.plugins.emailext.plugins.trigger.FixedTrigger' emailTrigger
              }
              contentType 'default'
              defaultSubject '$DEFAULT_SUBJECT'
              defaultContent '$DEFAULT_CONTENT'
        }
    }
}

РЕДАКТИРОВАТЬ

Я думаю, что это может быть легко достигнуто, используя более поздний пример.

job {
    publishers {
        extendedEmail('[email protected]') {
            trigger(triggerName: 'Failure', recipientList: '$PROJECT_DEFAULT_RECIPIENTS')
            trigger(triggerName: 'Fixed', recipientList: '$PROJECT_DEFAULT_RECIPIENTS')
        }
    }
}

Это частичный пример, и вам нужно будет просмотреть шаблоны для вакансий, прежде чем вносить оптовые изменения.

person KeepCalmAndCarryOn    schedule 30.01.2015

import jenkins.model.*
import hudson.plugins.emailext.ExtendedEmailPublisherDescriptor
Jenkins jenkins
def plugin = jenkins.model.Jenkins.instance.getDescriptorByType(hudson.plugins.emailext.ExtendedEmailPublisherDescriptor.class);
print plugin
plugin.setSmtpServer("your server")
plugin.setDefaultSuffix("your suffix")
plugin.save()

У меня это отлично работает.

person Gogs    schedule 06.03.2018