有些程序員在項目上線時,會選擇手敲命令來部署項目,這種方式一旦敲錯命令就會導致項目部署失敗。今天給大家分享一套基於Jenkins+Docker的自動化部署方案,部署齊全,能讓你少走坑路!
Jenkins簡介
Jenkins是一款領先的開源自動化工具,採用Java構建,提供超過1800個插件,支持自動化幾乎所有任務,目前在Github上已有23k+Star。其目標是通過自動化重複性的工作,減少人工干預,使使用者能夠專注於機器無法完成的任務。
下面是Jenkins使用過程中的效果圖,界面還是挺清新優雅的!
mall項目
這裏將以mall電商實戰項目的自動化部署為例來講解下Jenkins的使用。
這裏簡單介紹下mall項目,mall項目是一套基於SpringBoot3 + Vue 的電商系統(Github標星60K),後端支持多模塊和2024最新微服務架構,採用Docker和K8S部署。包括前台商城項目和後台管理系統,能支持完整的訂單流程!涵蓋商品、訂單、購物車、權限、優惠券、會員、支付等功能!
- Boot項目:https://github.com/macrozheng/mall
- Cloud項目:https://github.com/macrozheng/mall-swarm
- 教程網站:https://www.macrozheng.com
項目演示:
Jenkins的安裝
使用Docker來安裝Jenkins是非常方便的,這裏採用此種方式來安裝。
- 首先通過如下命令下載Jenkins的Docker鏡像;
docker pull jenkins/jenkins:lts
- 然後通過如下命令在容器中運行Jenkins。
docker run -p 8180:8080 -p 50000:5000 --name jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-d jenkins/jenkins:lts
Jenkins的配置
- Jenkins首次運行成功後輸入管理員密碼才可以使用,訪問地址:http://192.168.3.101:8180/
- 可以使用以下命令從容器啓動日誌中獲取管理密碼;
docker logs -f jenkins
- 接下來就需要為Jenkins安裝插件了,這裏選擇
安裝推薦的插件;
- 安裝完成後,創建一個Jenkins的管理員賬號;
- 進行實例配置,配置Jenkins的URL;
- 點擊
系統管理->插件管理,可以進行插件的安裝;
- 這裏需要安裝
SSH plugin插件,用於訪問遠程主機並執行命令;
- 通過
系統管理->全局工具配置來進行全局工具的配置,這裏新增了maven的安裝配置;
- 在
系統管理->系統配置中添加全局ssh的配置,這樣Jenkins使用ssh就可以執行遠程主機上的Linux腳本了:
- 需要注意的是這裏的服務器賬號密碼要在
系統管理->管理管理中進行配置才能選擇,此處選擇為全局
- 然後選擇
添加憑據,輸入需要遠程訪問的服務器賬號密碼即可。
一鍵部署SpringBoot項目
接下來就以我的mall電商實戰項目為例,來講解下如何使用Jenkins一鍵部署SpringBoot項目。
執行腳本準備
- 首先我們需要把遠程執行的腳本準備好,腳本文件都存放在了
mall項目的/document/sh目錄下,項目地址:https://gitee.com/macrozheng/mall
- 將所有腳本文件上傳到Linux服務器的
/mydata/sh目錄下,並修改為可執行文件;
Jenkins中創建任務
接下來我們將通過在Jenkins中創建任務來實現mall項目的自動化部署。
mall-admin
由於各個模塊的創建任務都大同小異,下面將詳細講解mall-admin模塊任務的創建,其他模塊將簡略講解。
- 首先我們選擇
構建一個自由風格的軟件項目,然後在源碼管理部分配置其Git倉庫地址:https://gitee.com/macrozheng/mall
- 之後在
構建步驟部分增加一個構建步驟,構建mall項目中的依賴模塊,構建的POM路徑為${WORKSPACE}/pom.xml;
# 只install mall-common,mall-mbg,mall-security三個模塊
clean install -pl mall-common,mall-mbg,mall-security -am
- 依賴項目構建不支示意圖如下;
- 再增加一個構建步驟,單獨構建並打包
mall-admin模塊,構建的目標為clean package,構建的POM路徑為${WORKSPACE}/mall-admin/pom.xml;
- 再增加一個構建步驟,通過遠程SSH去執行
mall-admin的運行腳本,執行命令為/mydata/sh/mall-admin.sh;
- 點擊保存,完成
mall-admin的任務創建,之後在任務列表裏點擊運行即可部署;
- 運行成功後,即可訪問
mall-admin的API文檔,訪問地址:http://192.168.3.101:8080/swagger-ui/
- 然後訪問下mall項目後台管理系統的前端測試下功能,訪問地址:http://192.168.3.101/admin/
mall-portal
mall-portal和mall-admin創建任務方式基本一致,只需修改構建模塊時的pom.xml文件位置和SSH執行腳本命令即可。
- 我們可以直接從
mall-admin模塊的任務複製一個過來創建;
- 修改構建步驟第二步中的
pom.xml文件位置及第三步的SSH執行命令即可;
- 運行成功後,即可訪問mall-portal的API文檔,訪問地址:http://192.168.3.101:8085/swagger-ui/
- 然後訪問下mall項目前台商城系統的前端測試下功能,訪問地址:http://192.168.3.101/app/
mall-search
- 修改構建步驟第二步中的
pom.xml文件位置及第三步的SSH執行命令即可;
- 運行成功後,即可訪問mall-search的API文檔,訪問地址:http://192.168.3.101:8081/swagger-ui/
總結
使用Jenkins來部署SpringBoot項目還是非常方便的,只要在任務中配置好構建的步驟,然後點擊運行按鈕就可以實現一鍵部署了,還可以有效避免手敲命令部署上線帶來的坑,感興趣的小夥伴可以嘗試下!
項目地址
https://github.com/macrozheng/mall