使用Jenkins管道访问电子邮件扩展模板中的变量 [英] Access variable in email ext template using Jenkins pipeline

查看:30
本文介绍了使用Jenkins管道访问电子邮件扩展模板中的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Jenkins管道电子邮件文本附加模板文件。 在模板文件中无法访问变量(PROJNAME),我收到电子邮件形式的异常:

模板呈现期间引发异常:没有这样的属性:Env for class:SimpleTemplateScript21 groovy.lang.MissingPropertyException:没有这样的属性:Env for class:SimpleTemplateScript21 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)at SimpleTemplateScript21.run(SimpleTemplateScript21.groovy:1)at groovy.text.SimpleTemplateEngine$SimpleTemplate$1.writeTo(SimpleTemplateEngine.java:168)at groovy。text.SimpleTemplateEngine$SimpleTemplate$1.toString(SimpleTemplateEngine.java:180)at hudson.plugins.emailext.plugins.content.ScriptContent.renderTemplate(ScriptContent.java:151)at hudson.plugins.emailext.plugins.content.ScriptContent.evaluate(ScriptContent.java:82)at org.jenkinsci.plugins.tokenmacro.DataBoundTokenMacro.evaluate(DataBoundTokenMacro.java:208)at org.jenkinsci.plugins.tokenmacro.Parser.processToken(Parser.java:308)at org.jenkinsci.plugins.tokenmacro.Action$KiHW1UeqOdqAwZul.run(Unknown Source)at org.parboiled.matchers.ActionMatcher.match(ActionMatcher.java:96)在org.parboiled.parserunners.BasicParseRunner.match(BasicParseRunner.java:77)at org.parboiled.MatcherContext.runMatcher(MatcherContext.java:351)

管道脚本:

stage('Email') {
    def mailRecipients = "myemail@abc.com"
    def jobStatus = currentBuild.currentResult
    env.PROJNAME = 'project_name'
    echo "projname is ${PROJNAME}"
emailext body: '''${SCRIPT, template="test.template"}''',
    mimeType: 'text/html',
    subject: "[Jenkins] ${jobStatus}",
    to: "${mailRecipients}"
}

模板(filename-test.template):

<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>Job is '${env.PROJNAME}'</p>
</body>
</html>

还尝试将模板文件中的变量语法替换为"${PROJNAME}"和"${ENV,var="PROJNAME"}",但没有成功。有什么建议吗?

当我在模板文件中替换为ENV(var="PROJNAME")时,

没有帮助。我收到电子邮件的方式是:

这是标题

作业为ENV(var="PROJNAME")

推荐答案

尝试覆盖HTML模板中的环境变量,如下所示

<%
def envOverrides = it.getAction("org.jenkinsci.plugins.workflow.cps.EnvActionImpl").getOverriddenEnvironment()
    project =  envOverrides["PROJNAME"]
%>

然后可以在html中使用本地变量project,如

<p> Job is ${project} </p>

注意:您可以使用envOverrides

使用所有必需的环境变量

这篇关于使用Jenkins管道访问电子邮件扩展模板中的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