Jenkins管道-emailext无法解析模板中的env变量

时间:2019-12-02 02:17:27

标签: jenkins jenkins-pipeline email-ext

在我的jenkinsfile中,我定义了一个环境变量:

env.PACKAGES = htmlPackageList

我尝试使用${PACKAGES}${env.PACKAGES}从模板访问它,但是两次我都只收到带有纯字符串的电子邮件。

template.html

<pre style='line-height: 10px; color: green; font-size: 20px; white-space: pre; margin: 1em 0; display: block;'>$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS.<br/> </pre>
<br/>
Check console <a href="$BUILD_URL">Build URL</a> to view full results.<br/>
<br/>
<h4>Change list:</h4>
<div style="padding-left: 30px; padding-bottom: 15px;">
    ${CHANGES, showPaths=true, format="<div><b>%a</b>: %r %p </div><div style=\"padding-left:30px;\"> &#8212; &#8220;<em>%m</em>&#8221;</div>", pathFormat="</div><div style=\"padding-left:30px;\">%p"}
</div>
--<br/>

<h4>Published Packages:</h4>
${PACKAGES}

电子邮件通过以下方式调用:

success {
    script{
        emailext body: ('${FILE,path="Jenkins/Templates/template.html"}'),
        to: "${env.EmailTo}",
        subject: '[Jenkins] [$PROJECT_NAME] - [Build # $BUILD_NUMBER] - [$BUILD_STATUS]',
        mimeType: 'text/html'
     }
}

1 个答案:

答案 0 :(得分:0)

下面的template(groovy)中的声明可以从管道中获取所有env变量

function getRoomClients(room) {
  return new Promise((resolve, reject) => {
    io.of('/').in(room).clients((error, clients) => {
      resolve(clients);
    });
  });
}

...
const clients = await getRoomClients('hello-world');
console.log(clients);

下面的内容也可以用于仅获取管道中的覆盖变量

[ '9L47TWua75nkL_0qAAAA',
'tVDBzLjhPRNdgkZdAAAB',
'fHjm2kxKWjh0wUAKAAAC' ]