SonarQube+jenkins(三):SonarQube+jenkins生成pdf报告脚本发送至邮箱+邮箱使用

    技术2023-12-30  80

    一、安装mailx

    # Centos,安装 mailx $ yum install -y mailx # 查看帮助 $ mail --h

    二、解决SSL证书

    不安装会报错“Error in certificate: Peer’s certificate issuer is not recognized

    # 生成证书 #qq的话把ali.crt替换成qq.crt $ mkdir ~/.certs $ echo -n | openssl s_client -connect smtp.mxhichina.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/ali.crt $ certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/ali.crt $ certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/ali.crt # 查看证书权限 $ cd ~/.certs && ll 总用量 80 -rw-r--r-- 1 root root 2277 4月 19 10:47 ali.crt -rw------- 1 root root 65536 4月 19 10:56 cert8.db -rw------- 1 root root 16384 4月 19 10:56 key3.db -rw------- 1 root root 16384 4月 19 10:48 secmod.db # 验证,显示如下信息表示 SSL 证书配置生成及安装完成 $ certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ali.crt Notice: Trust flag u is set automatically if the private key is present.

    生成完成之后,需要在 /etc/mail.rc 配置文件中,修改 nss-config-dir 为上面命令生成的目录 ~/.certs。

    三、配置邮箱信息

    # 配置邮箱参数,文件末尾添加以下内容 $ vi /etc/mail.rc # ssl 校验设置,配置 SSL 证书就可以注释掉 # 邮箱账户,对方收到邮件时显示的发件人 set from=*****@qq.com //这是QQ邮箱的stmp地址,阿里云邮箱为:smtps://smtp.mxhichina.com:465 set smtp=smtp.qq.com #邮箱账户 set smtp-auth-user=1125***** # 邮箱密码,部分邮箱(163、qq)为授权密码而非邮箱密码 set smtp-auth-password=xjvfwiwlie***** # smtp 认证方式。默认是 login set smtp-auth=login #如果用阿里邮箱,这个要注释掉,否则会报错 SSL/TLS handshake failed: SSL received a malformed Alert record. set smtp-use-starttls set ssl-verify=ignore # 设置 nss 配置目录,上一步骤 SSL 证书目录 set nss-config-dir=/root/.certs

    QQ邮箱生成授权密码教程:教程

    四、使用

    # 发送邮件 $ echo "邮件内容" | mail -s "邮件标题" daodaotest@163.com # 发送邮件,添加抄送人及附件 echo "邮件内容,请查收" | mail -v -c "**@163.com,**@qq.com" -s "邮件标题" -a **.zip **@163.com

    -s <邮件主题>:指定邮件的主题; -c <地址>:指定抄送人,多个收件人之间用逗号分隔; -b <地址>:指定密送人,多个收件人之间用逗号分隔; -a:参数后面跟的文件,将作为附件发送出去; -v:执行时,显示详细的信息。

    五、Sonarqube+jenkins生成pdf报告脚本发送至邮箱

    1.在jenkins的构建中添加脚本

    2.脚本信息

    export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" //项目名称 sonar_url=tian //收件方地址,还可以添加 send1=**@qq.com send2=**@qq.com rm -f ${JOB_NAME}.pdf wget http://sonarqube的ip地址:9000/api/pdfreport/get?componentKey=${sonar_url} -O ${JOB_NAME}.pdf #邮件需要包含的内容写入临时文件 echo "${JOB_NAME}-第${BUILD_NUMBER}次代码扫描报告" > mail.txt echo "项目名称 : ${JOB_NAME}" >> mail.txt echo "构建编号 : 第${BUILD_NUMBER}次构建" >> mail.txt echo "代码路径 : ${SVN_URL}" >> mail.txt echo "构建日志 : ${BUILD_URL}consoleText" >> mail.txt echo "构建Url : ${JOB_URL}" >> mail.txt echo "工作目录 : ${WORKSPACE}" >> mail.txt cat mail.txt ${WORKSPACE}/*.pdf | mail -s "title" ${send1},${send2}

    然后构建即可,亲测能发送 如果以上能用,但是发送的附件名字为tcmime.*.bin,我测试了一上午的文件,都是bin文件,并且打不开 将脚本最后一句话改一下:

    cat mail.txt | mail -s "sonarQube report"(标题) -a ${WORKSPACE}/*.pdf ${send1}

    参考博客:https://cloud.tencent.com/developer/article/1624890

    Processed: 0.024, SQL: 9