Jenkins自動(dòng)化部署入門詳細(xì)教程

大綱

1.背景

  在實(shí)際開發(fā)中,我們經(jīng)常要一邊開發(fā)一邊測試话告,當(dāng)然這里說的測試并不是程序員對(duì)自己代碼的單元測試沙郭,而是同組程序員將代碼提交后病线,由測試人員測試;

  或者前后端分離后绑莺,經(jīng)常會(huì)修改接口紊撕,然后重新部署对扶;

  這些情況都會(huì)涉及到頻繁的打包部署浪南;

  手動(dòng)打包常規(guī)步驟:

  1.提交代碼

  2.問一下同組小伙伴有沒有要提交的代碼

  3.拉取代碼并打包(war包络凿,或者jar包)

  4.上傳到Linux服務(wù)器

  5.查看當(dāng)前程序是否在運(yùn)行

  6.關(guān)閉當(dāng)前程序

  7.啟動(dòng)新的jar包

  8.觀察日志看是否啟動(dòng)成功

  9.如果有同事說絮记,自己還有代碼沒有提交......再次重復(fù)1到8的步驟T狗摺W础2畹肌I韬帧!(一上午沒了)

  那么裁替,有一種工具能夠?qū)崿F(xiàn),將代碼提交到git后就自動(dòng)打包部署勒锥惋,答案是肯定的:Jenkins

  當(dāng)然除了Jenkins以外膀跌,也還有其他的工具可以實(shí)現(xiàn)自動(dòng)化部署捅伤,如Hudson等

  只是Jenkins相對(duì)來說丛忆,使用得更廣泛仍秤。

2.Jenkins服務(wù)器搭建及基本配置

2.1.簡介

  Jenkins是一個(gè)開源軟件項(xiàng)目诗力,是基于Java開發(fā)的一種持續(xù)集成工具苇本,用于監(jiān)控持續(xù)重復(fù)的工作瓣窄,旨在提供一個(gè)開放易用的軟件平臺(tái)康栈,使軟件的持續(xù)集成變成可能啥么。

2.2.Jenkins自動(dòng)化部署實(shí)現(xiàn)原理

?2.3.Jenkins部署環(huán)境

  基本環(huán)境:

  1.jdk環(huán)境悬荣,Jenkins是java語言開發(fā)的,因需要jdk環(huán)境言缤。

  2.git/svn客戶端管挟,因一般代碼是放在git/svn服務(wù)器上的僻孝,我們需要拉取代碼守谓。

  3.maven客戶端斋荞,因一般java程序是由maven工程平酿,需要maven打包染服,當(dāng)然也有其他打包方式柳刮,如:gradle

  以上是自動(dòng)化部署java程序jenkins需要的基本環(huán)境,請自己提前安裝好痢毒,下面著重講解Jenkins的安裝部署配置哪替。

2.4.Jenkins安裝

1.下載安裝包jenkins.war凭舶;

2.在安裝包根路徑下帅霜,運(yùn)行命令java -jar jenkins.war --httpPort=8080身冀,(linux環(huán)境搂根、Windows環(huán)境都一樣)剩愧;

3.打開瀏覽器進(jìn)入鏈接http://localhost:8080.

  4.填寫初始密碼隙咸,激活系統(tǒng)

  5.進(jìn)入插件安裝選擇

  這里建議選擇五督,推薦安裝的插件充包,保證基本常用的功能可以使用基矮。

  選擇后家浇,進(jìn)入插件安裝頁面

  6.設(shè)置初始用戶和密碼

  7.進(jìn)入系統(tǒng),安裝完成

  注意莺琳,如果還是進(jìn)入不了系統(tǒng)惭等,需要稍等一下辞做,或者刷新頁面秤茅,如果還是進(jìn)入不了嫂伞,需要重新啟動(dòng)jenkinds服務(wù)器。

2.5.Jenkins基本配置

2.5.1.系統(tǒng)初始化配置

1.Configure System (系統(tǒng)設(shè)置)

  在系統(tǒng)設(shè)置這里撰豺,我們只需要設(shè)置最后面的一項(xiàng)污桦,配置遠(yuǎn)程服務(wù)器地址凡橱,

  即我們代碼最終運(yùn)行的服務(wù)器地址信息稼钩,就像我們之前手動(dòng)部署時(shí)使用xshell登錄Linux服務(wù)器一樣坝撑,

  當(dāng)然這里是可以配置多臺(tái)遠(yuǎn)程Linux服務(wù)器的巡李,配置完成后點(diǎn)擊保存即可侨拦,為后面我們配置自動(dòng)化部署做準(zhǔn)備狱从,配置如下圖

