使用Groovy脚本更改Jenkins email-ext插件的默认收件人

问题描述 投票:0回答:3

我希望能够基于支持rota修改我的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 source code,我可以看到我可能想要设置的参数是ext_mailer_default_recipients。另外我可以在配置文件hudson.plugins.emailext.ExtendedEmailPublisher.xml中看到我要更新的XML元素叫做recipientList

谁能建议我怎么做?

groovy jenkins email-ext
3个回答
2
投票

要使用普通的Groovy配置Extended Email Publisher,您可以使用以下代码:

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

0
投票

我想你可以使用job-dsl-plugin来改变工作。这将是一个单独的工作(对于你的情况),当rota改变时,可以定时关闭

正如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')
        }
    }
}

这是一个部分示例,您需要在进行批量更改之前查看作业模板


0
投票
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()

这对我来说很好。

© www.soinside.com 2019 - 2024. All rights reserved.