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

持續維護地址:http://jaylin.wang/2016/deplo...html

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

借用 Jenkins 持續集成重複工做是一個很不錯的選擇。git

研究 Jenkins 的最終目的是解決公司中 Java Web 項目的自動化部署,公司項目自己是由幾個服務,一個 API 項目以及不一樣客戶端組,但願部署到不一樣服務器。初次使用 Jenkins 應用於現有的項目,通常規律是這樣的:第一次老是困難的,困難的事情結合困難的事情就叫難上加難,咱們須要先把問題化小。筆者最終將問題暫時轉化爲以下問題:github

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

<!-- more -->服務器

部署準備

  • 在本地測試經過,能夠經過 maven 構建的項目
  • 項目提交至遠程 git 服務器
  • Java Web 項目的運行服務器上具備項目所須要的運行環境
  • Supervisor 進程管理工具

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

Jenkins 配置

  • Jenkins 插件依賴

Jenkins 須要具有的插件:Publish Over SSH,Maven Integration plugin,Git pluginssh

  • 構建環境配置

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

  • SSH 配置

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

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

執行構建

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

項目面板

確保最終構建是藍色,若是是紅色或者黃色,咱們就須要進入構建日誌,排查問題了

想辦法提升本身的工做效率,多一點陪伴家人和朋友的時間

相關文章
相關標籤/搜索