【问题标题】:How to change Email-ext plugin to load script from custom location如何更改电子邮件分机插件以从自定义位置加载脚本
【发布时间】:2017-08-14 17:13:58
【问题描述】:

我喜欢将我的 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]。

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline jenkins-email-ext


    【解决方案1】:

    出于安全原因,模板必须位于正确的目录中。如果您想将它们保存在 SCM 中,我建议您创建一个 Jenkins 作业,将该 SCM 签出到正确的目录。从技术上讲,虽然该目录不应该是可写的,但可能是。或者,您可以在管道本身中使用 groovy 代码

    【讨论】:

    • 确定是出于安全原因吗?有一个未解决的问题:JENKINS-43903
    • 是的,我是插件的维护者。
    • 我已将那张票作为 wontfix 关闭。
    【解决方案2】:

    在 Jenkins 2.190 上,使用本地工作空间文件作为果冻模板,效果很好。在构建过程中使用 SCM 步骤拉取它,并接收到正确的 html 内容。

    这是我的电子邮件分机配置的默认内容:

    ${JELLY_SCRIPT,template="${WORKSPACE}/some_dir/email_template.jelly"}
    

    【讨论】:

      【解决方案3】:

      通过使用命令行手动覆盖文件来解决:

      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']]
              }
          }
      }
      

      有点粗略,但确实有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-26
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2012-10-30
        • 2019-10-19
        相关资源
        最近更新 更多