Github+Jenkins+Docker實(shí)現(xiàn)CI

Photo by Dang Nhz on Unsplash

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)如下:
    project_structure
  • 此處的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狸窘,如下所示

    postman

  • 將該項(xiàng)目提交到Github上

2 Jenkins全局工具配置,包括JDK坯认,Maven 翻擒,Git,Mail等

登陸Jenkins牛哺,進(jìn)入如下首頁(yè)


Jenkins 首頁(yè)
  • 配置JDK

點(diǎn)擊系統(tǒng)管理->全局工具配置->新增JDK陋气,可以選擇下面四種不同的安裝方式,默認(rèn)選擇從java.sun.com安裝引润,這個(gè)可以根據(jù)需要自行選擇巩趁。

JDK

  • 配置Maven

點(diǎn)擊系統(tǒng)管理->全局工具配置->Maven安裝,同樣也有四種安裝方式淳附,默認(rèn)選擇從Apache安裝议慰。

Maven
  • 配置Git

點(diǎn)擊系統(tǒng)管理->全局工具配置->Add Git->Git凰荚,此處的Path to Git executable可以指定為Jenkins所在操作系統(tǒng)已有的git的執(zhí)行路徑,此處我選擇自動(dòng)安裝

Git
  • 配置Mail

    點(diǎn)擊系統(tǒng)管理->系統(tǒng)設(shè)置褒脯,此處首先需要配置Jenkins Location中的系統(tǒng)管理員郵件地址便瑟,否則發(fā)送郵件會(huì)出問(wèn)題

    Mail_admin

    然后,在下面的Extended E-mail Notification番川,進(jìn)行郵箱信息的配置到涂,包括郵箱服務(wù)器,用戶名颁督,密碼或授權(quán)碼践啄,使用SSL及對(duì)應(yīng)的端口,還可以配置郵箱默認(rèn)的接收人沉御,定制化郵箱內(nèi)容等功能屿讽。

Mail

最后,可以通過(guò)郵件通知測(cè)試上一步實(shí)現(xiàn)的郵箱信息是否正確吠裆,并且可以發(fā)送一封測(cè)試郵件到指定郵箱伐谈。

Test_mail

3 在Jenkins中新建Job,實(shí)現(xiàn)CI

  • 點(diǎn)擊新建一個(gè)job
New_job
  • 配置源碼管理->Git试疙,此處填寫代碼托管平臺(tái)地址(GitHub 诵棵, Gitlab 等)和對(duì)應(yīng)的Credentials
GitHub
  • 使用Maven命令打包項(xiàng)目,如下
Maven_command
  • 執(zhí)行 docker 命令祝旷,build image 履澳,run container,下面的腳本在首次構(gòu)建時(shí)會(huì)出錯(cuò)怀跛,因?yàn)檫€沒(méi)有鏡像和容器距贷,可以先注釋掉第一行和第二行。
Docker_command
  • 點(diǎn)擊增加構(gòu)建后步驟—>Editable Email Notification吻谋,重點(diǎn)關(guān)注Triggers忠蝗,可針對(duì)不同情況發(fā)送給不同的收件人不同的主題
Mail_notification
Mail_triggers
  • 配置完以上步驟,點(diǎn)擊Save后滨溉,點(diǎn)擊立即構(gòu)建什湘,開(kāi)始構(gòu)建
Job_start
  • 等待構(gòu)建完成,你在docker中可以看到構(gòu)建好的container晦攒,訪問(wèn)http://Docker宿主機(jī)_IP:8001/hello闽撤,能正常返回則表示部署完成
docker_info.png
  • 同時(shí),你也應(yīng)該收到了部署成功的郵件(郵件內(nèi)容未經(jīng)過(guò)優(yōu)化脯颜,如有必要可自定義模板)
mail.png

至此哟旗,構(gòu)建完成,后續(xù)可設(shè)置鉤子,每次提交都重新構(gòu)建闸餐;還可以通過(guò)Jenkins相關(guān)插件完成shell腳本的工作饱亮;也可以使用maven-dockerfile-plugin完成本地到docker engine的build images以及run container,后續(xù)的文章會(huì)講到這些內(nèi)容舍沙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末近上,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拂铡,更是在濱河造成了極大的恐慌壹无,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件感帅,死亡現(xiàn)場(chǎng)離奇詭異斗锭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)失球,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門岖是,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人实苞,你說(shuō)我怎么就攤上這事豺撑。” “怎么了硬梁?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵前硫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荧止,道長(zhǎng),這世上最難降的妖魔是什么阶剑? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任跃巡,我火速辦了婚禮,結(jié)果婚禮上牧愁,老公的妹妹穿的比我還像新娘素邪。我一直安慰自己,他們只是感情好猪半,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布兔朦。 她就那樣靜靜地躺著,像睡著了一般磨确。 火紅的嫁衣襯著肌膚如雪沽甥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天乏奥,我揣著相機(jī)與錄音摆舟,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恨诱,可吹牛的內(nèi)容都是我干的媳瞪。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼照宝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛇受!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起厕鹃,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤龙巨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后熊响,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旨别,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年汗茄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秸弛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洪碳,死狀恐怖递览,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞳腌,我是刑警寧澤绞铃,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站嫂侍,受9級(jí)特大地震影響儿捧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挑宠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一菲盾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧各淀,春花似錦懒鉴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至奴璃,卻和暖如春悉默,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背溺健。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工麦牺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钮蛛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓剖膳,卻偏偏與公主長(zhǎng)得像魏颓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吱晒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容