天天看點

Jenkins實作一鍵部署maven項目

git插件安裝

進入菜單"jenkins>系統管理>管理插件>可選插件",在右側搜尋欄輸入"Git Plugin",也可以搜尋安裝"GitHub plugin"或"SVN Publisher plugin"

但事實上我下載下傳安裝時一直報錯

java.io.IOException: Could not find JSON in http://updates.jenkins-ci.org/update-center.json?id=default&version=2.16
           

折騰很久未能解決,最後自已到http://mirror.xmission.com/je...下載下傳需要的插件。參考jenkins wiki:https://wiki.jenkins-ci.org/d...。

下載下傳到hpi檔案到jenkins主目錄下的plugins,同時要下載下傳依賴插件,例如git plugin依賴bouncycastle-api和git client(在控制台安裝失敗時,可以看到要安裝的依賴插件),才能安裝成功。

$ cd /var/lib/jenkins/plugins
$ wget http://mirror.xmission.com/jenkins/plugins/git/latest/git.hpi
           

然後重新開機jenkins,登入jenkins,進入“jenkins>系統管理>管理插件>已安裝”,可以看到Git plugin已成功安裝。再重新進test-build-job配置,源碼管理已經出來git。最後回到plugins目錄把.hpi檔案删除。

接下來将jenkins master的公鑰添加到git伺服器上,公鑰在/var/lib/jenkins/.ssh/id_rsa.pub,生成公鑰可參考Jenkins slave節點機器配置

Jenkins實作一鍵部署maven項目

建立連接配接git的credentials,建立請參考Jenkins控制台slave配置

maven安裝配置

接下來安裝maven

$ cd /usr/local
$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
           

解壓

$ tar -zvxf apache-maven-3.3.9-bin.tar.gz
           

進入菜單“jenkins>建立”

Jenkins實作一鍵部署maven項目

配置jdk和maven settings.xml路徑

Jenkins實作一鍵部署maven項目

建立一個在java master上用maven打包項目的job

進入菜單“jenkins>建立>建構一個自由風格的軟體項目”

Jenkins實作一鍵部署maven項目

進入配置,根據情況配置曆史建構儲存的天數和個數,指定jdk以及執行該job的機器,這裡指定了master

Jenkins實作一鍵部署maven項目

git配置,填寫git項目位址和上一節提到的credentials,我要部置的項目分支是master

Jenkins實作一鍵部署maven項目

maven配置,以及maven建構完成後,執行腳本将war包放到目錄/var/lib/jenkins/userContent,插件Copy To Slave Plugin會從該目錄下載下傳war包到slave

腳本還包含一個備份功能,将userContent下的war包名稱添加日期字尾進行重命名,同時檢查war包個數,超過10個時删除最舊的那個

Jenkins實作一鍵部署maven項目

最後在建構完成後,配置要觸發的另一個job,這個job用來下載下傳master機器的war包到和個slave節點,并執行tomcat重新開機。同時指定建構失敗後要發送郵件的郵箱,以空格隔開

Jenkins實作一鍵部署maven項目

第一個job完成

建立下載下傳war包到slave節點并完成tomcat重新開機的job

進入菜單“jenkins>建立”,選擇建構一個多配置項目

Jenkins實作一鍵部署maven項目

進入配置,general和上一個job類似

Jenkins實作一鍵部署maven項目

配置需要部署的slave節點

Jenkins實作一鍵部署maven項目

指定下載下傳war包的目錄,這塊需要先安裝插件copy-to-slave

Jenkins實作一鍵部署maven項目

下載下傳完成後,執行釋出腳本。先從工作空間取出war包到tomcat的war存放目錄,我這裡配置的是/www/web,同時做一個備份。然後先關閉tomcat,保證殺死tomcat程序,然後删除tomcat root目錄,再啟動tomcat

Jenkins實作一鍵部署maven項目

最後同樣可以配置job執行失敗的郵件通知

郵件通知配置

需要先安裝插件Email Extension Plugin,進入菜單“jenkins>系統管理>系統設定>郵件通知>進階”,設定用于發送郵件的郵箱和密碼

Jenkins實作一鍵部署maven項目

整過部置過程結束

注意點

  1. 部署過程涉及到的檔案和程式都應該為jenkins使用者所擁有或者有相關權限,不然會報權限錯誤;
  2. slave 80端口隻能由root占用,是以這裡tomcat用8080啟動,然後在root安裝nginx,将請求轉發到8080,後續有時間再寫寫相關實踐。