Jenkins 2.46.1
Centos 7.3
JDK 7
安裝jdk/maven/svn
在Jenkins所在的Linux機器安裝jdk和maven,步驟就不說了,下面是環境變量:
export JAVA_HOME=/usr/local/jdk1.7.0_65 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/tools.jar export PATH=$JAVA_HOME/bin:$PATH export M2_HOME=/usr/local/apache-maven-3.0.5 export PATH=$M2_HOME/bin:$PATH
注意:maven的conf/settings.xml配置應該是自己項目的,這里也省略了;
svn直接用yum安裝即可:
# yum install svn -y
安裝Jenkins插件
瀏覽器登錄Jenkins,進入插件管理,安裝下面三個插件:
Maven Integration plugin Subversion Plug-in Publish Over SSH
同時會有其他依賴的插件安裝,若有安裝失敗的就去http://updates.jenkins-ci.org/download/plugins下載后在“高級”那里上傳上來即可;
都安裝完成后重啟下Jenkins:
# systemctl restart jenkins
在Jenkins配置jdk/maven/svn
瀏覽器登錄Jenkins,進入“系統管理” -> “Global Tool Configuration”,配置jdk和maven后保存:


下面創建一個maven類型的任務(job):

(填入svn信息)

(添加svn用戶:輸入username和password即可)

(構建觸發器,H/5 * * * * 表示每5分鍾檢查一次,如果svn有更新就進行一次構建)

(maven參數)

最后點擊“保存”按鈕,然后會進入這個新建的任務頁面,點擊“立即構建”試試:
(第一次構建遇到過報錯:SVNAuthenticationException: svn: E170001: Authentication required for 'reps',進到配置里重新選一下svn用戶即可)

自動部署
自動檢測svn並構建仍然不夠,還需要自動部署和重啟;
首先需要配置Jenkins所在Linux到部署Linux的免密登錄,假設兩者ip分別為192.168.1.111和112,則在111上執行命令:
(命令1有交互按自己的需求填寫,簡單的就全部直接回車)
(命令2需要輸入112的root密碼)
# ssh-keygen -t rsa # ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.112
接着在瀏覽器,進入“系統管理” -> “系統設置”,配置SSH:

然后再這個SSH配置的下方增加112機器的配置:

下面進入前面新建的任務的配置中,在“增加構建后操作步驟”中選擇“Send build artifacts over SSH”:


強調一,目標文件,這里是任務路徑下的相對路徑,與瀏覽器中任務的工作空間看到的路徑一致;
強調二,傳輸到目標路徑,這個是“系統設置”中那個“遠程工作目錄”的相對路徑,比如這里就是把file.zip傳到/usr/local/assembly/;
保存后再次構建,構建完成后,在112機器上檢查:
# ll /usr/local/assembly/file.zip -rw-r--r-- 1 root root 25052989 Apr 15 15:53 /usr/local/assembly/file.zip
實現的效果:對這個maven工程,每五分鍾檢測svn,若有提交則構建並更新和重啟;
over
