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

流程大体以下
java

  1. 获取Jenkins的控制台输出git

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

      这一步的原理是使用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]/configuressh

    生成SSH公钥:工具

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

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

  2. 发送邮件orm

    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"
相关文章
相关标签/搜索