Jenkins2 学习系列14 -- 使用 Config File Provider 添加邮件模板

在 Jenkins2 学习系列13 -- 邮件和Slack通知 里发送邮件的内容是写死到了pipeline里,这样不太灵活

emailext (
to: '[email protected]', 
subject: "Job [${env.JOB_NAME}] - Status: ${currentBuild.result?: 'success'}", 
body: 
"""

EXECUTED: Job \' ${env.JOB_NAME}:${env.BUILD_NUMBER}\'

View console output at " ${env.JOB_NAME}:${env.BUILD_NUMBER}"

(Build log is attached.)

""")

这里我们通过 Config File Provider 插件,创建邮件模板,然后实现复用的目的,具体步骤:

  1. 安装插件,略
  2. 安装后管理页面多了 "Managed files" 菜单项, 进入后点 Add a new Config
Jenkins2 学习系列14 -- 使用 Config File Provider 添加邮件模板_第1张图片
image.png

Type 选择 "Extended Email Publisher Groovy Template"

Jenkins2 学习系列14 -- 使用 Config File Provider 添加邮件模板_第2张图片
image.png

ID 可以自行填写

Jenkins2 学习系列14 -- 使用 Config File Provider 添加邮件模板_第3张图片
image.png

Content 填写如下





${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志  

 

    
(本邮件是程序自动下发的,请勿回复!)

构建信息
  • 项目名称 : ${JOB_NAME}
  • 构建编号 : 第${BUILD_NUMBER}次构建
  • 触发原因 : ${CAUSE}
  • 构建日志 : ${BUILD_URL}console
  • 工作目录 : ${PROJECT_URL}
历史变更记录:
${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:
%c
",showPaths=true,changesFormat="
[%a]
%m
",pathFormat="    %p"}
构建日志(最后100行):

${BUILD_LOG, maxLines=100}

  1. 最后修改流水线脚本,通过插件提供的configFileProvider实现获取文件
    如果是脚本式流水线。
node () {
    stage('email'){
        echo "测试发送邮件"
        // 设置生成模板文件
        configFileProvider([configFile(fileId: '0ad43176-c202-4ebc-aaff-441ef79f49d8',
                                       targetLocation: 'email.html', 
                                       variable: 'failt_email_template')]) {
            //  读取模板
            template = readFile encoding: 'UTF-8', file: "${failt_email_template}"
            //  发送邮件
            emailext(subject: '任务执行失败',
                     attachLog: true,
                     recipientProviders: [requestor()], 
                     to: '32*****[email protected]',
                     body: """${template}""")
        }
    }
}

如果是声明式流水线

post {
        always {
            configFileProvider([configFile(fileId: 'email-groovy-template-cn', targetLocation: 'email.html', variable: 'content')]) {
               script {
                   template = readFile encoding: 'UTF-8', file: "${content}"
                   emailext(
                       to: "${email_to}",
                       subject: "Job [${env.JOB_NAME}] - Status: ${currentBuild.result?: 'success'}",
                       body: """${template}"""
                   )
               }
           }
        }
    }
}

大致流程,configFileProvider 通过传入的 fileId 读取具体文件,然后通过 targetLocation 给模板起起名,假如 WORKSPACE=/var/jenkins_home/workspace/email-test,targetLocation: 'email.html',执行时,通过构建日志你会发现 copy managed file [Groovy Email Template] to file:/var/jenkins_home/workspace/email-test/email.html

参考

Jenkins Email 邮件配置

你可能感兴趣的:(Jenkins2 学习系列14 -- 使用 Config File Provider 添加邮件模板)