本篇主要介紹如何實(shí)現(xiàn)上傳代碼到github之后,自動(dòng)編譯部署代碼的效果,采用的工具為jenkins(持續(xù)集成&持續(xù)部署工具)+github(代碼托管平臺(tái))+vue(測(cè)試項(xiàng)目)

1. 什么是jenkins
jenkins是當(dāng)前比較流行的一款持續(xù)集成&持續(xù)部署(CI & CD)的工具,可以實(shí)現(xiàn)代碼上傳倉(cāng)庫(kù)(代碼更新)后自動(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)訪問(wèn)宿主機(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. 開(kāi)始安裝jenkins(經(jīng)測(cè)試比較,該方法最快)
- 首先需要jenkins的rpm安裝包
可以去官網(wǎng)下載(非常慢),也可以使用下面的github倉(cāng)庫(kù),我上傳了一個(gè)2020年2月28日的修改版,應(yīng)該是比較新的了,地址在這里。
image.png
- 首先需要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(這是三種命令的合在一起寫(xiě)的,執(zhí)行的時(shí)候判斷需要哪個(gè),就執(zhí)行哪個(gè))
$ service jenkins start/stop/restart
5.訪問(wèn)jenkins瀏覽器頁(yè)面 http://118.25.194.49:8888
-
就會(huì)出現(xiàn)jenkins的正在裝載頁(yè)面
image.png
-
- 輸入解鎖jenkins的密碼,密碼存放在頁(yè)面的紅色區(qū)域,在服務(wù)器直接
cat 紅色區(qū)域路徑就能得到密碼,復(fù)制進(jìn)來(lái),下一步即可。
image.png
- 輸入解鎖jenkins的密碼,密碼存放在頁(yè)面的紅色區(qū)域,在服務(wù)器直接
-
安裝插件(可以選擇第一個(gè)默認(rèn)安裝)
image.png
-
- 配置用戶名密碼等相關(guān)參數(shù)頁(yè)面,配置好就下一步。
-
進(jìn)入首頁(yè)
image.png
-
-
新建任務(wù)
image.png
-
-
配置上該項(xiàng)目的github的https的git地址
image.png -
配置‘源碼管理’
image.png
點(diǎn)擊‘添加-jenkins’
image.png
選擇剛才生成的
image.png -
配置觸發(fā)器
image.png
勾選上?。?!
-
!!!!!視頻中忘了說(shuō)的 - 這步不能忘,否則提交代碼無(wú)法觸發(fā)自動(dòng)構(gòu)建
此時(shí),在jenkins中我們開(kāi)啟了github trigger,但是呢,github方還不知道在我們push完代碼之后應(yīng)該通知jenkins,以及通知哪個(gè)jenkins,接下來(lái)我們?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)建
image.png
image.png - 先‘應(yīng)用’,再‘保存’
-
點(diǎn)擊‘立即構(gòu)建’
image.png
稍等這里會(huì)出來(lái)一個(gè)序號(hào)加小球,點(diǎn)擊最新的小球進(jìn)去
image.png
選擇‘控制臺(tái)輸出’
image.png
可以看到輸出信息
image.png
-
-
停止原來(lái)運(yùn)行的demo1的docker的nginx容器
image.png
-
-
追加腳本,'應(yīng)用'+‘保存’
image.png
-
-
注意!!! 這里視頻上也漏了一步,就是start.sh中有啟動(dòng)docker的命令,但是用jenkins去執(zhí)行的話,由于jenkins不在docker的組內(nèi),所以執(zhí)行一些命令的時(shí)候沒(méi)有權(quán)限,解決方案如下:
1. 將jenkins加入docker組
$ sudo gpasswd -a jenkins docker
2. 重啟jenkins服務(wù)
$ sudo service jenkins restart
-
點(diǎn)擊立即構(gòu)建,進(jìn)入最新出來(lái)的小球中,查看日志
image.png
成功編譯文件,并生成docker容器,接下來(lái)驗(yàn)證一下
image.png
驗(yàn)證通過(guò)
-
-
10.實(shí)驗(yàn)提交代碼觸發(fā)jenkins自動(dòng)集成+自動(dòng)部署
用本地編譯器重新提交一版修改過(guò)的代碼,僅僅push到github上,此時(shí)查看
image.png
這個(gè)就是剛剛push到遠(yuǎn)程的一次commit,通過(guò)hook通知了jenkins,jenkins拉取了最新的代碼,并執(zhí)行了start.sh,此時(shí),只要去看一下頁(yè)面,如果是我們剛改的,一切就很完美了。
image.png
完美!
完美其實(shí)并不完美,由于粗心,漏掉了上面補(bǔ)充的兩點(diǎn),給別人帶來(lái)了困擾,以后,以后每發(fā)布的文章我一定認(rèn)真檢查,不會(huì)再出現(xiàn)以上的問(wèn)題,立帖為證!






















