Jenkins, VUE, Tomcat, Gitee, Linux自動部署

Jenkins, VUE, Tomcat, Gitee, Linux自動部署

相關軟件版本號:

  1. Jenkins: 2.190.1
  2. Java : openjdk version "1.8.0_232"
  3. Node: 12.13.0
  4. NPM: 6.12.0
  5. Tomcat: apache-tomcat-8.5.40
  6. VUE-CLI3
  7. Linux: CentOS Linux release 7.7.1908 (Core)
  8. 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 &quot;%r&quot; %s %b" />

      </Host>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章