一、 相關插件安裝
1.安裝GitLab相關插件
2.NodeJS插件
3.Maven 插件
4.手動安裝插件
網絡或者其他原因,可能導致插件安裝失敗。
可以采用手動安裝的方式。
-
手動下載jenkins插件:jenkins插件下載地址:http://mirror.xmission.com/jenkins/plugins/ ,一般下載下來后綴為hpi,如下載下來是zip的,記得把后綴修改為hpi
-
打開jenkins,點擊 系統管理——>插件管理——>高級,選擇本地文件,點擊提交。
二、Jenkins相關配置
1.全局工具配置
系統管理-->全局工具配置:
將服務器安裝的Git、Maven以及Node 起一個名字進行配置。(也可用Jenkins帶的“自動安裝”,不過網絡差的話可能很慢)。
2.系統配置,設置 GitLab
系統管理-->系統設置,找到GitLab,填寫上名稱與GitLab並寫上主機地址,點擊【添加】來添加證書。
這里我們選擇添加 GitLab API token
登陸GitLab
點擊右上角頭像-->設置-->訪問令牌
輸入令牌名稱,然后勾選api,點擊下方 創建個人訪問令牌,復制token,並保存下來。因為下次就不可見了。然后在Jenkins中粘貼
三、創建vue前端任務
1.創建任務
輸入任務名稱,點選“構建一個自由風格的軟件項目”,點擊確定。
2.general
這里描述就隨便寫寫,丟棄舊的構建可以選上,節省空間。
3.源碼管理
選擇"Git",將項目git連接復制,並點擊【添加】添加git用戶名/密碼;
輸入指定分支。
4.構建觸發器
這里我們點選,當GitLab提交觸發,點擊下面的【高級】
拉到下面創建一個token
創建完成后,進入GitLab上的前端項目,點擊【設置】-->【集成】
將 上面Build when a change is pushed to GitLab. GitLab webhook URL: 后面跟的項目鏈接 與 剛剛 生成的token輸入,點擊【Add webhook】
添加成功后,可以點選測試,Push events 如果彈出 200 說明測試通過。
5.構建環境
構建環境選擇node,然后NodeJS Installation 這里下拉選擇上面在全局系統配置中設置的node
6.構建
構建這里,我們選擇shell腳本。
npm -v
cnpm install // 下載 node moudles
node build/build.js //構建
tar -zcvf dist.tar.gz ./dist //將生成的dist 打成壓縮包
mv ./dist.tar.gz /var/www/vue; //移動到Nginx配置的項目目錄下面
cd /var/www/vue;
rm -fr ./static
tar -zxvf ./dist.tar.gz ./; //解壓 剛才打的dist壓縮包
mv ./dist/* ./ //刪除
rm -fr ./dist
rm -fr ./dist.tar.gz;
然后點擊保存,就可以了。
四、創建Sping Cloud 任務
創建Spring Cloud 跟創建 Vue前端任務類似,只是構建環境可以不選,然后更改構建中的shell。
首先為每一個服務創建一個通用的腳本,模板如下:
#spring boot Jar包目錄
APP_NAME=/root/app/springBoot/robotcenter.jar
#使用說明,用來提示輸入參數
usage() {
echo "Usage: sh robotcenter.sh [start|stop|restart|status]"
exit 1
}
#檢查程序是否在運行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#啟動方法
start(){
is_exist
if [ $? -eq 0 ]; then
echo "${APP_NAME} is already running. pid=${pid}"
else
#這個dontKillMe 是一定要加的,不然jenkins會殺死這個進程,導致服務退出
BUILD_ID=dontKillMe
#將日志輸出到robotcenter.out,自己命名
nohup java -jar ${APP_NAME} >robotcenter.out 2>&1 &
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#輸出運行狀態
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重啟
restart(){
stop
sleep 5
start
}
#根據輸入參數,選擇執行對應方法,不輸入則執行使用說明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
然后編寫構建shell腳本
#首先關閉所有的服務
sh /home/shell/eureka.sh stop
sh /home/shell/zuul.sh stop
sh /home/shell/web.sh stop
#進入jenkins的工作空間 對應的Spring Cloud項目地址
cd /var/lib/jenkins/workspace/Project/
# clean install 清除之前的包,並將所有模塊 打包
mvn clean
mvn install
# 進入每個需要部署服務的target目錄,將jar包移動到指定目錄
cd /var/lib/jenkins/workspace/Project/Project-server-eureka/
cd target/
mv Project-server-eureka-0.0.1-SNAPSHOT.jar /home/Project/
cd /var/lib/jenkins/workspace/Project/Project-server-zuul/
cd target/
mv Project-server-zuul-0.0.1-SNAPSHOT.jar /home/Project/
cd /var/lib/jenkins/workspace/Project/Project-server-web/
cd target/
mv Project-server-web-0.0.1-SNAPSHOT.jar /home/Project/
#啟動每個服務的啟動腳本
sh /home/shell/eureka.sh start
sh /home/shell/zuul.sh start
sh /home/shell/web.sh start