jenkins 邮箱配置---腾讯企业邮箱

一,简单设置

1.登陆jenkins--》 系统管理 ---》 系统设置

2.邮箱就是发送者的邮箱,密码是登陆邮箱的密码

3.设置完以后,可以点击‘test configuration’,显示如下,表示成功,然后点击'保存'来保存配置。

 4.jenkins任务配置通知人员

多个接收人员可以用空格隔开,但是以上设置只能在构建不稳定的时候才能发邮件,使用以下插件可以设置何时发送。

二、扩展功能

1.安装插件:emailext-template.hpi

插件下载地址:http://updates.jenkins-ci.org/download/plugins/

2.系统管理--》 系统设置

原来的邮箱设置还是先留着,如下:

说明:

default content 内容如下:

(本邮件是jenkins构建自动触发,请勿回复!)

项目名称: $PROJECT_NAME

Jenkins地址: $JENKINS_URL

构建编号: $BUILD_NUMBER

构建状态: $BUILD_STATUS

触发原因: ${CAUSE}

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

变更记录: ${BUILD_URL}changes

构建地址:$BUILD_URL

构建结果FTP路径:请查看附件result_ftp_path.txt

default triggers: 指定什么时候触发邮件发送,可以是成功时发送,可以是失败时发送,也可以是只要构建就发送,也可以是其它。

 3.任务配置:

多个接收者之间可以使用空格或者逗号隔开。

说明:

Disable Extended Email Publisher :这是一个很人性化的操作,如果在你调试的时候不想发邮件,那么直接勾选该选项就可以了。

以上设置的效果如下:

此外,如果想在邮件中体现其它信息,但是没有对应的环境变量,比如,我们构建结束后,一般会把结果文件存在一定地方或者ftp服务器上,此时,就需要知道这个路基,我们可以使用邮箱设置附件的方式来实现,比如如下:

备注,这是相对于workspace的job目录下的根目录,其它路径可以使用相对路径设置。

此时,邮件效果如下:

这样就可以清楚的看到需要的路径。

另外,上面我们说到,使用这个设置,可以邮箱的打开关闭邮箱,但是,并不行手动去改动,希望实现这样的场景:如果是jenkins自动的管理员admin构建或者是jenkins定时自动构建才需要发送邮件给小组成员,其它时候,小组成员使用自己的账号进行调试的时候,不需要发动邮件给小组成员。这样的场景如果手动去改,就太麻烦了,可以用脚本实现,判断如果是admin和自动构建账号时,如果发送邮件的开关关闭了,就打开,如果不是管理员账号和自动构建时,如果发送邮件的开关已经打开了,就关掉。

函数调用方式:

send_email $JOB_NAME $trigger_user

函数:

function send_email()
{
  job_path="/root/.jenkins/jobs"
  email_jenkins="http://192.168.8.2:8080/jenkins/job"
  config_file=$job_path/$1/config.xml
  echo email trigger user $2
  echo config_file=$config_file
  grep -rn "ExtendedEmailPublisher>" $config_file
  email_old_line=`grep -rn "ExtendedEmailPublisher>" $config_file |awk -F ":" '{print $1 }'`
  echo email_old_line=$email_old_line
  email_fit_line=`expr $email_old_line - 1`
  email_fit_con=`sed -n "$email_fit_line"p $config_file`
  echo line $email_fit_line content is $email_fit_con
  #如果触发者是admin或者是自动触发的,如果邮件发送关掉了,那么打开开关,发送邮件
  #如果邮件发送者不是admin也不是自动触发,如果邮件功能打开了,那个关闭开关,不发送邮件
  if [ "$2" == "admin" -o "$2" == "SCMTrigger" ] ;then
    echo trigger is admin ,need to send email
    if [ "${email_fit_con#*<}" == "disabled>true</disabled>" ] ;then
      echo but default email send function is disabled, so need to open it
      sed -i ""$email_fit_line"c <disabled>false</disabled>" $config_file
      curl -u admin:112233 -X POST $email_jenkins/$1/reload
    else
      echo default email send function is opened ,great !
    fi
  else
    echo trigger is not admin, donot need to send email
    if [ "${email_fit_con#*<}" == "disabled>false</disabled>" ];then
      echo but default email send function is opened ,so need to close it
      sed -i ""$email_fit_line"c <disabled>true</disabled>" $config_file
      curl -u admin:112233 -X POST $email_jenkins/$1/reload
    else
      echo default email send function is closed ,great !
    fi
  fi
  email_fit_con=`sed -n "$email_fit_line"p $config_file`
  echo line $email_fit_line new content is $email_fit_con  

  }

参考:https://www.cnblogs.com/zanjiahaoge666/p/6377488.html

原文地址:https://www.cnblogs.com/zndxall/p/8650061.html