jenkins + svn + mvn + tomcat搭建CI服務

廢話很少說,上步驟。web

環境:shell

  • centOS6.5
  • jenkins-1.651.2-1.1.noarch.rpm
  • jdk1.8
  • tomcat7
  • svn
  • mvn3.3.9

以上環境準備你們可自行google或baidu安裝,我主要就講講如何整合成一個CI服務。瀏覽器

------------------------------------------------分隔線 ⊙﹏⊙‖∣----------------------------------------------------------tomcat

1,啓動jenkins,我已作成服務,所以直接service jenkins start就好了。啓動成功後能夠看到以下 信息:bash

說明啓動沒有問題,咱們來訪問看看,直接瀏覽器上輸入http://你jenkins那臺主機的ip:8080/,jenkins默認端口8080,自已能夠改,只要不衝突。看到以下信息就訪問成功:服務器

2,jenkins初始配置app

咱們將看到以下信息:ssh

初始時有默認參數,可不用更改,默認就好,咱們主要來配置JDK,MAVEN,Jenkins Location,Publish over SSH這三個配置項。webapp

1)點JDK安裝,按照實際狀況來填寫參數。個人參數以下:maven

2)點Maven安裝,一樣按你實際狀況來填。個人參數以下:

3)配置Jenkins Location,一樣按你實際狀況來填。個人參數以下:

這裏說下Jenkins URL,這個地址其實就是你在瀏覽器訪問Jenkins服務的地址,你是怎麼訪問的就怎麼填。

4)配置Publish over SSH,這是個插件,用途很大,能夠在jenkins中直接經過SSH服務來執行遠程主機的腳本。咱們分兩步來搞:

  1. 首先安裝這個Publish over SSH插件
  2. 配置這個Publish over SSH插件

第一步:安裝Publish over SSH插件十分簡單,以下圖:

進入插件管理頁面中,咱們選擇這個插件,再安裝它。

裝好後,咱們能夠在「已安裝」tab頁中看到這個插件,以下:

第二步:配置Publish Over SSH插件,仍是去「系統管理--系統設置」裏面配置,個人配置以下:

    

說明下SSH Server項的幾個參數意思:

Name:隨意寫,你自已懂就行

Hostname:SSH服務器的地址

Username:SSH的賬號

Remote Directory:這個比較重要,遠程目錄(Remote Directory)是幹嗎的,它是用來存放經過SSH執行腳本後生成的文件所存放的目錄,

我這裏寫/my_bak意思是在SSH服務器根目下放我經過執行腳本(publish.sh這個腳本是用來備份和啓動tomcat用的,後文會寫出這個腳本)生成一些備份文件所在目錄,

因此必定要先自已建立好。

配好後,點Test Configuration按鈕測試下,成功以下 :

以上都配置完成後,點保存就行了。

上面作的這些都是基礎配置,咱們開始搞一個項目吧。

------------------------------------------------分隔線 ⊙﹏⊙‖∣--------------------------------------------------------------------------

1,搞個maven項目,取名爲my_project1

    

2,開始配置這個項目,主要配置 源碼管理,  Build, SSH Publishers這三個。源碼固然是構建maven項目時要用的,源碼是放在svn上的,因此這兩個必定得配對好。

第一,項目名稱以下,不用管自動就有,以下:

    

第二,配置源碼管理,以下:

選Subversion方式,填svn地址,個人是,其餘默認就行。

第三,配置Build,以下:

 

第四,配置SSH Publishers,這個重點,我是結合shell腳原本搞的自動備份war包,自動上傳war到tomcat webapp目錄下,自動重啓tomat的。

因此這裏是須要一個腳本的,咱們命名爲publish.sh,這個腳本咱們下面要配置的。源碼以下:

#!/bin/bash
#defined 
TOMCAT_HOME="/opt/tomcat8083"
TOMCAT_PORT=8083
PROJECT="$1"
#param validate
if [ $# -lt 1 ]; then  
  echo "you must use like this : ./publish.sh <projectname> [tomcat port] [tomcat home dir]"  
  exit  
fi 
if [ "$2" != "" ]; then
   TOMCAT_PORT=$2
fi
if [ "$3" != "" ]; then
   TOMCAT_HOME="$3"
fi
#shutdown tomcat
"$TOMCAT_HOME"/bin/shutdown.sh
echo "tomcat shutdown"
#check tomcat process
tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
echo "current :" $tomcat_pid
while [ -n "$tomcat_pid" ]
do
 sleep 5
 tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
 echo "scan tomcat pid :" $tomcat_pid
done
#publish project
echo "scan no tomcat pid,$PROJECT publishing"
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT*
cp /my_bak/$PROJECT*.war "$TOMCAT_HOME"/webapps/$PROJECT.war
#bak project
BAK_DIR=/my_bak/bak/$PROJECT/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war
#remove tmp
rm -rf /my_bak/$PROJECT*.war
#start tomcat
"$TOMCAT_HOME"/bin/startup.sh
echo "tomcat is starting,please try to access $PROJECT console url"

上面的shell按照自已實際來定。

有了這份shell腳本,咱們就能夠配置SSH Publishers了,以下 :

參數說明下:

Source files:war包所在路徑,這裏是相對,也能夠絕對路徑

Remove prefix:發佈到tomcat webapp目錄下時不帶war包的父級目錄,只拷貝單獨的war包,因此要移除掉war的目錄

Exec command:執行上面的那段shell,shell是能夠傳參數的,因此這裏是指定shell腳本所在路徑和要傳的參數,按自已實際來填。

好了,到這裏最基本的配置已OK了,咱們能夠試下水了。

-------------------------------------------------------------------------------------------------------------------------開始試水--------------------------------------

回到jenkins管理端首頁,咱們能夠看到剛纔創建的maven項目

點「當即構建」,咱們能夠看到頁面上有信息輸出,以下:

    

紅色框中部分咱們能夠看到maven install成功了!!!

經過jenkins的publish over ssh插件也成功執行了ssh服務器上的shell腳本,咱們看看tomcat有沒有項目部署上去

能夠看到部署上去且已啓動解壓了。

到這裏一個簡單的配置完成。不正之處請原諒,咱們共同探索jenkins更高級的功能。

相關文章
相關標籤/搜索