Jenkins需要配置邮件通知,安装插件Email Extension,然后进入系统管理->系统设置->Extended E-email Notification。这里我使用的是QQ邮箱,填写SMTP服务器地址smtp.qq.com和端口465注意要开启SSL,密码为授权码。

配置插件

  1. stage('Email') {
  2. steps {
  3. script {
  4. def mailRecipients = 'XXX@xxxxx.xxx-domain'
  5. def jobName = currentBuild.fullDisplayName
  6. emailext body: '''${SCRIPT, template="groovy-html.template"}''',
  7. mimeType: 'text/html',
  8. subject: "[Jenkins] ${jobName}",
  9. to: "${mailRecipients}",
  10. replyTo: "${mailRecipients}",
  11. recipientProviders: [[$class: 'CulpritsRecipientProvider']]
  12. }
  13. }
  14. }

image.png

我们在共享库中封装一个toemail.groovy。新建文件src/org/devops/toemail.groovy。在这个文件中,我们写了一段HTML代码,主要展示Jenkins的构建信息。

packageorg.devops
//定义邮件内容
def Email(status,emailUser)
{
emailext body: “””<!DOCTYPE html>



imgsrc="http://192.168.1.200:8080/static/0eef74bf/images/headshot.png"

style=”font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif”>



构建信息



  • 项目名称:${JOB_NAME}

  • 构建编号:${BUILD_ID}

  • 构建状态: ${status}

  • 项目地址:${BUILD_URL}
  • 构建日志:
    ${BUILD_URL}console





“””,
subject: “Jenkins-${JOB_NAME}项目构建信息 “,to: emailUser
}

测试发送

!groovy
@Library(‘jenkinslibrary@master’) _

//func from shareibrary
def gitlab = new org.devops.gitlab()
def toemail = new org.devops.toemail()

//branch
branchName = branch - ‘refs/heads/‘
currentBuild.description = “Trigger by ${userName} ${branch}”gitlab.ChangeCommitStatus(projectId, commitSha, ‘running’)

//pipeline
pipeline
{
agent
{
node
{
label ‘build’ }
}

  1. stages {<br /> stage('CheckOut')<br />{ steps { script { println("${branchName}")<br />}<br /> }<br />}<br /> }

post {
always { script { println(‘always’)
}
}

success {
script { println(‘success’) gitlab.ChangeCommitStatus(projectId, commitSha, ‘success’)
toemail.Email(‘流水线成功’,userEmail) }
}

failure { script
{
println(‘failure’)
gitlab.ChangeCommitStatus(projectId,commitSha,’failed’) toemail.Email(‘流水线失败了!’,userEmail)
}
}
aborted {
script { println(‘aborted’) gitlab.ChangeCommitStatus(projectId,commitSha,’canceled’) toemail.Email(‘流水线被取消了!’,userEmail) }
}
}
}