Jenkins, VUE, Tomcat, Gitee, Linux自動部署
相關軟件版本號:
- Jenkins: 2.190.1
- Java : openjdk version "1.8.0_232"
- Node: 12.13.0
- NPM: 6.12.0
- Tomcat: apache-tomcat-8.5.40
- VUE-CLI3
- Linux: CentOS Linux release 7.7.1908 (Core)
- Git: gitee.com (https://gitee.com/help/articles/4193)
作者的Jenkins就安裝在測試服務器上,跟tomcat在同一個服務器,所以沒有用Add post-build action->Send build artifacts over SSH
步驟:
1. 創建一個Job(具體參數都用默認即可)
2. 源碼管理及配置
2.1 配置Gitee.com上源碼的地址,以及登錄信息 ,具體可參考 https://gitee.com/help/articles/4193
2.2 Additional Behaviours: 選擇Clean before checkout,每次獲取源碼前先清理一下,以免有緩存導致有些文件未更新
2.3 Branch,獲取源代碼時,具體從哪個分支獲取,如: origin/master, origin/develop
3. 構建觸發機制
默認既可以,作者用來發布開發環境,或者直接用 Push Events 去觸發 origin/develop分支
4.構建編譯環境
Node JS選擇自己配置的Node js,其他參數不變
配置Node Js: jenkins->manage jenkins->Global Tool Configuration,沒有Node Js選項的話,去安裝Node JS插件
5. 構建(編輯併發布)
Node JS任務的構建,直接添加 Add Build Step-> Execute shell,作者的發佈環境用了4個 Execute Shell
5.1 第一個Execute Shell
5.1.1. 進入到jenkins下VUE項目,注意項目名稱plsweb7777是 Jenkins任務的名稱,不是Git上項目的名稱
5.1.2. 刪除build出來的dist文件
5.1.3. 執行 npm install, npm run build
echo "start to build....."
cd /var/lib/jenkins/workspace/plsweb7777
source /etc/profile
rm -rf dist
echo "Deleted dist at /var/lib/jenkins/workspace/plsweb7777/dist....."
echo "Begin to execute npm install....."
# npm config set user 0
# npm config set unsafe-perm true
# npm audit fix --force
npm install
echo "Executed npm install....."
echo "Begin to execute npm run build:prod"
npm run build:prod
echo "Executed npm run build:prod"
5.2 第二個Execute Shell
停止原來的Tomcat服務
stop-admin-web7777.sh的文件內容如下,
5.2.1 停止掉tomcat服務(Tomcat程序文件夾的名字:adminweb-tomcat-7777)
5.2.2. 刪除Tomcat配置指向的dist程序
5.2.3. 刪除tomcat下的臨時文件,work文件夾下的Catalina文件夾及其下面的所有文件
#!/bin/sh
echo "Stop pls-admin web tomcat adminweb-tomcat-7777............"
echo ".............stopping.................."
NAME='adminweb-tomcat-7777'
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "...........stopped adminweb-tomcat-7777 successfully............"
source /etc/profile
cd /mnt/diskb/mallplus-runnning/pls-admin-web/
rm -rf dist
echo "......Deleted dist at /mnt/diskb/mallplus-runnning/pls-admin-web/dist ............"
cd /mnt/diskb/installed/adminweb-tomcat-7777/work
rm -rf Catalina
echo "......Deleted Catalina at /mnt/diskb/installed/adminweb-tomcat-7777/work/Catalina ............"
5.3 第三個Execute Shell
將第一個Exucute Shell編譯出的dist程序,拷貝到Tomcat指向執行的文件夾pls-admin-web下,並賦予讀寫權限
5.4 第四個Execute Shell
啓動Tomcat,BUILD_ID=dontKillme,是防止tomcat啓動後被Jenkins立刻殺死,如果tomcat能正常啓動,這不需要加這個donKillMe.
start-admin-web7777.sh的文件內容如下,
#!/bin/sh
echo "Start adminweb-tomcat-7777 ............"
echo ".............starting.................."
/mnt/diskb/installed/adminweb-tomcat-7777/bin/startup.sh
echo "...........started successfully............"
6. 手動觸發Jenkins Job->build now 進行構建或者通過Push Events觸發構建,進行測試,在瀏覽器中訪問程序,出現正常登陸頁面,進行測試。
7. 備註Tomcat下 server.xml中配置tomcat根項目爲dist
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="/mnt/diskb/mallplus-runnning/pls-admin-web/dist" debug="0" privileged="true" reloadable="true">
</Context>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>