Jenkins整合SonarQube时向代码提交者发送分析报告邮件

流程大致如下

  1. 获取Jenkins的控制台输出

       sonarqube结果会打印在jenkins的console中,所以前期把console结果全部以文本发邮件给代码提交者,后面再进行文本提取。

      这一步的原理是使用Jenkins Command Line的console命令获取控制台输出结果。需要使用jenkins-cli.jar文件。在Jenkins的节点上不能确保这个文件的存在,所以约定将这个文件放在/opt目录下。

        在Sonar分析完成之后,执行以下命令

    JENKINS_CLI=/opt/jenkins-cli.jar
    USERNAME=jenkins
    PASSWORD=admin
    echo `java -jar $JENKINS_CLI -s $JENKINS_URL console ${JOB_NAME} $BUILD_ID` --username $USERNAME --password $PASSWORD

    在这里可能出现  Failed to authenticate with your SSH keys. Proceeding as anonymous。被这个问题坑了很久,解决方法是将Jenkins节点的ssh key添加至Jenkins的配置中。配置地址为 http://[yourjenkinsserver]/user/[username]/configure

    生成SSH公钥:

    ssh-keygen -t rsa -C "youremail@example.com"

    然后在home目录下看有没有.ssh目录,cat里面的id_rsa.pub文件就能得到公钥了。

  2. 发送邮件

    git log -1 --pretty=format:"%ce"  #获取当前分支最新代码提交者的邮箱

    发送邮件这里使用swaks工具,没有安装的使用apt-get或者yum等命令安装。

    具体用法 man swaks 里面写得很详细。列几个常用的

    swaks --to $CE --from ldeng@example.com --server mail.example.com --tlsc -au sender@example.com -ap [yourpassword] --d "Date: %DATE%\nTo: %TO_ADDRESS%\nFrom: %FROM_ADDRESS%\nSubject: $SUBJECT\nX-Mailer: swaks v$p_version jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n" --body "$BODY" --header "$HEADER"

    一般,配置SMTP服务器会有以下几个参数:host:服务主机,ip服务端口:25是默认端口,465是TLS安全链接的默认端口,用户名,密码。

    以上几个参数

    --to    收信人的邮箱

    --from    发信人的邮箱,用于显示

    --server    SMTP邮箱地址

    --tlsc    使用TLS连接,默认465端口,可以通过--port参数指定其它端口

    --au    用户名

    --ap    密码

    --body    发送邮件的内容

    --header    邮件头,依然在正文中

    -d    -d参数比较复杂,默认是"Date: %DATE%\nTo: %TO_ADDRESS%\nFrom: %FROM_ADDRESS%\nSubject: test %DATE%\nX-Mailer: swaks v$p_version jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n"

    这个值是几个键值对以\n的形式连接起来的,里面的参数都是字面意思,主要要用到的是Subject(主题)这个参数,要是不指定这个发送邮件的主题就是“test日期”。

  3. 配置Jenkins发送邮件

点击“增加构建步骤”=>Excute Shell,即可。完整的实例如下:

CE=$(git log -1 --pretty=format:"%ce") #获取收件人的邮箱地址
CN=$(git log -1 --pretty=format:"%cn") #收件人的姓名


SUBJECT="SonarQube Analysis Result Of Your Branch '$BRANCH_NAME' on Project Test"
JENKINS_CLI=/opt/jenkins-cli.jar
USERNAME=jenkins
PASSWORD=admin
BODY=`java -jar $JENKINS_CLI -s $JENKINS_URL console ${JOB_NAME} $BUILD_ID --username $USERNAME --password $PASSWORD`
HEADER="hello,dear $CN"
swaks --to $CE --from ldeng@example.com --server mail.example.com --tlsc -au sender@example.com -ap [yourpassword] --d "Date: %DATE%\nTo: %TO_ADDRESS%\nFrom: %FROM_ADDRESS%\nSubject: $SUBJECT\nX-Mailer: swaks v$p_version jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n" --body "$BODY" --header "$HEADER"


转载于:https://my.oschina.net/u/2254503/blog/639034

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值