让我从我所知道的开始。我知道您可以在Jenkins配置页面中全局更改SysAdmin电子邮件地址,这就是电子邮件扩展插件中的默认发件人地址。我还知道您可以使用pre-send groovy脚本在每个构建的基础上更改FROM地址。
我正在寻找的是一种方法,当Jenkins中的特定构建发生特定触发器(测试回归)时,可以更改FROM电子邮件地址。我不知道Groovy是否可以在构建级别根据这些信息进行切换(或者是否可以访问这些信息)。我还尝试在特定触发器的内容部分添加一个groovy脚本,但收到一个错误。
在这方面的任何帮助或指导都将非常感谢!谢谢!
发布于 2015-10-28 10:12:16
presend脚本有一个名为" trigger“的变量,它是导致电子邮件发生的触发器。你可以检查它的类型,并在此基础上更改发件人地址。
发布于 2016-08-29 22:03:42
摘要:
预发脚本中的
1.1调试转储构建(和触发器/消息/其他对象)请注意,此触发器对象是电子邮件触发器(例如,"Always“或"Failure - Any") 不是构建触发器原因(也称为构建原因)。
1.2检查构建对象中是否存在构建的触发器(原因)
1.3设置收件人电子邮件地址
从的文档开始。。。Email-ext插件在后期构建操作-可编辑的电子邮件通知-在预发送脚本中的高级。。。https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin#Email-extplugin-PresendScript
“预发送脚本是一种功能,它允许您编写脚本,在发送之前修改MimeMessage对象。这将允许添加自定义标头、修改正文等。预定义变量包括:
< PrintStream >F218
还可以使用:
Perl1.1Dumper这个 Data::Dumper等价物对于调试对象非常有用。http://www.perlmonks.org/?node_id=699918在jenkins作业的Email-Ext - Pre-send脚本中尝试:
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));
查看部分结果(没有显示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的运行中,我们可以看到build对象的差异,build操作/原因具有ScriptTrigger详细信息:
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": {
.
.
1.2 TODO:找出一些逻辑来区分构建原因。我自己在做这件事。
1.3我们可以在Pre-send脚本中设置如下收件人:
import javax.mail.Message.RecipientType
msg.setRecipients(RecipientType.TO, 'someone+FROM_JENKINS_CUSTOM_RECIPIENT@gmail.com')
https://stackoverflow.com/questions/32785072
复制相似问题