2.Configure? Global Security (全局安全配置)

  a.配置用戶相關(guān)的權(quán)限

  b.配置鉤子程序(當(dāng)用代碼更新時(shí)通知)訪問權(quán)限矫夯,避免報(bào)403錯(cuò)誤

  默認(rèn)是勾選上了的训貌,這里去掉勾選

3.Global Tool?Configuration (全局工具配置?)

  a.配置maven的全局settings路徑

  b.配置jdk

  c.配置git

  d.配置maven的安裝路徑

4.配置必要插件

   主要是檢查如下這兩個(gè)插件是否已安裝

插件1:Publish over SSH

插件2:Deploy to container Plugin

  到這里综液,我們配置一個(gè)自動(dòng)化部署的的java程序(springBoot+maven+gitHub)谬莹,基本必要配置就差不多了,后面配置過程中如果需要在配置埠戳。

3.Jenkins自動(dòng)化部署(springBoot+maven+gitHub)項(xiàng)目

 3.1.Jenkins服務(wù)器上創(chuàng)建項(xiàng)目和配置

  大體步驟:General(基礎(chǔ)配置)--》源碼管理--》構(gòu)建觸發(fā)器--》構(gòu)建環(huán)境--》構(gòu)建--》構(gòu)建后操作

  1.創(chuàng)建一個(gè)工程

  2.General(基礎(chǔ)配置)

  僅需填寫標(biāo)準(zhǔn)部分颗圣,其他可不填寫

  3.源碼管理

  上圖中點(diǎn)擊“添加”按鈕添加一組賬號(hào)和密碼

  4.構(gòu)建觸發(fā)器

  如上圖:當(dāng)前項(xiàng)目的回調(diào)地址為:

  http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2

  只要執(zhí)行這個(gè)地址(在瀏覽器上訪問改地址),該項(xiàng)目就會(huì)發(fā)起一次構(gòu)建項(xiàng)目蔽午,即拉取代碼打包部署操作酬蹋,

  在實(shí)際中除嘹,是由git服務(wù)器回調(diào)改地址尉咕,在后面講git服務(wù)器配置時(shí)詳細(xì)講解 年缎,

  值得注意的是单芜,如果你是學(xué)習(xí)測試犁柜,使用的是GitHub服務(wù)馋缅,要確保你的回調(diào)地址已經(jīng)試外網(wǎng)映射過的,即往外網(wǎng)可以訪問

  5.構(gòu)建環(huán)境(無需配置)

  6.構(gòu)建

  7.構(gòu)建后操作

  構(gòu)建后操作的意思是瘾腰,jar打包好后蹋盆,要將jar發(fā)送到哪里去栖雾,發(fā)送后去和啟動(dòng)等

  這里需要提前在需要部署的服務(wù)器上配置好路徑,寫好啟動(dòng)和停止項(xiàng)目的腳本拌倍,并設(shè)置為可以執(zhí)行的腳本柱恤,

  其實(shí)就是我們平時(shí)在Linux上手動(dòng)部署項(xiàng)目操作的腳本

  案例中給出的stop.sh腳本如下:

1 #!/bin/bash

2 echo "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"

3 pid=`ps -ef |grep java|grep demo2-0.0.1-SNAPSHOT.jar|awk '{print $2}'`

4 echo 'old Procedure pid:'$pid

5 if [ -n "$pid" ]

6 then

7 kill -9 $pid

8 fi

  案例中給出的start.sh腳本如下:

1 #!/bin/bash

2 export JAVA_HOME=/usr/java/jdk1.8.0_131

3 echo ${JAVA_HOME}

4 echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar'

5 chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jar

6 echo '-------Starting-------'

7 cd /home/ldp/app/

8 nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &

9 echo 'start success'

?  到此寺谤,Jenkinds服務(wù)器配置完成变屁,接下來我還有要配置Linux服務(wù)器和Git服務(wù)器意狠。

3.2.Linux服務(wù)器配置

  在Liux服務(wù)上环戈,上傳上文中的兩個(gè)腳本,用于啟動(dòng)和停止

