一、Jenkins 下載安裝
Jenkins 的下載和安裝見這篇文章:Jenkins持續集成環境部署
另外,有以下幾點需要注意一下:
漢化顯示不全的問題:
安裝 Locale Plugin 和 Localization: Chinese (Simplified) 插件,然后在系統設置中設置語言:
很奇怪,這里配置成 zh_US 反而全部顯示為中文,配置為 zh_CN 則有一部分顯示為中文,可能和版本有關。
權限問題:
在使用 Jenkins 的時候經常會遇到權限問題,我們進行如下配置:
在 系統管理 -> 全局安全配置 中,勾選如下兩個選項:
二、Publish Over SSH
在插件管理中安裝插件 Publish Over SSH
在系統管理 -> 系統配置中設置 Publish Over SSH,用於目標服務器的連接
三、設置全局全局工具配置
在 系統管理 -> 全局工具配置 當中設置 JDK、Git、Gradle 安裝路徑
注意:git 是要設置到執行程序那一層,不只是安裝目錄。這三個軟件都需要在對應的服務器上安裝並配置好環境變量。
四、新建任務
由於是 Gradle 項目,所以我們選擇 “構建一個自由風格的軟件項目
下面說幾個關鍵的配置點:
到達一定的天數或構建數目則自動廢棄前面的構建
設置項目代碼存放的地址和用戶名密碼,並指定需要構建的分支
構建觸發器,有定時、輪詢等情況。GitHub hook選項的意思是,檢測代碼有沒有更新,如果有更新則自動構建。但前提是:GitHub收到提交的代碼后要主動通知Jenkins,所以Jenkins所在服務器一定要有外網IP,並且還需要做一系列的配置,本文我們暫時不做詳細的介紹。
構建步驟選的是:執行 shell,由於我要打包的是 manager 模塊,所以先進入 manager 目錄。先執行 gradle clean 清除之前打的包,再執行 gradle build 命令重新打包。整個項目的代碼下載存放的路徑在服務器的:/root/.jenkins/workspace 目錄下,GradleTest 為我們在 Jenkins 中創建的構建任務名。
構建后操作選擇:Send build artifacts over SSH,將打好的 Jar 包發送到目標服務器指定的目錄下,然后根據命令生成鏡像,運行容器。
注意:生成鏡像的前提是目標服務器上已經安裝完成 docker 服務,基礎鏡像已經下載完成,dockfile已經正確編寫。
這樣我們一次構建就已經完成了 代碼下載、打包、停止並刪除目標服務器指定的容器、刪除鏡像、重新生成鏡像、啟動容器等步驟,通過這一系列的動作完成了整個SpringBoot的項目的環境部署。
通過 docker 命令查詢容器運行的日志可查看容器運行的情況,如下:
紅框部分為我們對 SpringBoot 項目進行請求時打印的日志。
附上創建鏡像的 dockfile 供大家參考:
FROM centos MAINTAINER Jack VOLUME /tmp ADD jdk-8u212-linux-x64.tar.gz /usr/local ADD manager-1.0.0-SNAPSHOT.jar /app.jar ENV JAVA_HOME /usr/local/jdk1.8.0_212 ENV PATH $JAVA_HOME/bin:$PATH ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV LANG C.UTF-8 EXPOSE 9187 ENTRYPOINT ["java","-jar","/app.jar"]
centos:基礎鏡像,需要從 docker 遠程倉庫下載到本地
添加了兩個包:JDK 和 應用程序的 Jar 包
EVN:配置 JDK 的環境變量和字符集
EXPOSE:暴露的端口,需要與 SpringBoot 項目中配置文件中的端口一致,否則外部無法訪問。