我希望能够根据支持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
。
有人可以建议我怎么做吗?
答案 0 :(得分: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()
答案 1 :(得分: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 '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')
}
}
}
这是一个部分示例,您需要在进行批量更改之前查看作业模板
答案 2 :(得分: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()
这对我来说很好。