目錄
1、前言
1?.1、插件簡(jiǎn)介
1.2、插件安裝
2、創(chuàng)建Maven項(xiàng)目
2.1、新建一個(gè)全新的項(xiàng)目
2.2、拷貝已有項(xiàng)目
3、項(xiàng)目配置
3.1 、General
3.2、源碼管理
3.3、構(gòu)建觸發(fā)器
3.4、構(gòu)建環(huán)境
3.5、Pre Steps
3.6、Build
1)Root POM
2)Goals and options
3)【高級(jí)】
3.7、Pre Steps
3.8、構(gòu)建環(huán)境
3.9、Post Steps???
4、配置郵件通知服務(wù)
4.1、安裝Email Extension Plugin插件
4.2、獲取郵箱授權(quán)碼
4.3、配置Jenkins郵箱通知
4.4、配置郵件通知?
4.5、Extended E-mail Notification配置
1)、配置SMTP服務(wù)器地址及其端口
2)、配置郵件登錄憑證
3)、配置郵件通知標(biāo)題、內(nèi)容
4)、Extended E-mail Notificati其他配置
4.5、項(xiàng)目配置
4.6、郵件效果
本文主要介紹Jenkins自動(dòng)打包、推送,發(fā)布,郵件通知,Jenkins具體配置參考之前文章
(一)Jenkins部署、基礎(chǔ)配置
(二)Jenkins全局工具配置
1、前言
1?.1、插件簡(jiǎn)介
有很多插件都是選擇的默認(rèn)的安裝的,Git plugin 和 Maven Integration plugin、publish over SSH、Deploy to container、Subversion
Git | 3.11.0 | 使用Git訪問(wèn)遠(yuǎn)程倉(cāng)庫(kù) |
Git Push Plugin | 34 | 通過(guò)Git 插件執(zhí)行 git push 作為構(gòu)建后的步驟 |
Gitee Plugin | 1.2.7 | 允許 Gitee 在提交代碼或打開/更新拉取請(qǐng)求時(shí)觸發(fā) Jenkins 中的構(gòu)建。它還可以將構(gòu)建狀態(tài)發(fā)送回 Gitee。 |
Maven Integration plugin? | 3.20 | 這提供Jenkins和Maven之間的深度集成。它增加了對(duì)基于SNAPSHOT的項(xiàng)目之間自動(dòng)觸發(fā)的支持,以及對(duì)Junit等各種Jenkins發(fā)布程序的自動(dòng)配置。 |
publish-over-ssh | 1.20.1 | 用于將編譯結(jié)果發(fā)布到遠(yuǎn)程服務(wù)器 |
Deploy to container | 成功構(gòu)建后將戰(zhàn)爭(zhēng)到容器Tomcat等。 | |
Subversion | svn插件 | |
Xcode integration | 提供構(gòu)建器來(lái)構(gòu)建xcode項(xiàng)目,調(diào)用agvtool和包。ipa文 |
Jenkins本身無(wú)法實(shí)現(xiàn)遠(yuǎn)程部署到Tomcat的功能,需要安裝Deploy to container Plugin插件實(shí)現(xiàn)?
1.2、插件安裝
1). 安裝SSH插件
如果沒(méi)有安裝SSH插件的話,是不支持配置遠(yuǎn)程SSH的,這里可以去插件里面看下,是否安裝了。
2). 新增全局配置
環(huán)境配置, 管理Jenkins-->Configure System 找到 Publish over SSH,點(diǎn)擊新增,新增SSH Server,輸入Hostname,Username,Password,點(diǎn)擊Test Configuration,提示:Success ?代表SSH連通遠(yuǎn)端服務(wù)器,保存即可。
注:如果沒(méi)有勾選 Use password authentication, or use a different key這個(gè)選項(xiàng),點(diǎn)擊測(cè)試連接,會(huì)報(bào)錯(cuò):jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection
2、創(chuàng)建Maven項(xiàng)目
2.1、新建一個(gè)全新的項(xiàng)目
1)點(diǎn)擊【新建Item】
2)輸入任務(wù)名稱
3)選擇【構(gòu)建一個(gè)maven項(xiàng)目】
4)點(diǎn)擊【確定】,進(jìn)入配置頁(yè)面
2.2、拷貝已有項(xiàng)目
1)點(diǎn)擊【新建Item】
2)輸入任務(wù)名稱
3)復(fù)制輸入需要復(fù)制項(xiàng)目的名稱,可下拉快捷選擇
4)點(diǎn)擊【確定】,進(jìn)入配置頁(yè)面,此時(shí)配置頁(yè)面帶有復(fù)制的項(xiàng)目配置,根據(jù)本項(xiàng)目需要修改即可
3、項(xiàng)目配置
????????如果是新建任務(wù),則直接進(jìn)入配置頁(yè)面修改配置;如果是已有任務(wù),則右上角查找項(xiàng)目名稱,回車后進(jìn)入此項(xiàng)目空間,左側(cè)點(diǎn)擊【配置】按鈕,進(jìn)入配置頁(yè)面;或者是列表直接找到項(xiàng)目名稱,點(diǎn)擊項(xiàng)目名稱進(jìn)入此項(xiàng)目;
3.1 、General
(1)、描述
純文本,備注,項(xiàng)目簡(jiǎn)介、用途等
(2)、Discard old builds(丟棄舊的構(gòu)建)
配置build保留的次數(shù)與天數(shù);發(fā)布包保留次數(shù)、天數(shù)
Jenkins job執(zhí)行build后,會(huì)在服務(wù)器上留下build記錄及發(fā)布包,這些內(nèi)容會(huì)占用磁盤空間;默認(rèn)配置是不勾選Discard old builds的,此時(shí)默認(rèn)值為365,顯然這個(gè)值過(guò)大了;
Jenkins job在每次build結(jié)束后(無(wú)論成功還是失?。紩?huì)自動(dòng)執(zhí)行Discard old builds,釋放磁盤空間;
因此根據(jù)磁盤空間來(lái)設(shè)置選項(xiàng),如果磁盤空間充足,則均為15,如果磁盤空間不足,則均設(shè)置為3;當(dāng)然也可根據(jù)實(shí)際需求來(lái)設(shè)置;
如圖配置也可:
?其中“發(fā)布包保留天數(shù)”和“發(fā)布包最大保留”,這兩個(gè)選項(xiàng)是通過(guò) Discard old builds右下角【高級(jí)】按鈕控制顯示的;
(3)、Gitee 鏈接
默認(rèn)值為:https://gitee.com
3.2、源碼管理
1、選擇代碼管理,比如git
2、輸入地址
3、添加憑據(jù),建議以ssh登錄
4、指定分支,默認(rèn)*/master
配置源碼倉(cāng)庫(kù)地址及賬號(hào),下圖為Gitee示例
Repository URL:svn、Gitee代碼地址;
Credentials(證書):已配置直接點(diǎn)擊下拉框選擇;第一次增加時(shí)需要點(diǎn)擊【添加】按鈕進(jìn)行添加
3.3、構(gòu)建觸發(fā)器
????????當(dāng)某個(gè)事件被觸發(fā)時(shí),自動(dòng)重新構(gòu)建項(xiàng)目;非必須,一般都通過(guò)build now手動(dòng)執(zhí)行構(gòu)建;當(dāng)然了解了觸發(fā)器,可以根據(jù)觸發(fā)器形式打造理想中的構(gòu)建形式。
1)Build whenever a SNAPSHOT dependency is built
當(dāng)job依賴的快照版本被build時(shí),執(zhí)行本job;即當(dāng)代碼有更新時(shí)就構(gòu)建項(xiàng)目
2)Build after other projects are built
作用:配置關(guān)注的項(xiàng)目,當(dāng)關(guān)注的項(xiàng)目構(gòu)建后,構(gòu)建本項(xiàng)目
3)Build periodically:隔一段時(shí)間定時(shí)build一次,不管版本庫(kù)代碼是否發(fā)生變化
日程表規(guī)則:
MINUTE Minutes whinin the hour(0-59)
HOUR? The hour of the day(0-23)
DOM The day of the month(1-31)
MONTH The month(1-12)
DOW? The day of the week(0-7) where 0 and 7 are Sunday.
第一個(gè)是代表分鐘 H 表示隨機(jī)?
第二個(gè)是代表小時(shí) 9-15/4 9點(diǎn)到下午三點(diǎn)期間的每隔4個(gè)小時(shí)?
第三個(gè)是代表天 * 任意一天?
第四個(gè)是代表月份 1-11 表示1到11月份?
第五個(gè)是代表星期 1-5 表示工作日沒(méi)有用到 H 隨機(jī)的話,不要加括號(hào)?
H(9-18) 9點(diǎn)到18點(diǎn) 中隨機(jī)的一個(gè)點(diǎn)?
eg:?
* * * * * 表示任何一個(gè)時(shí)間段,同一個(gè)時(shí)間都可能會(huì)觸發(fā)執(zhí)行。不建議使用?
H/30 * * * * 表示每天每隔 30分鐘構(gòu)建一次?
H 4-19/3 * * * 表示,一天的凌晨點(diǎn)到下午7點(diǎn),每隔3個(gè)小時(shí)構(gòu)建一次?
* * 3-5 * * 表示,每個(gè)月的3號(hào),4號(hào),5號(hào) 都會(huì)被構(gòu)建,具體時(shí)間未知?
* * * * 1-5 表示,工作日時(shí)會(huì)構(gòu)建,具體時(shí)間未知?
H/30 8-19/3 1-28 1-11 1-5 表示 在1月到11月中的1號(hào)-28號(hào),每個(gè)工作日,早晨的8點(diǎn)到下午7點(diǎn)每隔3.5個(gè)小時(shí)會(huì)觸發(fā)構(gòu)建(個(gè)人懷疑此條規(guī)則說(shuō)錯(cuò)了,H/30意思就是每30分鐘一次)H */12 * * * 表示每12小時(shí)會(huì)觸發(fā)構(gòu)建
H/30 11-13/1 21-28 4-5 1-5? 經(jīng)驗(yàn)證,為11:20到13:50,每隔30分鐘構(gòu)建一次(11:20、11:50、12:20、12:50、13:20、13:50),而且是到13點(diǎn)50才結(jié)束
個(gè)人配置如圖 ,每天中午12點(diǎn)定時(shí)構(gòu)建一次:
4)Poll SCM:輪詢構(gòu)建
指定一段時(shí)間間隔去掃描代碼倉(cāng)庫(kù)的代碼是否有變更,如果有,則出發(fā)項(xiàng)目構(gòu)建;
日程表的規(guī)則應(yīng)該是遵循上述規(guī)則,未驗(yàn)證;
3.4、構(gòu)建環(huán)境
非必須,但建議勾選Delete workspace before build starts。勾選此選項(xiàng)后,每次打包前jenkins會(huì)先刪除工作區(qū)代碼再打包;如果不勾選此選項(xiàng),開發(fā)人員刪除某些代碼文件,但是此文件仍然在工作區(qū)保留,打包時(shí)仍然會(huì)帶著打包,有可能會(huì)通過(guò)打包引起的bug;
?每次重新構(gòu)建時(shí)都會(huì)從配置的源碼地址取到最新的項(xiàng)目代碼放到工作區(qū)中,但是Jenkins只會(huì)將代碼放到工作區(qū)中,而不執(zhí)行刪除操作,同樣的文件會(huì)覆蓋掉,但如果新的代碼中有些文件已經(jīng)刪除了,則在工作區(qū)中還會(huì)保留。所此需要構(gòu)造這個(gè)選項(xiàng)。
3.5、Pre Steps
構(gòu)建前操作,一般不需要配置
3.6、Build
1)Root POM
對(duì)應(yīng)的pom.xml路徑,此路徑是相對(duì)于workspace的相對(duì)路徑;注意:是相對(duì)位置,如果該文件不存在,會(huì)有紅色字提示。?
2)Goals and options
打包命令,不要加mvn,默認(rèn)前綴會(huì)加;一般為空即可,如果有需要再添加內(nèi)容;可添加maven命令。
clean package -Dmaven.test.skip=true(清除以前的包,重新打包,并跳過(guò)測(cè)試)?
3)【高級(jí)】
點(diǎn)擊高級(jí)按鈕,配置maven,若在安裝Jenkins后已對(duì)系統(tǒng)配置maven,則無(wú)需每次新建項(xiàng)目再次配置maven
3.7、Pre Steps
構(gòu)建后操作:如果需要實(shí)現(xiàn)自動(dòng)構(gòu)建自動(dòng)發(fā)布,則需要配置,或在Post Steps選項(xiàng)下配置
Execute Windows Batch command:執(zhí)行Windows批處理命令
Execute shell:執(zhí)行shell腳本
Invoke Ant:調(diào)用Ant腳本
Invoke Gradle script:調(diào)用Gradle腳本
Invoke top-level Maven targets:調(diào)用Maven項(xiàng)目等
Send files or execute commands over SSH:通過(guò)SSH發(fā)送文件或執(zhí)行命令
Set build status to 'pending'on GitHub commit:構(gòu)建狀態(tài)設(shè)置為“等待我們GitHub提交
3.8、構(gòu)建環(huán)境
Send files or execute commands over SSH after the build runs:這個(gè)表示在構(gòu)建之后,執(zhí)行向指定遠(yuǎn)程服務(wù)器發(fā)送文件或者在遠(yuǎn)程服務(wù)器執(zhí)行腳本命令
add timestamps to the Console Output 表示構(gòu)建控制臺(tái)的日志加上時(shí)間戳?
3.9、Post Steps???
配置Send files or execute commands over SSH,實(shí)現(xiàn)遠(yuǎn)程將自動(dòng)構(gòu)建的jar包上傳至遠(yuǎn)程服務(wù)器
1)run only if build succeeds
只有在構(gòu)建成功后再運(yùn)行下面步驟,
2)send files or execute commands over ssh
表示在構(gòu)建之后,執(zhí)行向指定遠(yuǎn)程服務(wù)器發(fā)送文件或者在遠(yuǎn)程服務(wù)器執(zhí)行腳本命令,點(diǎn)擊按鈕Add post-build step選擇添加
3)send files or execute commands over ssh?配置
點(diǎn)擊高級(jí)對(duì) 腳本相關(guān)信息配置
SSH ?Server Name:要拷貝的遠(yuǎn)程服務(wù)器,下拉選擇系統(tǒng)配置選項(xiàng)配置好的服務(wù)器
Transfer Set source files:相對(duì)于工作空間的相對(duì)目錄,例如:包在tatget/*.jar,
可以填寫多個(gè),默認(rèn)用逗號(hào)分隔,輸入**/*表示所有目錄下的所有文件
remove prefix:去除前綴,傳到遠(yuǎn)程服務(wù)器上去掉此路徑,比如:為空的話,傳到服務(wù)器的地址為 上面全局配的 目錄起始位置,例如此處:target/? ?
remote directory: 遠(yuǎn)程服務(wù)器包存放位置,相對(duì)于系統(tǒng)配置中配置SSH服務(wù)目錄下路徑,例如SSH服務(wù)器配置路徑為: /home,這里配置為test/,文件上傳后目錄為:/home/testexec command: 在文件傳輸完成后,在遠(yuǎn)程服務(wù)器執(zhí)行的腳本命令(拷貝文件后,需要在服務(wù)器上要執(zhí)行的腳本/命令)需要在部署服務(wù)器對(duì)應(yīng)目錄下新建
shell
腳本exec timeout:腳本執(zhí)行超時(shí)時(shí)間,盡量大一些,不然腳本沒(méi)執(zhí)行完任務(wù)就結(jié)束了
exec in pty:執(zhí)行腳本后超時(shí)會(huì)自動(dòng)退出
示例:
Source files選項(xiàng)是相對(duì)于project workspace的,輸入
**/*
表示所有目錄下的所有文件
Remote directory選項(xiàng)是配置的遠(yuǎn)程服務(wù)器相對(duì)路徑(或者服務(wù)器的絕對(duì)路徑?)
Exec command選項(xiàng)是在文件傳輸完成后,在遠(yuǎn)程服務(wù)器執(zhí)行的腳本命令。Name: 遠(yuǎn)程服務(wù)器IP
Source files:target/*.jar
Remove prefix: target/
Remote directory: /dyt
?exec command文件傳輸后執(zhí)行命令,啟動(dòng)服務(wù)
source /etc/profile
project=sendEmail-0.0.1-SNAPSHOT.jar
echo "文件目錄"
dir=/home/dyt/
pid=`ps -ef | grep $dir$project | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill - $pid
fi
echo "運(yùn)行構(gòu)建的jar包"
nohup java -jar $dir$project >/dev/null 2>&1 &
控制臺(tái)輸出查看結(jié)果:
Started by user administrator
Running as SYSTEM
Building in workspace C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail
The recommended git tool is: NONE
using credential 0cdd1aa5-60b1-4f47-9bf8-dab98e3619dc
> git.exe rev-parse --resolve-git-dir C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\.git # timeout=10
Fetching changes from the remote Git repository
> git.exe config remote.origin.url https://toscode.gitee.com/dyt314569024/test.git # timeout=10
Fetching upstream changes from https://toscode.gitee.com/dyt314569024/test.git
> git.exe --version # timeout=10
> git --version # 'git version 2.39.0.windows.2'
using GIT_ASKPASS to set credentials
> git.exe fetch --tags --force --progress -- https://toscode.gitee.com/dyt314569024/test.git +refs/heads/*:refs/remotes/origin/* # timeout=10
> git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
Checking out Revision b71f4fa4b13fa2cc65363ff4d0bea9e1fb31c4e0 (refs/remotes/origin/master)
> git.exe config core.sparsecheckout # timeout=10
> git.exe checkout -f b71f4fa4b13fa2cc65363ff4d0bea9e1fb31c4e0 # timeout=10
Commit message: "11"
> git.exe rev-list --no-walk b71f4fa4b13fa2cc65363ff4d0bea9e1fb31c4e0 # timeout=10
Parsing POMs
Modules changed, recalculating dependency graph
Established TCP socket on 11918
[sendEmail] $ java -cp C:\ProgramData\Jenkins\.jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-agent-1.14.jar;F:\apache-maven-3.6.1\boot\plexus-classworlds-2.6.0.jar;F:\apache-maven-3.6.1/conf/logging jenkins.maven3.agent.Maven35Main F:\apache-maven-3.6.1 C:\ProgramData\Jenkins\war\WEB-INF\lib\remoting-3077.vd69cf116da_6f.jar C:\ProgramData\Jenkins\.jenkins\plugins\maven-plugin\WEB-INF\lib\maven35-interceptor-1.14.jar C:\ProgramData\Jenkins\.jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.14.jar 11918
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\pom.xml -s F:\apache-maven-3.6.1\conf\settings.xml -gs F:\apache-maven-3.6.1\conf\settings.xml clean package -Dmaven.test.skip=true(清除以前的包,重新打包,并跳過(guò)測(cè)試)
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.ykx.mail:sendEmail >-----------------------
[INFO] Building sendEmail 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ sendEmail ---
[INFO] Deleting C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\target
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ sendEmail ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 5 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ sendEmail ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 25 source files to C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ sendEmail ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ sendEmail ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ sendEmail ---
[INFO] No tests to run.
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ sendEmail ---
[INFO] Building jar: C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\target\sendEmail-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.2.6.RELEASE:repackage (repackage) @ sendEmail ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.466 s
[INFO] Finished at: 2023-01-19T23:04:56+08:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\pom.xml to com.ykx.mail/sendEmail/0.0.1-SNAPSHOT/sendEmail-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving C:\ProgramData\Jenkins\.jenkins\workspace\sendEmail\target\sendEmail-0.0.1-SNAPSHOT.jar to com.ykx.mail/sendEmail/0.0.1-SNAPSHOT/sendEmail-0.0.1-SNAPSHOT.jar
SSH: Connecting from host [DYT]
SSH: Connecting with configuration [dytCS] ...
SSH: Creating session: username [root], hostname [192.168.6.77], port [22]
SSH: Connecting session ...
channel stopped
SSH: Connected
SSH: Opening SFTP channel ...
SSH: SFTP channel open
SSH: Connecting SFTP channel ...
SSH: Connected
SSH: cd [/home]
SSH: OK
SSH: cd [/home]
SSH: OK
SSH: cd [dyt/]
SSH: OK
SSH: put [sendEmail-0.0.1-SNAPSHOT.jar]
SSH: OK
SSH: Opening exec channel ...
SSH: EXEC: channel open
SSH: EXEC: STDOUT/STDERR from command [source /etc/profile
project=sendEmail-0.0.1-SNAPSHOT.jar
echo "文件目錄"
dir=/home/dyt/
pid=`ps -ef | grep $dir$project | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill - $pid
fi
echo "運(yùn)行構(gòu)建的jar包"
nohup java -jar $dir$project >/dev/null 2>&1 &] ...
SSH: EXEC: connected
鏂囦歡鐩綍
bash: 絎? 8 琛岋細(xì)kill: 錛氭棤鏁堢殑淇″彿澹版槑
榪愯鏋勫緩鐨刯ar鍖?
SSH: EXEC: completed after 213 ms
SSH: Disconnecting configuration [dytCS] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS
??備注:高級(jí)選項(xiàng)勾選:Verbose output in console,代表可以在控制臺(tái)看到執(zhí)行結(jié)果,不勾選雖然執(zhí)行成功了那么看不到。
windows的服務(wù)器執(zhí)行文件,python文件或者其他,需要使用execute windows batch commend? 。liunx 下使用execute shell
4、配置郵件通知服務(wù)
4.1、安裝Email Extension Plugin插件
安裝路徑:Manage Jenkins>Manage Plugins
4.2、獲取郵箱授權(quán)碼
測(cè)試用的QQ郵箱,確保POP3/SMTP/IMAP服務(wù)是開啟的,點(diǎn)擊生成授權(quán)碼,發(fā)送短信獲取授權(quán)碼,用于后續(xù)配置登錄憑證
4.3、配置Jenkins郵箱通知
Manage Jenkins > Configure System下,Jenkins Location中配置系統(tǒng)管理員的郵箱地址
?
?拖動(dòng)頁(yè)面右側(cè)滑塊到頁(yè)面最底部,接著進(jìn)行郵件通知的相關(guān)配置
4.4、配置郵件通知?
SMTP服務(wù)器:使用郵箱對(duì)應(yīng)的服務(wù)器地址
用戶默認(rèn)郵件后綴:可不填,填了,代表其他創(chuàng)建的用戶賬號(hào)的默認(rèn)郵箱后綴為填入的郵箱后綴
SMTP用戶名/密碼:發(fā)送郵件的賬號(hào),密碼為獲取的授權(quán)碼
SMTP端口:SMTP對(duì)應(yīng)服務(wù)器對(duì)應(yīng)端口
通過(guò)發(fā)送測(cè)試郵件測(cè)試配置
Test e-mail recipient :接收測(cè)試郵件郵箱地址
Test configuration:測(cè)試配置,點(diǎn)擊Test configuration按鈕,為測(cè)試賬號(hào)發(fā)送郵件,成功提示?Email was successfully sent
?測(cè)試時(shí)若出現(xiàn)?javax.mail.MessagingException: Got bad greeting from SMTP host: smtp.163.com, port: 465, response: [EOF]?錯(cuò)誤,則查看使用的端口是否需要使用SSL協(xié)議?
在配置上以上郵件通知并測(cè)試通過(guò),測(cè)試郵箱成功收到測(cè)試郵件后,還需對(duì)Extended E-mail Notification模塊進(jìn)行配置(這個(gè)模塊是用于發(fā)送構(gòu)建后的報(bào)告郵件,不進(jìn)行配置的話,在之后的項(xiàng)目構(gòu)建中,你就會(huì)看到構(gòu)建成功,郵件也發(fā)送成功,但是郵箱就是沒(méi)有收到郵件)
4.5、Extended E-mail Notification配置
1)、配置SMTP服務(wù)器地址及其端口
常用郵箱 | SMTP服務(wù)器地址及端口 | POP3服務(wù)器地址及端口 |
QQ郵箱 | smtp.qq.com(端口:25) | pop.qq.com(端口:110) |
QQ企業(yè)郵箱 | pop.exmail.qq.com?(SSL啟用 端口:995) | smtp.exmail.qq.com(SSL啟用 端口:587/465) |
126郵箱 | pop.126.com(端口:110) | smtp.126.com(端口:25) |
2)、配置郵件登錄憑證
Credentials:添加憑證
?密碼重新獲取授權(quán)碼
??憑證配置操作如圖
?
?注意:SMTP Username中的賬號(hào)一定要與系統(tǒng)管理員的郵箱賬號(hào)保持一致
3)、配置郵件通知標(biāo)題、內(nèi)容
?由于郵件使用了Html編寫,所以配置Default Content Type選擇類型HTML (text/html),附郵件內(nèi)容代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構(gòu)建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
本郵件由系統(tǒng)自動(dòng)發(fā)出,無(wú)需回復(fù)!<br/>
各位同事,大家好,以下為${PROJECT_NAME }項(xiàng)目構(gòu)建信息</br>
<td><font color="#CC0000">構(gòu)建結(jié)果 - ${BUILD_STATUS}</font></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">構(gòu)建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>項(xiàng)目名稱 : ${PROJECT_NAME}</li>
<li>構(gòu)建編號(hào) : 第${BUILD_NUMBER}次構(gòu)建</li>
<li>觸發(fā)原因: ${CAUSE}</li>
<li>構(gòu)建狀態(tài): ${BUILD_STATUS}</li>
<li>構(gòu)建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>構(gòu)建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>項(xiàng)目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
<h4><font color="#0B610B">失敗用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>
<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
詳細(xì)提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
</td>
</tr>
</table>
</body>
</html>
4)、Extended E-mail Notificati其他配置
?
4.5、項(xiàng)目配置
打開項(xiàng)目設(shè)置,找到選項(xiàng)卡構(gòu)建后操作,?點(diǎn)擊增加購(gòu)進(jìn)后操作步驟,選擇Editable Email Notification。
Project Recipient List:填入收件人的郵箱賬號(hào),有多個(gè)賬號(hào)時(shí)使用逗號(hào)隔開
?Attachments:讀取路徑是主目錄下的workspace文件夾?,所以想要將報(bào)告以附件的形式發(fā)送的話,就需要在build文件中將報(bào)告的生成路徑更改為項(xiàng)目的工作空間,
針對(duì)單個(gè)文件,直接填寫相對(duì)路徑;多個(gè)文件需要作為附件進(jìn)行發(fā)送,可在Attachments中填入report/*.txt,如有多個(gè)文件的話,路徑之間用英文逗號(hào)隔開,例如,項(xiàng)目根文件夾下有個(gè)文件1.txt,2.txt
Attach Build Log:選擇是否發(fā)送構(gòu)建日志
Content Type:內(nèi)容類型,一般為html
Default Content:郵件內(nèi)容,默認(rèn)為系統(tǒng)設(shè)置
注:其他文件類型同理,路徑同理,不支持發(fā)送文件夾,只能發(fā)送文件,一定要發(fā)送文件夾的話,就將其壓縮成一個(gè)壓縮文件文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-475794.html
4.6、郵件效果
鳴謝:Jenkins配置郵件通知服務(wù),完整教程(含發(fā)送成功無(wú)法接收郵件處理方案)_不定時(shí)總結(jié)的那啥的博客-CSDN博客_jenkins 郵件通知?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-475794.html
到了這里,關(guān)于Jenkins + Gitee + Maven 自動(dòng)化部署 Spring Boot的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!