持續維護地址:http://jaylin.wang/2016/deplo...html
修改代碼,打包,上傳,重啓... 大把的時間花費在這些重複無味的工做上。筆者與當前主流的價值觀保持一致:咱們應該把時間花費在更有意義的事情上。咱們能夠嘗試藉助一些工具,讓這些重複機械的工做交給計算機去完成,這也是咱們作軟件開發的核心思想。java
借用 Jenkins 持續集成重複工做是一個很不錯的選擇。git
研究 Jenkins 的最終目的是解決公司中 Java Web 項目的自動化部署,公司項目自己是由幾個服務,一個 API 項目以及不一樣客戶端組,但願部署到不一樣服務器。初次使用 Jenkins 應用於現有的項目,通常規律是這樣的:第一次老是困難的,困難的事情結合困難的事情就叫難上加難,咱們須要先把問題化小。筆者最終將問題暫時轉化爲以下問題:github
基於 Maven 構建的 Java Web 項目,使用 Jenkins 部署到另外一臺機器上。web
<!-- more -->服務器
maven
構建的項目git
服務器筆者已將這次工做的項目提交至 Github(項目名稱是 testweb,項目地址),並提早整理了兩篇工具安裝及使用的教程: 進程管理工具Supervisor的安裝及使用,Jenkins的安裝及部署。java-web
Jenkins 須要具有的插件:Publish Over SSH
,Maven Integration plugin
,Git plugin
ssh
進入 主界面 > 系統管理 > Global Tool Configuration 配置構建所需的 Maven 執行環境,Java 運行環境,Git 執行環境,所涉及的 JAVA_HOME
、 Git executable
、MAVEN_HOME
的內容與 Jenkins 運行機器配置同步。maven
進入 主界面 > 系統管理 > 系統設置 編輯 Publish over SSH 配置項:ide
其中,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
進入 主界面 > 新建 建立新的部署項,咱們選擇構建一個Maven項目,作如下配置:
基本配置包括項目的名稱,項目簡介
咱們源碼來源是遠程 git 倉庫,選擇 git ,而後填入項目的 git 地址
咱們的 JavaWeb 項目是基於 Maven 構建,因此咱們須要填入 Maven 構建的 root pom 地址
構建後的操做是部署到其餘服務器的關鍵步驟,項目最終配置以下:
將 Source files 傳輸到 SSH Server,刪除 Remove prefix 前綴,而後在 SSH Server 執行 Exec command。
進入 項目面板,點擊當即構建,開始一次構建任務,項目面板效果以下:
確保最終構建是藍色,若是是紅色或者黃色,咱們就須要進入構建日誌,排查問題了
想辦法提升本身的工做效率,多一點陪伴家人和朋友的時間