一,簡單設置
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