0

我希望能够根据支持列表修改我的 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

谁能建议我如何做到这一点?

4

3 回答 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()
于 2018-02-22T17:54:17.203 回答
0

我认为您可以使用job-dsl-plugin来更改工作。这将是一项单独的工作(对于您的情况),可能会随着轮换表的变化而定时关闭

正如维基中提到的

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 'Engineering@company.com'
              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('Engineering@company.com') {
            trigger(triggerName: 'Failure', recipientList: '$PROJECT_DEFAULT_RECIPIENTS')
            trigger(triggerName: 'Fixed', recipientList: '$PROJECT_DEFAULT_RECIPIENTS')
        }
    }
}

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

于 2015-01-30T11:18:33.097 回答
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()

这对我来说很好。

于 2018-03-06T18:41:47.213 回答