Jenkins實現一鍵部署maven項目

git插件安裝

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

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

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...git

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

$ 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文件刪除。apache

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

圖片描述

建立鏈接git的credentials,建立請參考Jenkins控制檯slave配置segmentfault

maven安裝配置

接下來安裝mavenapi

$ 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

解壓tomcat

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

進入菜單「jenkins>新建」服務器

圖片描述

配置jdk和maven settings.xml路徑

圖片描述

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

進入菜單「jenkins>新建>構建一個自由風格的軟件項目」

圖片描述

進入配置,根據狀況配置歷史構建保存的天數和個數,指定jdk以及執行該job的機器,這裏指定了master

圖片描述

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

圖片描述

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

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

圖片描述

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

圖片描述

第一個job完成

建立下載war包到slave節點並完成tomcat重啓的job

進入菜單「jenkins>新建」,選擇構建一個多配置項目

圖片描述

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

圖片描述

配置須要部署的slave節點

圖片描述

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

圖片描述

下載完成後,執行發佈腳本。先從工做空間取出war包到tomcat的war存放目錄,我這裏配置的是/www/web,同時作一個備份。而後先關閉tomcat,保證殺死tomcat進程,而後刪除tomcat root目錄,再啓動tomcat

圖片描述

最後一樣能夠配置job執行失敗的郵件通知

郵件通知配置

須要先安裝插件Email Extension Plugin,進入菜單「jenkins>系統管理>系統設置>郵件通知>高級」,設置用於發送郵件的郵箱和密碼

圖片描述

整過部置過程結束

注意點

  1. 部署過程涉及到的文件和程序都應該爲jenkins用戶所擁有或者有相關權限,否則會報權限錯誤;

  2. slave 80端口只能由root佔用,因此這裏tomcat用8080啓動,而後在root安裝nginx,將請求轉發到8080,後續有時間再寫寫相關實踐。

相關文章
相關標籤/搜索