Note:本文所使用的編輯器是STS;關(guān)于Jenkins+Docker構(gòu)建DooD可參考上一篇文章DooD:Docker+Jenkins;需要在Github已經(jīng)注冊(cè)有賬號(hào)叽躯,其他的代碼托管平臺(tái)略有不同宫仗。
1 構(gòu)建SpringBoot項(xiàng)目
- 在STS中選擇
New
->Spring starter project
->Next
->Finish
,新建一個(gè)Spring Boot 項(xiàng)目示惊,結(jié)構(gòu)如下:
- 此處的
application.yml
中,為了防止出現(xiàn)端口沖突,項(xiàng)目啟動(dòng)端口改為8001
server:
port: 8001
- 添加了一個(gè) Restful 風(fēng)格的 Controller垄琐,代碼如下:
@RestController
public class HelloController {
@GetMapping(path = "/hello")
public String hello() {
return "Hello Jenkins";
}
}
- 項(xiàng)目根目錄添加
Dockerfile
FROM openjdk:8-jdk-alpine
# Spring Boot 使用的內(nèi)嵌 Tomcat 容器默認(rèn)使用/tmp作為工作目錄
VOLUME /tmp
# 將jar包c(diǎn)opy到容器里
COPY target/*.jar app.jar
# 為了縮短 Tomcat 啟動(dòng)時(shí)間,添加一個(gè)系統(tǒng)屬性指向 “/dev/urandom” 作為 Entropy Source
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
-
啟動(dòng)項(xiàng)目经柴,使用瀏覽器或者
postman
訪問(wèn)http://localhost:8001/hello
狸窘,如下所示
將該項(xiàng)目提交到Github上
2 Jenkins全局工具配置,包括JDK坯认,Maven 翻擒,Git,Mail等
登陸Jenkins牛哺,進(jìn)入如下首頁(yè)
- 配置JDK
點(diǎn)擊系統(tǒng)管理
->全局工具配置
->新增JDK
陋气,可以選擇下面四種不同的安裝方式,默認(rèn)選擇從java.sun.com安裝
引润,這個(gè)可以根據(jù)需要自行選擇巩趁。
- 配置Maven
點(diǎn)擊系統(tǒng)管理
->全局工具配置
->Maven安裝
,同樣也有四種安裝方式淳附,默認(rèn)選擇從Apache安裝
议慰。
- 配置Git
點(diǎn)擊系統(tǒng)管理
->全局工具配置
->Add Git
->Git
凰荚,此處的Path to Git executable
可以指定為Jenkins所在操作系統(tǒng)已有的git的執(zhí)行路徑,此處我選擇自動(dòng)安裝
-
配置Mail
點(diǎn)擊
系統(tǒng)管理
->系統(tǒng)設(shè)置
褒脯,此處首先需要配置Jenkins Location
中的系統(tǒng)管理員郵件地址
便瑟,否則發(fā)送郵件會(huì)出問(wèn)題
然后,在下面的
Extended E-mail Notification
番川,進(jìn)行郵箱信息的配置到涂,包括郵箱服務(wù)器,用戶名颁督,密碼或授權(quán)碼践啄,使用SSL及對(duì)應(yīng)的端口,還可以配置郵箱默認(rèn)的接收人沉御,定制化郵箱內(nèi)容等功能屿讽。
最后,可以通過(guò)郵件通知
測(cè)試上一步實(shí)現(xiàn)的郵箱信息是否正確吠裆,并且可以發(fā)送一封測(cè)試郵件到指定郵箱伐谈。
3 在Jenkins中新建Job,實(shí)現(xiàn)CI
- 點(diǎn)擊新建一個(gè)job
- 配置
源碼管理
->Git
试疙,此處填寫代碼托管平臺(tái)地址(GitHub 诵棵, Gitlab 等)和對(duì)應(yīng)的Credentials
- 使用Maven命令打包項(xiàng)目,如下
- 執(zhí)行 docker 命令祝旷,build image 履澳,run container,下面的腳本在首次構(gòu)建時(shí)會(huì)出錯(cuò)怀跛,因?yàn)檫€沒(méi)有鏡像和容器距贷,可以先注釋掉第一行和第二行。
- 點(diǎn)擊
增加構(gòu)建后步驟
—>Editable Email Notification
吻谋,重點(diǎn)關(guān)注Triggers
忠蝗,可針對(duì)不同情況發(fā)送給不同的收件人不同的主題
- 配置完以上步驟,點(diǎn)擊
Save
后滨溉,點(diǎn)擊立即構(gòu)建
什湘,開(kāi)始構(gòu)建
- 等待構(gòu)建完成,你在docker中可以看到構(gòu)建好的container晦攒,訪問(wèn)http://Docker宿主機(jī)_IP:8001/hello闽撤,能正常返回則表示部署完成
- 同時(shí),你也應(yīng)該收到了部署成功的郵件(郵件內(nèi)容未經(jīng)過(guò)優(yōu)化脯颜,如有必要可自定義模板)
至此哟旗,構(gòu)建完成,后續(xù)可設(shè)置鉤子,每次提交都重新構(gòu)建闸餐;還可以通過(guò)Jenkins相關(guān)插件完成shell腳本的工作饱亮;也可以使用maven-dockerfile-plugin完成本地到docker engine的build images以及run container,后續(xù)的文章會(huì)講到這些內(nèi)容舍沙。