動(dòng)機(jī)
說(shuō)實(shí)話愿阐,我也不知道為啥要去弄這個(gè)東西萝衩,但是只有項(xiàng)目的痛點(diǎn)才會(huì)使人去改變回挽,公司里面老大配了一套基于gitlab一套持續(xù)集成的項(xiàng)目,但是不知道這是怎么實(shí)現(xiàn)的猩谊,也沒(méi)去研究千劈,所以并沒(méi)有去關(guān)注這個(gè),老老實(shí)實(shí)當(dāng)一個(gè)碼農(nóng)即可牌捷,-.-墙牌。
當(dāng)無(wú)聊自己開(kāi)始寫(xiě)一些node.js的代碼的時(shí)候,必然會(huì)需要去發(fā)布部署到服務(wù)器宜鸯,并且通過(guò)pm2去啟動(dòng)服務(wù)憔古,但是面臨一個(gè)很麻煩的問(wèn)題,就是我每次改完我的接口淋袖,那我把代碼必須要通過(guò)scp命令去發(fā)布到服務(wù)器鸿市,然后還要去重啟pm2,這個(gè)過(guò)程很無(wú)腦且重復(fù)性太強(qiáng)即碗,所以這個(gè)時(shí)候不得不去做持續(xù)集成和持續(xù)部署了焰情。。剥懒。
開(kāi)始
jenkins是啥?其實(shí)我也說(shuō)不清楚内舟,為什么用它而不用其他的構(gòu)建工具,我也不清楚初橘,反正百度到的就是它了验游,那就使用它吧,畢竟一個(gè)做前端的保檐,哈哈耕蝉,但是現(xiàn)在的高級(jí)前端這些個(gè)東西必須得會(huì)一點(diǎn)啊,所以就從jenkins這個(gè)開(kāi)始配置CI CD垒在。
- 安裝和環(huán)境的配置
友情提示:最好買一臺(tái)阿里云的服務(wù)器linux的,不然沒(méi)法玩场躯;
- java環(huán)境(jdk8的這款)!L吖亍!切記 粘茄,之前我下載最新的不能用
我們將下載好的java包通過(guò)tar的解壓命令解壓好,解壓好了以后我們需要去配置環(huán)境變量,
vi /etc/profile, 然后我們進(jìn)入編輯模式 到最底部加入下面的代碼
export JAVA_HOME=/opt/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
就第一行的/opt/jdk8 是你在服務(wù)器里解壓java的目錄瘪菌,然后執(zhí)行soucrc /etc/profile 撒会,在執(zhí)行java -version,如果出現(xiàn)了java的版本即安裝成功
- 下載jenkins的war包师妙,[官網(wǎng)] (https://jenkins.io/zh/doc/pipeline/tour/getting-started/)
就有诵肛,那我們可以先下載到本地,然后通過(guò)scp的命令去上傳到遠(yuǎn)程服務(wù)器默穴,搞定以后我們進(jìn)入這個(gè)目錄執(zhí)行
java -jar jenkins.war --httpPort=8080怔檩,然后通過(guò)域名:8080端口就可以去訪問(wèn)了,記得開(kāi)啟8080端口蓄诽,不然跑不起來(lái)薛训。
- 開(kāi)始配置Jenkins
-
以上如果成功了,你會(huì)進(jìn)入一個(gè)頁(yè)面仑氛,然后聽(tīng)他指揮乙埃,耐心等他,不要選擇自定義插件锯岖,不然你以后頭會(huì)大的,配置好用戶名之類的介袜,成功以后進(jìn)入了jenkins的管理界面了熊镣。
image.png 接下來(lái)我們需要去下載幾個(gè)插件
publish over ssh : 用來(lái)將我們的代碼部署到我們想要的服務(wù)器上去
Generic Webhook Trigger Plugin : 用來(lái)綁定我們的githup的webhook
nvm wrapper : 用來(lái)我們后期使用node的命令
點(diǎn)擊右邊的manage jenkins里面的插件然后去搜索下載即可溅固,記得點(diǎn)下重啟,重啟之后刷新頁(yè)面据沈;
-
綁定githup的webhook
首先創(chuàng)建一個(gè)項(xiàng)目捶牢,
image.png
然后點(diǎn)擊源碼管理鸠珠,見(jiàn)下圖
然后添加觸發(fā)器,勾選我們剛剛下載Generic Webhook Trigger這個(gè)插件秋麸,然后什么也不需要管了跳芳。
搞定以后去githup的頁(yè)面去添加webhook,記得在觸發(fā)器里面也要配上那個(gè)token竹勉;
說(shuō)一下這個(gè)token的獲取,jenkins的系統(tǒng)管理-管理用戶-admin-設(shè)置
搞定以后如果命令行工具沒(méi)報(bào)錯(cuò)就是成功了娄琉;
-
接下來(lái)去配置自動(dòng)化構(gòu)建
構(gòu)建環(huán)境我們選擇nvm
image.png -
配置publish over ssh 遠(yuǎn)程服務(wù)器
image.png
然后點(diǎn)擊下面的test次乓,如果成功了就是ok,配置成功孽水;
配置好了以后在去配置票腰,然后我們加上shell腳本,不然你怎么弄都弄不好
說(shuō)一下上面的參數(shù)是干嘛的女气,
Source files: 就是你上傳包的名字杏慰,因?yàn)閚ode服務(wù)項(xiàng)目不像前端項(xiàng)目打成一個(gè)dist包,所以我們放在一個(gè)目錄里面
Remove prefix : 移除前置的文件夾名稱缘滥,比如我剛剛source files叫 app/dist, 如果我在這里填 app/ 那么我們打成的包就是dist這一層了
Remote directory: 要發(fā)布的遠(yuǎn)程的目錄,之前已經(jīng)配置過(guò)了赃阀,所以不需要填寫(xiě)了榛斯。
Exec command: 這里面就是我們需要執(zhí)行的腳本了,自行配置驮俗,熟悉linux和node即可允跑;
然后我們提交我們的代碼,沒(méi)有錯(cuò)誤就大功告成了荤崇,當(dāng)然這是個(gè)痛苦的過(guò)程术荤,會(huì)碰到各種各樣的問(wèn)題C颗瘛!焦读!