Jenkins+SpringCloud(多模組)+Vue項目詳細配置

一、Jenkins安裝及所需插件安裝

      安裝過程略。

      我這用到工具包括JDK、Git、Maven、NodeJS:可以選擇自行在伺服器安裝,也可以通過Jenkins自動安裝,位置在系統管理 》全局工具配置

      

 

 

 

 

      安裝的插件包括 NodeJS Plugin、Publish Over SSH:通過 系統管理 》插件管理  在線搜索安裝,無需重啟。

     

 

 

 

 

二、微服務後端模組配置

     1、新建任務

          填入任務名稱,選擇構建一個maven項目,如果沒有該選項可能是插件沒有安裝導致,也可以選擇構建一個自由 風格得軟體項目

     

 

 

 

 

     2、構建打包

     

   

   

   

    clean package -pl carbon-modules/carbon-file -am -Dmaven.test.skip=true

     

 

  3、遠程部署

    部署方式可以根據實際情況靈活調整:如果Jenkins和系統部署為一台伺服器,則無需遠程傳輸,將打包好的文件移動或複製到指定的目錄運行即可;

如果不是同一台伺服器,則一般需要將打包好的資源文件傳輸到目標伺服器並通過命令啟動運行。

    下面截圖展示遠程部署的方式,基本適用於大多數場景。

 

   配置SSH伺服器:系統管理 》系統配置

   

     

     

   

source /etc/profile
BUILD_ID=DONTKILLME
cd /opt/carbon/backend/command
sh carbon-modules-file.sh restart 9302

carbon-modules-file.sh

#!/bin/bash
#配置jar名稱
APP_NAME=carbon-modules-file
SPACE=xxxxx
PORT="$2"

#使用說明,用來提示輸入參數
usage() {
echo "Usage: sh 腳本名.sh [start|stop|restart|status]"
exit 1
}

#檢查程式是否在運行
is_exist(){
pid=`ps -ef|grep $APP_NAME.jar|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} ."
elif [ ${PORT} ]; then
echo "port is ${PORT}"
nohup java -Dserver.port=${PORT} -Xms512m -Xmx512m -jar ../${APP_NAME}.jar --spring.profiles.active=prod --spring.cloud.nacos.discovery.namespace=${SPACE} --spring.cloud.nacos.config.namespace=${SPACE} > ../logs/${APP_NAME}.log &
echo "${APP_NAME} start success"
else
nohup java -Xms512m -Xmx512m -jar ../${APP_NAME}.jar --spring.profiles.active=prod --spring.cloud.nacos.discovery.namespace=${SPACE} --spring.cloud.nacos.config.namespace=${SPACE} > ../logs/${APP_NAME}.log &
echo "${APP_NAME} start success"
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
start
}

#根據輸入參數,選擇執行對應方法,不輸入則執行使用說明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac

註:由於使用了nacos作為了註冊配置中心,命令中增加了相關設定,可自行根據項目情況修改;

      命令文件中換行符一定確定是Unix(LF)格式;

      將sh文件上傳到伺服器目錄後,增加可執行許可權(chmod u+x *.sh)。

 

   

 4、複製構建

 

 

三、系統前端(Vue)配置

    源碼管理等略,參考後端配置。

   

   

   

   

cd /data/iot/tomcat_jenkins/data/workspace/carbon-ui/carbon-ui
node -v
npm -v
npm install
npm run build:prod
cd dist
rm -rf carbon-ui.tar.gz
tar -zcvf carbon-ui.tar.gz *

   

   

cd /data/carbon/front/
tar -xzvf carbon-ui.tar.gz -C /data/carbon/front/
find /data/carbon/front/ -name "*.tar.gz" -exec rm -rf {}  \;
echo '發布成功!'

  構建完成後查看日誌,輸出以下內容即為成功

 

 

四、總結

     隨著Docker、K8S、服務網格(ServiceMesh)等新型部署管理方式的興起,Jenkins等工具已逐漸是CI/CD的較為過時的管理方式,但是對於中小型開發團隊且系統部署規模及硬體資源都相對較小的情況下,為了減輕開發運維過程中頻繁的版本迭代及多模組多伺服器部署帶來的負擔,提高生產運維效率,減少因人為過失導致的線上生產事故,選擇Jenkins來搭配程式碼管理工具GitLab及項目管理工具禪道、Jira等作為自動化構建部署管理方式,也不失為一個過渡性又相對合理的折中選擇。