【问题标题】:How to send email with attachment in jenkinsfile (Groovy Script)?如何在jenkinsfile(Groovy Script)中发送带有附件的电子邮件?
【发布时间】:2019-01-09 11:43:22
【问题描述】:

我想在詹金斯的后期构建操作后发送电子邮件。因此,我编写了 jenkinsfile 如下。但我需要一些 groovy 脚本 1. zip文件的附件 2. 在附加文件之前,我需要将文件夹转换为zip格式。

注意:请不要建议电子邮件插件程序和配置。 我更喜欢Jenkins文件方法配置

 pipeline {
    agent any
    stages {
        stage('Testing') {
            steps {
                sh 'chmod +x mvnw'
                sh './mvnw clean verify serenity:aggregate'
            }
        }
    }
    post {
        failure {
            script {
                mail (to: 'email@gmail.com',
                        subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER}) failed",
                        body: "Please visit ${env.BUILD_URL} for further information"
                );
                }
            }
         success {
             script {
                mail (to: 'email@gmail.com',
                        subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER}) success.",
                        body: "Please visit ${env.BUILD_URL} for further information.",


                  );
                }
          }      
    }
}

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline post-build-event


    【解决方案1】:

    您需要使用 jekins zip 实用程序为文件夹创建 zip 文件,然后使用 emailext 插件发送带有附件的电子邮件,请参见以下示例:

     pipeline {
        agent any
        stages {
            stage('Testing') {
                steps{
                   bat "del test.zip"
                   zip zipFile: 'test.zip', archive: false, dir: 'directory pattern as per your structure'
                }
            }
        }
        post {
            failure {
                emailext attachmentsPattern: 'test.zip', body: '''${SCRIPT, template="groovy-html.template"}''', 
                        subject: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - Failed", 
                        mimeType: 'text/html',to: "email id"
                }
             success {
                   emailext attachmentsPattern: 'test.zip', body: '''${SCRIPT, template="groovy-html.template"}''', 
                        subject: "${env.JOB_NAME} - Build # ${env.BUILD_NUMBER} - Successful", 
                        mimeType: 'text/html',to: "email id"
              }      
        }
    }
    

    【讨论】:

    • 感谢阿米特的快速回复。假设我的测试结果存在于目标文件夹中,并且我想压缩 target.zip。那么上面的代码有什么变化。
    • 另外请解释一下上面脚本中的dir
    • dir 是工作区中您要压缩的文件夹的目录路径模式,例如dir : 'target'
    • 非常感谢。它现在工作正常。我还有一个小问题,如何在 Jenkins 文件中创建变量以及如何跨 Jenkins 文件使用。
    猜你喜欢
    • 2015-09-09
    • 2012-06-20
    • 2022-09-27
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多