Jenkins + Gradle + Docker 自動化部署 SpringBoot 項目到遠程服務器


一、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 項目中配置文件中的端口一致,否則外部無法訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM