本篇主要介紹如何實(shí)現(xiàn)上傳代碼到github之后当叭,自動(dòng)編譯部署代碼的效果芽丹,采用的工具為jenkins(持續(xù)集成&持續(xù)部署工具)+github(代碼托管平臺(tái))+vue(測試項(xiàng)目)
1. 什么是jenkins
jenkins是當(dāng)前比較流行的一款持續(xù)集成&持續(xù)部署(CI & CD)的工具笋庄,可以實(shí)現(xiàn)代碼上傳倉庫(代碼更新)后自動(dòng)部署到需要部署的位置(服務(wù)器等)另凌。
2.為什么本次使用rpm方式安裝jenkins康吵?
jenkins大致有三種安裝方式:
- 使用war包進(jìn)行安裝
- linux使用rpm方式安裝
- docker方式安裝jenkins
使用rpm安裝的原因有二:1.當(dāng)前使用的正是linux系統(tǒng) 2.使用docker安裝后实夹,在容器內(nèi)訪問宿主機(jī)的docker命令太困難橄浓。
3. 安裝java環(huán)境
- 首先執(zhí)行以下命令查看可安裝的jdk版本:
yum -y list java*
- 首先執(zhí)行以下命令查看可安裝的jdk版本:
- 選擇一個(gè)版本安裝
yum install -y java-1.8.0-openjdk-devel.x86_64
- 選擇一個(gè)版本安裝
- 檢查是否安裝成功
java -version
查看是否輸出對(duì)應(yīng)的版本號(hào)
- 檢查是否安裝成功
4. 開始安裝jenkins(經(jīng)測試比較,該方法最快)
- 首先需要jenkins的rpm安裝包
可以去官網(wǎng)下載(非常慢)亮航,也可以使用下面的github倉庫荸实,我上傳了一個(gè)2020年2月28日的修改版,應(yīng)該是比較新的了缴淋,地址在這里准给。
- 首先需要jenkins的rpm安裝包
- 上傳該rpm包到服務(wù)器,這里以本機(jī)是mac系統(tǒng)電腦宴猾,服務(wù)器是linux為例:
scp 本地目錄 遠(yuǎn)程登錄服務(wù)器用戶名@遠(yuǎn)程服務(wù)器ip地址:/下載文件的目錄
- 上傳成功后,進(jìn)入該上傳目標(biāo)文件夾叼旋,執(zhí)行以下命令:
$ rpm -ivh jenkins-XXXXX.noarch.rpm
- 按實(shí)際情況仇哆,判斷是否需要jenkins的默認(rèn)使用端口(8080),如果需要請(qǐng)執(zhí)行(我改成了8888):
$ vi /etc/sysconfig/jenkins
找到JENKINS_PORT鍵夫植,修改對(duì)應(yīng)的值即可讹剔。
- 啟動(dòng)/關(guān)閉/重啟jenkins(這是三種命令的合在一起寫的,執(zhí)行的時(shí)候判斷需要哪個(gè)详民,就執(zhí)行哪個(gè))
$ service jenkins start/stop/restart
5.訪問jenkins瀏覽器頁面 http://118.25.194.49:8888
-
就會(huì)出現(xiàn)jenkins的正在裝載頁面
-
- 輸入解鎖jenkins的密碼延欠,密碼存放在頁面的紅色區(qū)域,在服務(wù)器直接
cat 紅色區(qū)域路徑
就能得到密碼沈跨,復(fù)制進(jìn)來由捎,下一步即可。
- 輸入解鎖jenkins的密碼延欠,密碼存放在頁面的紅色區(qū)域,在服務(wù)器直接
-
安裝插件(可以選擇第一個(gè)默認(rèn)安裝)
-
- 配置用戶名密碼等相關(guān)參數(shù)頁面饿凛,配置好就下一步狞玛。
-
進(jìn)入首頁
-
-
新建任務(wù)
-
-
配置上該項(xiàng)目的github的https的git地址
-
配置‘源碼管理’
點(diǎn)擊‘添加-jenkins’
選擇剛才生成的
-
配置觸發(fā)器
勾選上H沓邸!心肪!
-
!!!!!視頻中忘了說的 - 這步不能忘锭亏,否則提交代碼無法觸發(fā)自動(dòng)構(gòu)建
此時(shí),在jenkins中我們開啟了github trigger硬鞍,但是呢慧瘤,github方還不知道在我們push完代碼之后應(yīng)該通知jenkins,以及通知哪個(gè)jenkins固该,接下來我們?nèi)ithub中锅减,找到當(dāng)前項(xiàng)目,點(diǎn)擊setting蹬音,找到webhook選項(xiàng)上煤,添加上
http://your 地址/github-webhook/
,例如http://118.25.200.49:8888/github-webhook/
,保存即可著淆。
-
構(gòu)建
- 先‘應(yīng)用’劫狠,再‘保存’
-
點(diǎn)擊‘立即構(gòu)建’
稍等這里會(huì)出來一個(gè)序號(hào)加小球,點(diǎn)擊最新的小球進(jìn)去
選擇‘控制臺(tái)輸出’
可以看到輸出信息
-
-
停止原來運(yùn)行的demo1的docker的nginx容器
-
-
追加腳本永部,'應(yīng)用'+‘保存’
-
-
注意6琅ⅰ!苔埋! 這里視頻上也漏了一步懦砂,就是start.sh中有啟動(dòng)docker的命令,但是用jenkins去執(zhí)行的話组橄,由于jenkins不在docker的組內(nèi)荞膘,所以執(zhí)行一些命令的時(shí)候沒有權(quán)限,解決方案如下:
1. 將jenkins加入docker組
$ sudo gpasswd -a jenkins docker
2. 重啟jenkins服務(wù)
$ sudo service jenkins restart
-
點(diǎn)擊立即構(gòu)建玉工,進(jìn)入最新出來的小球中羽资,查看日志
成功編譯文件,并生成docker容器遵班,接下來驗(yàn)證一下
驗(yàn)證通過
-
-
10.實(shí)驗(yàn)提交代碼觸發(fā)jenkins自動(dòng)集成+自動(dòng)部署
用本地編譯器重新提交一版修改過的代碼屠升,僅僅push到github上,此時(shí)查看
這個(gè)就是剛剛push到遠(yuǎn)程的一次commit狭郑,通過hook通知了jenkins腹暖,jenkins拉取了最新的代碼,并執(zhí)行了start.sh翰萨,此時(shí)脏答,只要去看一下頁面,如果是我們剛改的,一切就很完美了以蕴。
完美糙麦!
完美其實(shí)并不完美,由于粗心丛肮,漏掉了上面補(bǔ)充的兩點(diǎn)赡磅,給別人帶來了困擾,以后宝与,以后每發(fā)布的文章我一定認(rèn)真檢查焚廊,不會(huì)再出現(xiàn)以上的問題,立帖為證习劫!