利用Jenkins實現JavaWeb項目的自動化部署


修改代碼,打包,上傳,重啟... 大把的時間花費在這些重復無味的工作上。筆者與當前主流的價值觀保持一致:我們應該把時間花費在更有意義的事情上。我們可以嘗試借助一些工具,讓這些重復機械的工作交給計算機去完成,這也是我們做軟件開發的核心思想。

借用 Jenkins 持續集成重復工作是一個很不錯的選擇。

研究 Jenkins 的最終目的是解決公司中 Java Web 項目的自動化部署,公司項目本身是由幾個服務,一個 API 項目以及不同客戶端組,希望部署到不同服務器。初次使用 Jenkins 應用於現有的項目,一般規律是這樣的:第一次總是困難的,困難的事情結合困難的事情就叫難上加難,我們需要先把問題化小。筆者最終將問題暫時轉化為如下問題:

基於 Maven 構建的 Java Web 項目,使用 Jenkins 部署到另一台機器上。

<!-- more -->

部署准備

  • 在本地測試通過,可以通過 maven 構建的項目

  • 項目提交至遠程 git 服務器

  • Java Web 項目的運行服務器上具有項目所需要的運行環境

  • Supervisor 進程管理工具

筆者已將此次工作的項目提交至 Github(項目名稱是 testweb,項目地址),並提前整理了兩篇工具安裝及使用的教程: 進程管理工具Supervisor的安裝及使用Jenkins的安裝及部署

Jenkins 配置

  • Jenkins 插件依賴

Jenkins 需要具備的插件:Publish Over SSH,Maven Integration plugin,Git plugin

  • 構建環境配置

進入 主界面 > 系統管理 > Global Tool Configuration 配置構建所需的 Maven 執行環境,Java 運行環境,Git 執行環境,所涉及的 JAVA_HOME Git executableMAVEN_HOME 的內容與 Jenkins 運行機器配置同步。

  • SSH 配置

進入 主界面 > 系統管理 > 系統設置 編輯 Publish over SSH 配置項:

其中,Key 的填入值是運行 Jenkins 用戶對應的 /home/{username}/.ssh/id_rsa

項目運行進程配置

使用 maven 構建后,項目可以通過 java -jar {projectName}.war 運行,我們使用 Supervisor 確保此命令已守護進程方式運行。在 Supervisor 子進程配置文件下加入 testweb.conf,內容大致如下:

[program:testweb] command=java -jar /{ssh配置的目錄}/testweb.war stdout_logfile={日志輸出目錄}/testweb.log user=root autostart=true autorestart=true startsecs=30 startretries=5

創建 Jenkins 集成部署項

進入 主界面 > 新建 創建新的部署項,我們選擇構建一個Maven項目,做以下配置:

  • 項目基本配置

基本配置包括項目的名稱,項目簡介

  • 項目源碼來源

我們源碼來源是遠程 git 倉庫,選擇 git ,然后填入項目的 git 地址

  • 構建觸發器、構建環境、前置構建工作暫時不用修改,保持默認即可

  • build 配置

我們的 JavaWeb 項目是基於 Maven 構建,所以我們需要填入 Maven 構建的 root pom 地址

  • 構建后的操作

構建后的操作是部署到其他服務器的關鍵步驟,項目最終配置如下:

將 Source files 傳輸到 SSH Server,刪除 Remove prefix 前綴,然后在 SSH Server 執行 Exec command。

執行構建

進入 項目面板,點擊立即構建,開始一次構建任務,項目面板效果如下:

確保最終構建是藍色,如果是紅色或者黃色,我們就需要進入構建日志,排查問題了


免責聲明!

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



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