Groovy 如何更改Jenkins email ext插件中每个触发器的发件人电子邮件地址?
让我从我知道的开始。我知道您可以在Jenkins配置页面中全局更改系统管理员电子邮件地址,这是email ext插件中的默认发件人地址。我还知道,您可以使用pre-send groovy脚本在每个构建的基础上更改FROM地址 我正在寻找的是一种在Jenkins中的特定构建发生特定触发器(测试回归)时更改发件人电子邮件地址的方法。我不知道Groovy是否可以在构建级别根据这些信息进行切换(或者它是否可以访问这些信息)。我还尝试在特定触发器的内容部分添加groovy scrip,但收到一个错误Groovy 如何更改Jenkins email ext插件中每个触发器的发件人电子邮件地址?,groovy,jenkins,email-ext,Groovy,Jenkins,Email Ext,让我从我知道的开始。我知道您可以在Jenkins配置页面中全局更改系统管理员电子邮件地址,这是email ext插件中的默认发件人地址。我还知道,您可以使用pre-send groovy脚本在每个构建的基础上更改FROM地址 我正在寻找的是一种在Jenkins中的特定构建发生特定触发器(测试回归)时更改发件人电子邮件地址的方法。我不知道Groovy是否可以在构建级别根据这些信息进行切换(或者它是否可以访问这些信息)。我还尝试在特定触发器的内容部分添加groovy scrip,但收到一个错误 在此
在此方面的任何帮助或指导都将不胜感激!谢谢 presend脚本有一个名为“trigger”的变量,该变量是导致电子邮件发生的触发器。您可以检查其类型,并在此基础上更改发件人地址。摘要:
import javax.mail.Message.RecipientType
msg.setRecipients(RecipientType.TO, 'someone+FROM_JENKINS_CUSTOM_RECIPIENT@gmail.com')
1.1调试转储生成(和触发器/msg/其他对象)
请注意,此触发器对象是电子邮件触发器(例如“始终”或“故障-任何”)而不是生成触发器(又称生成原因)
1.2检查生成对象是否存在生成的触发器(原因)
1.3设置收件人电子邮件地址- msg-可以修改的mimessage对象
- 记录器-打印流,将写入作业日志
- build-此消息所属的生成
- cancel-一个布尔值,设置为true时将取消发送电子邮件 “”“
- 触发器-电子邮件触发器,而不是生成触发器
logger.println "MSG: " + msg;
logger.println "ENV: " + msg;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
XStream dumper = new XStream(new JsonHierarchicalStreamDriver());
logger.println "TRIGGER: " + trigger;
logger.println(dumper.toXML(trigger));
logger.println "BUILD: " + build;
logger.println(dumper.toXML(build));
查看部分结果(不显示大部分构建对象)。这里的触发器是电子邮件“AlwaysTrigger”,但我们可以看到生成操作的原因是管理员用户:
TRIGGER: hudson.plugins.emailext.plugins.trigger.AlwaysTrigger@431ff400
{"hudson.plugins.emailext.plugins.trigger.AlwaysTrigger": {
"email": {
"recipientList": "",
"subject": "$PROJECT_DEFAULT_SUBJECT",
"body": "$PROJECT_DEFAULT_CONTENT",
"recipientProviders": [
{},
{}
],
"attachmentsPattern": "",
"attachBuildLog": false,
"compressBuildLog": false,
"replyTo": "$PROJECT_DEFAULT_REPLYTO",
"contentType": "project"
}
}}
BUILD: custom_email_test_gunk #14
{"hudson.model.FreeStyleBuild": {
"actions": [
{
"default": {},
"int": 4,
"hudson.model.CauseAction": {
"causeBag": [
[
{
"userId": "admin"
},
1
]
]
},
"hudson.scm.CvsRevisionState": {
.
.
从由脚本触发器触发的生成运行中,我们可以看到生成对象中的差异,生成操作/原因具有脚本触发器详细信息:
BUILD: custom_email_test_gunk #10
{"hudson.model.FreeStyleBuild": {
"actions": [
{
"default": {},
"int": 6,
"org.jenkinsci.plugins.scripttrigger.ScriptTriggerRunAction": {
"description": "\n[jenkins] $ /bin/sh -xe /tmp/hudson6220381111236932099.sh\n+ set +x\nJOB_NAME=custom_email_test_gunk\nJOB_VARS_CMD=JUNK=custom_email_test_;SYSTESTNAME=Docker;PRODUCT=gunk;REL=LATEST;DRIVER=gunk;SUT=gunk;SUSER=\nPRODUCT=gunk REL=LATEST DRIVER= SUT= SYSTESTNAME=Docker SUSER=\n./system_test/regression/run_scripts/poll_stuff.sh STDIR=yadda yada yadda \ndiff: yadda yadda \n<description>"
},
"org.jenkinsci.lib.xtrigger.XTriggerCauseAction": {
"build": {
"@class": "hudson.model.FreeStyleBuild",
"@reference": "../../../.."
}
},
"hudson.model.CauseAction": {
"causeBag": [
[
{
"triggerName": "ScriptTrigger",
"causeFrom": " and <description>\n[jenkins] $ /bin/sh -xe /tmp/hudson6220381111236932099.sh\n+ set +x\nJOB_NAME=custom_email_test_gunk yadda yadda ",
"logEnabled": true
},
1
]
]
},
"hudson.scm.CvsRevisionState": {
.
.
电子邮件触发器与生成触发器不同。电子邮件触发器可能类似于“始终”、“故障-任何”、e.t.c。生成触发器可能由用户触发GUI中的生成、SCM更改、触发脚本插件等引起。我也想做同样的事情。如果在测试SCM中发生更改时触发生成,则仅向测试人员发送电子邮件。如果在软件SCM中发生更改时触发生成,则通过电子邮件发送软件+测试。如果版本触发了构建(新版本的ScriptTrigger插件轮询),则将结果通过电子邮件发送给所有人。