首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在每个触发器的基础上更改Jenkins email-ext插件中的发件人电子邮件地址?

如何在每个触发器的基础上更改Jenkins email-ext插件中的发件人电子邮件地址?
EN

Stack Overflow用户
提问于 2015-09-25 22:58:45
回答 2查看 3.4K关注 0票数 4

让我从我所知道的开始。我知道您可以在Jenkins配置页面中全局更改SysAdmin电子邮件地址,这就是电子邮件扩展插件中的默认发件人地址。我还知道您可以使用pre-send groovy脚本在每个构建的基础上更改FROM地址。

我正在寻找的是一种方法,当Jenkins中的特定构建发生特定触发器(测试回归)时,可以更改FROM电子邮件地址。我不知道Groovy是否可以在构建级别根据这些信息进行切换(或者是否可以访问这些信息)。我还尝试在特定触发器的内容部分添加一个groovy脚本,但收到一个错误。

在这方面的任何帮助或指导都将非常感谢!谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-10-28 10:12:16

presend脚本有一个名为" trigger“的变量,它是导致电子邮件发生的触发器。你可以检查它的类型,并在此基础上更改发件人地址。

票数 2
EN

Stack Overflow用户

发布于 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对象。这将允许添加自定义标头、修改正文等。预定义变量包括:

  • msg -可修改的MimeMessage对象
  • 记录器-生成并将写入作业日志。
  • build -生成此消息属于
  • cancel -布尔值,设置为true时将取消发送电子邮件“”

< PrintStream >F218

还可以使用:

  • trigger -电子邮件触发器,而非build trigger

Perl1.1Dumper这个 Data::Dumper等价物对于调试对象非常有用。http://www.perlmonks.org/?node_id=699918在jenkins作业的Email-Ext - Pre-send脚本中尝试:

代码语言:javascript
运行
复制
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“,但是我们可以看到构建操作是由管理员用户引起的:

代码语言:javascript
运行
复制
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详细信息:

代码语言:javascript
运行
复制
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脚本中设置如下收件人:

代码语言:javascript
运行
复制
import javax.mail.Message.RecipientType
msg.setRecipients(RecipientType.TO, 'someone+FROM_JENKINS_CUSTOM_RECIPIENT@gmail.com') 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32785072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档