我喜欢将我的Jenkins电子邮件脚本提交到我的工作副本,并将其与Email-ext一起使用。
所以我写了类似的东西:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
}
post {
always {
echo 'Sending email...'
emailext body: '''${SCRIPT, template="${WORKSPACE}\\Src\\Scripts\\Jenkins\\groovy-html2.template"}''',
mimeType: 'text/html',
subject: "[Leeroy Jenkins] ${currentBuild.fullDisplayName}",
to: "user@company.com",
replyTo: "user@company.com",
recipientProviders: [[$class: 'CulpritsRecipientProvider']]
}
}
}
但我收到以下邮件: 在$ JENKINS_HOME / email-templates中找不到Groovy模板文件[$ {WORKSPACE} SrcScriptsJenkinsgroovy-html2.template]。
答案 0 :(得分:1)
出于安全原因,模板必须位于正确的目录中。如果你想将它们保存在SCM中,我建议你创建一个Jenkins作业,将SCM检出到正确的目录。从技术上讲,虽然该目录不应该是可写的,但可能是。或者,您可以在管道本身使用groovy代码
答案 1 :(得分:1)
在 Jenkins 2.190 上,使用本地工作区文件作为 jelly 模板,效果很好。在构建过程中用SCM step拉取,接收到正确的html内容。
这是我的 email-ext 配置的默认内容:
${JELLY_SCRIPT,template="${WORKSPACE}/some_dir/email_template.jelly"}
答案 2 :(得分:0)
通过使用命令行手动覆盖文件来解决此问题:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
}
post {
always {
echo 'Sending email...'
bat "copy /Y ${WORKSPACE}\\Src\\Scripts\\Jenkins\\groovy-html2.template \"${JENKINS_HOME}\\email-templates\\groovy-html2.template\""
emailext body: '''${SCRIPT, template="${WORKSPACE}\\Src\\Scripts\\Jenkins\\groovy-html2.template"}''',
mimeType: 'text/html',
subject: "[Leeroy Jenkins] ${currentBuild.fullDisplayName}",
to: "user@company.com",
replyTo: "user@company.com",
recipientProviders: [[$class: 'CulpritsRecipientProvider']]
}
}
}
有点粗糙,但它确实有效。