[啤酒]滿懷憂思,不如先幹再說!做幹淨純粹的技術分享!歡迎評論區或私信交流!
軟體系統開發最後都需要打包到伺服器上線,每次手動打包,再上傳到伺服器的動作都是重複而枯燥的,如果我們的代碼送出到git倉庫後可以自動部署到伺服器就非常哇塞,那麼Jenkins就可以幫助我們實作這自動化的工作。
技術背景
- 通過maven建立的springboot項目
- 代碼通過gitee管理,測試完成後通過IDEA送出到gitee上
- 在阿裡雲伺服器中配置自動化部署環境,其中Jenkins檢測到有代碼送出到分支則自定拉取并執行腳本打包項目
實作流程
- 使用Jenkines需要在伺服器上安裝配置好JDK、git、maven
- 在伺服器上安裝,啟動并通路Jenkines
- 配置Jenkines環境和git倉庫關聯
- 設定項目建構腳本
- 送出代碼測試是否打包完成
下載下傳安裝Jenkines
在任意的Linux系統上【可以是虛拟機,也可以是購買的雲伺服器】通過 https://www.jenkins.io/ 通路Jenkins官網下載下傳,是一個war包
上傳到伺服器上,通過以下指令啟動:
nohup java -jar jenkins.war --httpPort=8888 > jenkins.log 2>&1 &
- nohup:表示需要背景運作,會輸出一個PID【程序号】;
- --httpPort=8888:設定占用8888端口号;
- > jenkins.log 2>&1 &:表示将日志輸出到目前 jenkins.log 檔案中,并且背景運作;
上邊的啟動方式大概會占用2G左右記憶體,可以使用以下指令設定JVM記憶體占用:
nohup java -Xms1024m -Xmx1024m -XX:PermSize=512M -XX:PermSize=1024M -jar jenkins.war --httpPort=8888 > /var/opt/jenkins/jenkins.log 2>&1 &
注意:實際的war上傳位置,日志輸出檔案路徑和JVM參數可以根據個人情況而定
通路Jenkins
此時就可以使用浏覽器通過 ip:port 通路Jenkins。首次進入需要建立一個使用者,點選儲存并完成即可
配置Jenkines
登陸Jenkines後點選左側 建立項目
設定項目名稱和類型,如果你之前配置過也可以克隆一個
配置JDK和git倉庫
此處需要你事先安裝好JDK和Git,這裡我得代碼使用gitee平台托管,選擇gitee
配置gitee倉庫位置
直接從gitee上指派倉庫連結,并且填寫倉庫賬号和密碼
如果出現下方的 無權通路,則需要配置gitee使用者,或者使用者名和密碼寫錯了
設定拉取政策
點選 新增,設定逾時10分鐘
配置觸發器
建構觸發器,配置通過gitee倉庫的 webhook 觸發,此處的URL需要配置在gitee倉庫中,一會可以過來複制
選擇觸發政策,這裡勾選推送代碼和建立推送請求時時觸發,按自己的實際情況選擇觸發時機
接下來配置分支,也就是監控哪些分支變化和排除哪些分支變化,此處配置的是master分支變化,排除掉dev分支
生成 webhook 密碼,也是在gitee倉庫中配置時需要,一會過來複制
配置建構項目
此處就是把代碼拉取下來後要幹什麼事情,首先根據pom.xml檔案執行以下腳本,maven的打包指令應該都懂
clean package -Dmaven.test.skip=true
再配置任務腳本,執行以下指令可以将上邊指令打的包複制到指定目錄中,結束掉之前的java程序并啟動新的java程序完成服務釋出
自動部署腳本
該腳本會在項目都建完成之後運作。其中啟動的程序會在腳本執行完成之後全部殺死,如果在該腳本中啟動了程式不希望被殺掉,則添加 BUILD_ID=dontKillMe。其中dontKillMe可以删掉
#!/bin/bash
echo "建構XXX項目"
JAR_PATH="/var/opt/shitiantian"
PROJECT_NAME="tian"
echo "關閉原程序"
# 找到之前項目jar包程序ID并殺死
pid=`ps -ef | grep $PROJECT_NAME.jar | grep -v grep | awk '{print $2}'`
echo $pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
echo "停止運作"
# 将Jenkines打的包移動到指定目錄
mv ${WORKSPACE}/springboot-project/target/$PROJECT_NAME.jar $JAR_PATH/$PROJECT_NAME.jar
# 背景運作項目jar包
BUILD_ID=dontKillMe
nohup java -jar $JAR_PATH/$PROJECT_NAME.jar > $JAR_PATH/$PROJECT_NAME.log 2>&1 &
echo "success"
gitee配置
我這裡使用gitee企業版,個人版也是同樣的操作,進入到倉庫中選擇 倉庫設定
點選 webhook 建立 webhook
配置Jenkines項目路徑和密碼,進行關聯,此處的事件可以選擇自己需要的。
注意:此時你伺服器上的Jenkines端口必須可以通路到,如果是阿裡雲伺服器到安全組中開放對應端口,如果自建伺服器記得設定防火牆,非常重要
當送出代碼時則會執行任務,在Jenkines首頁會看到對應的任務執行
檢視建構腳本
如果找不到jenkines打的jar包或者war包,則可以從控制台輸出的編譯打包資訊中擷取,如下圖
此時伺服器上就已經有這個程序在啟動了
這就是通過Jenkines實作簡單的自動化部署,非常實用,趕緊使用起來吧,如果有任何問題歡迎評論區交流