BluePen BluePen
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)

Alex

一个好人
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)
  • Jenkins 安装
  • Jenkins 权限控制
  • Jenkins 环境变量
  • 流水线语法
  • 流水线任务
  • Jenkins 邮件通知
    • 配置
    • 使用
    • 参考文档
  • Jenkins 参数化构建
  • Jenkins 使用 FTP插件上传文件
  • Jenkins 使用提交信息
  • Jenkins 执行命令和脚本
  • 多分支流水线插件
  • Jenkins REST api
  • Jenkins 踩坑总结
  • Jenkins
Alex
2019-10-01
目录

Jenkins 邮件通知

Jenkins 内置邮件发送客户端,只需配置邮箱服务器即邮件发送账户密码即可使用

-> 配置

在系统管理 -> 系统配置页

  • 在Jenkins Location区域下填写 系统管理员邮件地址, 即邮件发送者的邮箱地址
    • eg: [email protected]
    • Jenkins Notification <[email protected]>, 指定显示名
  • 在邮件通知 或扩展邮件通知(安装对应插件)区域(即本页最下方)下填写邮箱配置信息
  • 发送测试邮件测试无误即可

-> 使用

一般会推荐安装 Email Extension Plugin (opens new window),可以指定一些默认选项,比如邮件主题,内容,收件人等

在“自由风格项目”中可直接在构建后的步骤里引用该插件功能,选择触发策略即可。
本文主要备注在 pipeline脚本中的使用。

-> 使用默认邮件功能

默认的 mailer插件基本满足发邮件的功能,在流水线脚本中,通常结合 post区块来条件触发。eg:

post {
    failure {
        mail subject: "Example Build: ${env.JOB_NAME} - Failed", 
            to: '[email protected]', 
            replyTo: '[email protected]', 
            mimeType: 'text/html',
            body: """
                    Job Failed - ${env.JOB_NAME} 
                    build id: ${env.BUILD_NUMBER}
                    View the log at: ${env.BUILD_URL}console
                    Blue Ocean: ${env.RUN_DISPLAY_URL}
                """
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

详细的参数可以参考 片段代码生成器

-> 使用扩展插件

使用 Email Extension Plugin的示例如下:

post {
    failure {
        emailext subject: '${DEFAULT_SUBJECT}',
          recipientProviders: [developers(), culprits()], 
          //也可以使用 "to"来动态指定,最后会合并收件人列表
          to: '$DEFAULT_RECIPIENTS',
          body: """<p>FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
            <p>Check console output at &QUOT;<a href='${env.BUILD_URL}'>
            ${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>&QUOT;</p>
            """
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13

优势在于收件人的填写上更加智能

  • culprits, “罪魁祸首”,包含最后一次成功的构建到此次构建所有的代码提交者
  • developers, 所有提交过改变的人
  • requestor, 触发此次构建的人
  • brokenBuildSuspects, 导致构建失败的嫌疑人
  • brokenTestsSuspects, 导致单元测试失败的嫌疑人
  • upstreamDevelopers, 触发此次构建的上游提交者
  • $DEFAULT_RECIPIENTS, 全局配置的默认收件人(注意使用时用单引号)
  • $DEFAULT_REPLYTO, 全局配置的默认回复人(注意使用时用单引号)

更多变量详情参考全局配置的详情页,如下: mailext_var

-> 使用模板

使用扩展插件的模板功能,默认提供了两个模板

  • Text only template: ${SCRIPT, template="groovy-text.template"}
  • HTML template: ${SCRIPT, template="groovy-html.template"}

也可以自己自定义脚本/模板,放在 JENKINS_HOME/email-templates/目录下(不存在可自行创建)
eg:

post {
    failure {
        emailext subject: '${DEFAULT_SUBJECT}',
          //使用默认收件人配置,也可以使用 "to"来动态指定
          recipientProviders: [developers(), culprits()], 
          to: '$DEFAULT_RECIPIENTS',
          mimeType: 'text/html',
          //注意body 外层是单引号,此处不是模板插值,不能使用双引号
          body: '${SCRIPT, template="groovy-html.template"}',
          replyTo: '$DEFAULT_REPLYTO'
          //末尾不能有多余的逗号
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

-> 指定 html发送

也可以直接发送自己指定的html文件作为报告

post {
    failure {
        emailext subject: '${DEFAULT_SUBJECT}',
          //使用默认收件人配置,也可以使用 "to"来动态指定
          recipientProviders: [developers(), culprits()], 
          to: '$DEFAULT_RECIPIENTS',
          mimeType: 'text/html',
          //注意body 外层是单引号,此处不是模板插值,不能使用双引号
          body: '${FILE, path="myfile.html"}', //路径依然是相对workspace的路径
          replyTo: '$DEFAULT_REPLYTO'
          //末尾不能有多余的逗号
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

-> 添加附件

v2.15版本之后可以添加附件,文件路径名支持Ant 模式匹配,可全局设置文件大小限制(默认无限制)

emailext subject: '${DEFAULT_SUBJECT}',
  recipientProviders: [requestor()], 
  to: '$DEFAULT_RECIPIENTS, alex',
  mimeType: 'text/html',
  body: '${SCRIPT, template="email.template"}',
  replyTo: '$DEFAULT_REPLYTO',
  //附件添加log
  attachLog: true,
  compressLog: true,
  //其它附件,基础路径为当前工作空间
  attachmentsPattern: 'module/dist/**/*.zip,*.txt'
1
2
3
4
5
6
7
8
9
10
11

-> 参考文档

  • mailer (opens new window)
  • email-ext wiki (opens new window)
  • groovy-html.template (opens new window)
  • stackoverflow (opens new window)
编辑此页 (opens new window)
更新于: 2019-10-01
流水线任务
Jenkins 参数化构建

← 流水线任务 Jenkins 参数化构建→

Copyright © 2019-2022 | yxxy | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式