1

我目前正在从使用声明性语法设计的詹金斯构建管道发送自定义电子邮件通知。我已经Config File Provider Plugin 3.8.0, Email Extension Plugin 2.82 & Email Extension Template Plugin 1.2安装在我的詹金斯服务器上。

我还完成了电子邮件扩展插件工作所需的全局系统配置(smtp 凭据、默认值等)。

然后我创建了一个简单的 groovy 模板脚本,并使用名为my-email-template 的Config File Provider Plugin 将其添加为 Jenkins 上的托管文件。添加文件时,我选择文件类型为Extended Email Publisher Groovy Template

然后我在我的 Jenkinsfile 中添加了以下步骤,

steps {
  emailext body: '''${SCRIPT, template="managed:my-email-template"}''',
  mimeType: 'text/html',
  subject: "[Jenkins] ${currentBuild.fullDisplayName}",
  to: "abc@gmail.com"    
}

通过上述配置,我收到了一封正文为的邮件;

在 $JENKINS_HOME/email-templates 中找不到 Groovy 模板文件 [managed:my-email-template]。

根据官方电子邮件扩展插件文档,我使用managed:前缀作为我的模板文件引用,所以我希望它指的是配置的托管文件,但它仍在 jenkins home 下搜索文件。

有人可以帮我弄这个吗?

4

1 回答 1

1

默认情况下,电子邮件扩展插件在 ${JENKINS_HOME}/email-templates/ 目录中查找。如果您有一个名为“my-email-template”的脚本并且没有使用 Config File Provider Plugin ,那么您可以将您的脚本放在${JENKINS_HOME}/email-templates/目录中并按以下方式使用它:

stage("Send Email")
   {
     steps {
                emailext body: '''${SCRIPT, template="my-email-template"}''', subject: 
                'Email subject  ', to: 'abc@gmail.com'
          }
   }

如果电子邮件扩展插件无法找到模板文件,那么无论您是否使用托管插件,它都会始终给出如下错误:

Groovy Template file [my-email-template.template] was not found in $JENKINS_HOME/email-templates.

使用 Config File Provider Plugin 和 managed: prefix :

第 1 步:到 Manage Jenkins -> Managed Files
第 2 步:单击 -> 添加新配置
第 3 步:选择类型Extended Email Publisher Groovy 模板并单击提交
第 4 步:选择文件名称并添加内容你的模板文件。确保复制此名称,因为它将在管道中使用。点击提交。

在此处输入图像描述

第 5 步:在管道中添加代码。确保输入正确的名称“托管:Groovy 电子邮件模板”

stage("Send Email")
   {
     steps {
                emailext body: '''${SCRIPT, template="managed:Groovy Email Template"}''', subject: 
                'Email subject  ', to: 'abc@gmail.com'
          }
   }

以上应该运行,您可以在以下路径看到模板文件的内容:
${JENKINS_HOME}/org.jenkinsci.plugins.configfiles.GlobalConfigFiles.xml
注意
如果上述方法不起作用,请重新启动 jenkins / 重新安装插件电子邮件扩展插件,正如 vsbehere 所做的那样,因为方法是正确的。

于 2021-05-19T14:11:48.327 回答