我希望能够基于支持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配置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()
我想你可以使用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')
}
}
}
这是一个部分示例,您需要在进行批量更改之前查看作业模板
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()
这对我来说很好。