获取email-ext脚本模板以使用Jenkins管道

nav*_*n87 19 jenkins email-ext jenkins-pipeline

我最近转换为Jenkins 2.x,我正在试验管道流程,但我似乎无法使用email-ext插件来处理groovy脚本模板.虽然我的标准流程仍然可以正常工作,但如果我尝试以下操作,我会收到带有意外令牌SCRIPT的错误

    emailext mimeType: 'text/html', replyTo: 'xxxx', subject: "${env.JOB_NAME} - Build# ${env.BUILD_NUMBER} - ${env.BUILD_STATUS}", to: 'xxxx', body: "${SCRIPT, template='regressionfailed.groovy'}"
Run Code Online (Sandbox Code Playgroud)

我知道早期的令牌扩展存在问题,但似乎从最新的维基更新中已经修复了这些问题.对于任何令牌,我仍然没有令牌扩展.有没有什么好的参考让这个再次起作用.我想切换到管道流程,但带有令牌扩展的电子邮件模板是工作流程的关键.

use*_*767 22

在声明性管道中使用emailext没有问题.但是您的脚本将无法正确访问"build.result"参数,因为它尚未完成.就像在默认脚本groovy-html.template中一样.

编辑:实际上,如果您自己手动设置,可以访问build.result.

所以最好在声明性管道的末尾添加一个阶段,如下所示:

stage('Send email') {
    def mailRecipients = "your_recipients@company.com"
    def jobName = currentBuild.fullDisplayName

    emailext body: '''${SCRIPT, template="groovy-html.template"}''',
        mimeType: 'text/html',
        subject: "[Jenkins] ${jobName}",
        to: "${mailRecipients}",
        replyTo: "${mailRecipients}",
        recipientProviders: [[$class: 'CulpritsRecipientProvider']]
}
Run Code Online (Sandbox Code Playgroud)

另请注意,如果您使用自己的脚本,则无法将其命名为"groovy-html.template"或"groovy-text.template",因为它们默认为emailext(因此甚至无法访问该文件).请参阅此处的 "脚本内容" .


Dan*_*ani 7

显然大家都知道。定义管道有两种方式:声明式管道(以“管道”开头)和脚本管道(以“节点”开头)

使用声明式管道,必须指定脚本来执行程序,即用于def定义变量。所以在管道情况下:

stage('Email') {
    steps {
        script {
            def mailRecipients = 'XXX@xxxxx.xxx-domain'
            def jobName = currentBuild.fullDisplayName
            emailext body: '''${SCRIPT, template="groovy-html.template"}''',
            mimeType: 'text/html',
            subject: "[Jenkins] ${jobName}",
            to: "${mailRecipients}",
            replyTo: "${mailRecipients}",
            recipientProviders: [[$class: 'CulpritsRecipientProvider']]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我为此花了一些时间,希望对其他人有所帮助。


Mar*_*tin 5

今天面临同样的问题,显然在emailext之前定义了主体似乎可以解决问题:

def emailBody = '${SCRIPT, template="regressionfailed.groovy"}'
def emailSubject = "${env.JOB_NAME} - Build# ${env.BUILD_NUMBER} - ${env.BUILD_STATUS}"
emailext(mimeType: 'text/html', replyTo: 'xxxx', subject: emailSubject, to: 'xxxx', body: emailBody)
Run Code Online (Sandbox Code Playgroud)

请记住,您可能仍需要重做模板的某些部分。