3.3.GitHub服務(wù)器配置

  在GitHub服務(wù)器上的指定項(xiàng)目里面配置上文中提到的回調(diào)地址

  特別注意:為了保證回調(diào)地址網(wǎng)可以使用遮晚,

  我已經(jīng)將地址:http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2县遣,

  通過花生殼進(jìn)行外網(wǎng)映射為:http://zhishidi.imwork.net/job/jenkinsSpringBootDemo/build?token=token_demo2

  所以艺玲,下面配置的是外網(wǎng)映射地址饭聚。

  到這里所有配置搞定秒梳,只需修改代碼,提交到git,然后訪問程序看是否生效酪碘。

?4.測試

?  1.測試代碼

  2.提交代碼到git,觸發(fā)構(gòu)建

  3.在GitHub服務(wù)器上去看徙赢,是否已經(jīng)觸發(fā)

  4.在Jenkins的控制臺(tái)查看是否探越,正在構(gòu)建

  從下圖中可以看出,正在構(gòu)建

  5.查看當(dāng)次構(gòu)建的控制臺(tái)日志

  說明已經(jīng)啟動(dòng)成功

  6.查看Linux服務(wù)器,是否上傳代碼

  7.在Linux上使用命令jps搀擂,查看是否啟動(dòng)

  8.瀏覽器上訪問哨颂,看是否能用

  說明咆蒿,已經(jīng)正常啟動(dòng)可以使用蚂子。

  9.再次確認(rèn)是否能自動(dòng)化部署

  修改代碼食茎,重新提交代碼别渔,循環(huán)1到8步查看惧互。

  如果測試結(jié)果是你預(yù)期的,那么自動(dòng)化部署成功拨与。

5.總結(jié)&資料下載

5.1.總結(jié)

  自動(dòng)化部署Jenkins买喧,作為一款工具,有著非常強(qiáng)大的功能今缚,

  上面我們只是講了生產(chǎn)上做Java自動(dòng)化部署的一個(gè)主要流程低淡,

其他的功能,大家可以參看官方文檔:https://jenkins.io/zh/doc/

  但是何荚,本著學(xué)習(xí)是為了解決生產(chǎn)的原則兽泣,

  個(gè)人建議胁孙,用到Jenkins的什么功能就學(xué)什么就可以了涮较,

  沒必要把Jenkins的所有功能都學(xué)完在使用,

  就如同我們使用word文檔一樣候齿,并沒有系統(tǒng)的他word文檔學(xué)完后慌盯,在開始使用掂器,而是用到什么功能就學(xué)習(xí)什么功能!

5.2.相關(guān)資料

  1.案例中的源碼地址:https://github.com/bangbangw/demo01.git

2.官方文檔:https://jenkins.io/zh/doc/

3.博客配套視頻:在線學(xué)習(xí)

轉(zhuǎn)載于:https://www.cnblogs.com/wfd360/p/11314697.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乃摹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌播歼,老刑警劉巖荚恶,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異食寡,居然都是意外死亡抵皱,警方通過查閱死者的電腦和手機(jī)辩蛋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門悼院,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绞愚,你說我怎么就攤上這事位衩∪巯簦” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵贮缕,是天一觀的道長跷睦。 經(jīng)常有香客問我,道長烂琴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任梗夸,我火速辦了婚禮反症,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘润绵。我一直安慰自己胞谈,他們只是感情好烦绳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布径密。 她就那樣靜靜地躺著,像睡著了一般底桂。 火紅的嫁衣襯著肌膚如雪伪很。 梳的紋絲不亂的頭發(fā)上锉试,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天呆盖,我揣著相機(jī)與錄音,去河邊找鬼应又。 笑死株扛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盆繁。 我是一名探鬼主播旬蟋,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拦惋!你這毒婦竟也來了厕妖?” 一聲冷哼從身側(cè)響起我衬,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤挠羔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后俱恶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體合是,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聪全,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年难礼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玫锋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谦炬,死狀恐怖键思,靈堂內(nèi)的尸體忽然破棺而出吼鳞,到底是詐尸還是另有隱情获搏,我是刑警寧澤常熙,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布裸卫,位于F島的核電站,受9級(jí)特大地震影響墓贿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜队伟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一嗜侮、第九天 我趴在偏房一處隱蔽的房頂上張望啥容。 院中可真熱鬧,春花似錦击吱、人聲如沸遥昧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憨奸。三九已至凿试,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間板甘,已是汗流浹背详炬。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枪萄,地道東北人猫妙。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像齐帚,于是被迫代替她去往敵國和親对妄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沪羔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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