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"
相關文章
相關標籤/搜索