模板名称是变量时如何使用Groovy模板引擎?

时间:2017-09-20 16:07:51

标签: groovy jenkins-pipeline

我试图找到一种方法来使用groovy变量而不是使用硬编码模板名称

当前代码如下所示:'${SCRIPT, template="groovy-html.template"}'我试图使用嵌套变量扩展,但我仍然遇到错误。

示例:

def body = '''${SCRIPT, template="${template}"}'''
  

未找到Groovy模板文件[$ {template}]   $ JENKINS_HOME /电子邮件模板。使用text.jelly模板生成。

我的电话可以在https://github.com/pycontribs/powertape/blob/master/vars/notifyBuild.groovy#L47

看到

3 个答案:

答案 0 :(得分:1)

def sendEmail(String subject, String template)
{
   def bodyContent = "\${SCRIPT, template=\"${template}\"}"

   emailext  subject: "${subject}",
             body: bodyContent,
             recipientProviders: [[$class: 'RequesterRecipientProvider']]
}

以上对我有用。

答案 1 :(得分:0)

您可以尝试更改

自:

def body = '''${SCRIPT, template="${template}"}'''

要:

def body = """${SCRIPT, template="$template"}"""

答案 2 :(得分:0)

我花了一些时间才意识到SCRIPT扩展不是由Groovy本身进行的,而是由emailex函数进行的。

因此,解决方法是阻止Groovy扩展外层:

def body = "\${SCRIPT, template='${template}'}"

在此之后,当我将body参数传递给emailext时,它将被正确扩展。