JenkinsFile实现发送Email

        在CI/CD建设过程中,如果代码没有通过测试或构建,通常需要通过邮件的方式提示开发人员。因此,能在邮件中携带构建日志或测试报告,显得尤为重要。在配置过程中,也可以通过使用JenkinsFile的方式使配置脚本化,便于pipeline的维护和迁移。本文介绍通过JenkinsFile来发送带有附件的Email。

JenkinsFile实现发送Email_第1张图片

1.updateGitlabCommitStatus

updateGitlabCommitStatus主要用于构建后信息反馈,根据将构建后的情况反馈给gitlab页面

success {
            updateGitlabCommitStatus name: 'complete', state: 'success'
         }

2.邮件内容

(1)如果是在Jenkins页面中,可以通过Editable Email Notification来配置附件文件、收件人、邮件内容等信息。

JenkinsFile实现发送Email_第2张图片

JenkinsFile实现发送Email_第3张图片

(2)探索脚本化配置方法

进入pipeline所对应的路径,并打开配置文件,发现名为emailext的插件

JenkinsFile实现发送Email_第4张图片

 
      $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 

你可能感兴趣的:(JenkinsFile实现发送Email)