在CI/CD建设过程中,如果代码没有通过测试或构建,通常需要通过邮件的方式提示开发人员。因此,能在邮件中携带构建日志或测试报告,显得尤为重要。在配置过程中,也可以通过使用JenkinsFile的方式使配置脚本化,便于pipeline的维护和迁移。本文介绍通过JenkinsFile来发送带有附件的Email。
updateGitlabCommitStatus主要用于构建后信息反馈,根据将构建后的情况反馈给gitlab页面
success {
updateGitlabCommitStatus name: 'complete', state: 'success'
}
(1)如果是在Jenkins页面中,可以通过Editable Email Notification来配置附件文件、收件人、邮件内容等信息。
(2)探索脚本化配置方法
进入pipeline所对应的路径,并打开配置文件,发现名为emailext的插件
$DEFAULT_RECIPIENTS
$PROJECT_DEFAULT_SUBJECT
$PROJECT_DEFAULT_CONTENT
false
false
$PROJECT_DEFAULT_REPLYTO
project
default
$DEFAULT_SUBJECT
$DEFAULT_CONTENT
report.html
$DEFAULT_PRESEND_SCRIPT
$DEFAULT_POSTSEND_SCRIPT
true
false
$DEFAULT_REPLYTO
false
false
(3)查找源代码
搜索到emailext对应的Github地址:https://github.com/jenkinsci/email-ext-plugin
通过搜索关键字找到EmailExtStep.java文件,该文件的参数对应的就是Jenkins页面中所显示的配置,如attachLog,recipientProviders等。
public final String subject;
public final String body;
@CheckForNull
private String attachmentsPattern;
@CheckForNull
private String to;
@CheckForNull
private String replyTo;
@CheckForNull
private String from;
@CheckForNull
private String mimeType;
private boolean attachLog;
private boolean compressLog;
private List recipientProviders;
private String presendScript;
private String postsendScript;
private boolean saveOutput;
(4)在JenkinsFile中使用
failure {
emailext attachmentsPattern: 'test.html' //附件中携带测试报告
attachLog: true, // 附件中携带构建LOG
// 邮件内容
body: '构建失败日志请参考附件',
// 邮件接收人,culprits包含了近期提交人员和触发人员
recipientProviders: [culprits()], subject: 'Jenkins构建通知 - $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!', to: 'XXX; cc:XXX'
}
updat()eGitlabCommiStatus