使用 Jenkins 管道访问电子邮件分机模板中的变量

hel*_*ld9 2 jenkins jenkins-plugins email-ext jenkins-pipeline jenkins-email-ext

我正在尝试使用 Jenkins 管道emailext附加模板文件。模板文件中的变量 (PROJNAME) 不可访问,我收到了异常电子邮件:

模板渲染期间引发的异常:没有这样的属性:类的环境:SimpleTemplateScript21 groovy.lang.MissingPropertyException:没有这样的属性:类的环境:SimpleTemplateScript21 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307) 在 SimplerunTemplate1(AbstractCallSite.java:307)。 1) 在 groovy.text.SimpleTemplateEngine$SimpleTemplate$1.writeTo(SimpleTemplateEngine.java:168) 在 groovy.text.SimpleTemplateEngine$SimpleTemplate$1.toString(SimpleTemplateEngine.java:180) 在 hudson.plugins.emailext.plugins.plugins. .renderTemplate(ScriptContent.java:151) 在 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) at org.parboiled.parserunners.BasicParseRunner.match( BasicParseRunner.java:77) 在 org.parboiled.MatcherContext.runMatcher(MatcherContext.java:351)parboiled.matchers.ActionMatcher.match(ActionMatcher.java:96) 在 org.parboiled.parserunners.BasicParseRunner.match(BasicParseRunner.java:77) 在 org.parboiled.MatcherContext.runMatcher(MatcherContext.java:351)parboiled.matchers.ActionMatcher.match(ActionMatcher.java:96) 在 org.parboiled.parserunners.BasicParseRunner.match(BasicParseRunner.java:77) 在 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}"
}
Run Code Online (Sandbox Code Playgroud)

模板(文件名 - test.template):

<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>Job is '${env.PROJNAME}'</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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

当我在模板文件中用ENV(var="PROJNAME")替换时没有帮助。我收到的电子邮件是:

这是一个标题

作业是 ENV(var="PROJNAME")

小智 5

电子邮件模板中唯一对我有用的内容:

<%
    import hudson.model.*

    def YOUR_VARIABLE= build.getEnvVars()["SOME_BUILD_PARAMETER"];
%>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

${YOUR_VARIABLE}
Run Code Online (Sandbox Code Playgroud)