Jenkins+Maven+SVN+Nexus自動化部署代碼實例

本文接着上篇安裝jenkins,安裝相關插件,使用咱們公司持續集成的測試環境實例進行演示linux

========= 完美的分割線 ==========web

1.安裝jenkins的maven插件

若是要使用jenkins自帶的maven插件進行打包,須要安裝maven插件,較經常使用,不過我這邊使用的是服務器上已經安裝好的maven工具,因此該插件能夠不安裝shell

如下是經常使用的jenkins插件安裝方法:以maven插件爲例瀏覽器

進入jenkins的「系統管理」中的「插件管理」,選擇可選插件的選項卡(個人已經安裝好),查找關鍵字「Maven Integration」,以後勾選進行安裝,安裝完成,重啓應用便可緩存

# 操做步驟以下圖:tomcat

2.建立一個新的工程(project)

2.1.新建任務

1)選擇項任務稱和類型服務器

安裝完maven插件,重啓進入首頁,點擊新建任務,能夠看到選項菜單多出一個「構建一個maven項目」,以下圖:運維

鍵入一個項目名稱(testweb),選中「構建一個maven項目」,點擊確認便可maven

若是有已經存在的項目能夠將配置文件進行復制,能夠自動補全,以下圖:svn

複製項目能夠大大節省咱們構建一個完整項目集羣的時間

2.2.詳細配置任務細節

有多個選項卡供選擇

1)General選項卡

# 設置通常功能,註釋等

# 丟棄舊的構建,防止保留過多的代碼包影響服務器性能,能夠按照天數和代碼包個數進行保留

2)源碼管理選項卡

# 設置代碼的拉取設置

這裏選擇svn代碼庫,須要填入svn的連接,增長個認證用戶(建議對jenkins專門設置),

而後就是檢出的選項,默認是儘量使用update更新,爲了防止代碼更新衝突,我這裏設置老是全新檢出(會多耗費必定時間和性能)

3.構建選項卡

# 設置構建工程時須要執行的命令,這些命令就是在服務器中正常執行的

構建時直接選擇執行shell命令便可,而後將通常發佈項目代碼的腳本寫上來就能夠了,而後單擊保存

附上一個個人代碼發佈腳本供參考:

#!/bin/sh
################################################
# This script is made by zhaoshuai on 20170509.#
# for update coinnice web             #
# if you have any question please contact QQ  #
################################################
############# BEGIN ##############
TIME=$(date +%Y%m%d-%H%M)
TOMCAT_DIR=/usr/local/tomcat1
WEB_ROOT=/www.coinweb.com
CODEDIR=tempdir
. /etc/init.d/functions

# Determine whether the package.
if [ ! -f "$1" -o -z "$1" ] 
   then 
      sleep 1
      action "Code deployment ......" /bin/false
      echo "Please confirm the <*.war>" 
      exit 1
   else
      echo "The <$1> will be deployed"
fi
if [ ! -d "$TOMCAT_DIR$WEB_ROOT" ] 
   then 
      sleep 1
      action "The specified directory <$WEB_ROOT> does not exist" /bin/false
      echo "Please confirm the <$WEB_ROOT>" 
      exit 1
   else
      action "The specified directory <$WEB_ROOT> exist" /bin/true
fi

# Stop the web server.
echo " "
echo "====== Start stop web server ======"
ps -ef | grep "$TOMCAT_DIR" | grep -v grep | awk '{print $2}' | sed -e "s/^/kill -9 /g" | sh -
sleep 1
action "Stop the web server ......" /bin/true

# Backup the web server
echo " "
sleep 1
echo "====== Start backup web server ======"
/bin/mv $TOMCAT_DIR$WEB_ROOT ./$TIME
sleep 1
action "Backup old web code ......" /bin/true

# Update the web server
echo " "
sleep 1
echo "====== Start deploying new code ======"
if [ -d ./$CODEDIR ]
   then
      echo "The \"$CODEDIR\" is exist"
   else
      mkdir -p ./$CODEDIR
      echo "The \"$CODEDIR\" is created"
fi
/bin/cp ./$1 ./$CODEDIR
cd ./$CODEDIR
jar xf $1 && /bin/rm -f $1
cd ../
/bin/mv  $CODEDIR $TOMCAT_DIR$WEB_ROOT

/bin/mv $TOMCAT_DIR/logs/catalina.out /tmp/tomcat1-$TIME.log
/bin/rm -rf $TOMCAT_DIR/logs/*
/bin/rm -rf $TOMCAT_DIR/work/*

# www.coinweb.com
#/bin/cp -rf ./$TIME/WEB-INF/classes/*.properties  $TOMCAT_DIR$WEB_ROOT/WEB-INF/classes/

#echo "====== Code has been deployed ======"
sleep 1
action "The new code deployment ......" /bin/true

# Start web server
echo " "
sleep 1
echo "====== Start the web server ======"
$TOMCAT_DIR/bin/catalina.sh start
ps -ef | grep "$TOMCAT_DIR" | grep -v grep
sleep 1
action "Start the web server ......" /bin/true

# Open web logs
#echo " "
#sleep 1
#echo "====== Open web server logs ======"
#tail -f $TOMCAT_DIR/logs/catalina.out
################## END ###################

2.3.構建一個項目

配置完工程便可發佈項目代碼,這裏叫「構建工程」

單擊「當即構建」,會在左下角「構建歷史」標籤中產生一個項目構建的進度條,點擊圖中的閃爍的圓點能夠直接查看構建日誌

能夠在最開始看到正在構建這個項目的用戶,構建時的文件緩存目錄,時間,svn庫連接等

下面能夠看到,當前svn版本庫的代碼版本,能夠判斷是否更新到你提交的文件代碼等

開頭爲加號的就是咱們以前寫的shell命令

在往下的日誌

若是全部的命令均正常執行完畢在最下面能夠看到「Finished: SUCCESS」字樣,以下圖

不然就是「Finished: FAILURE」同時能夠看到是在哪一步處的錯方便排錯

至此,一個單純的jenkins構建項目的示例就完成了

3.注意信息:

1)建立的工程,配置文件在服務器的jenkins數據目錄下的job目錄中,以工程名testweb命名的目錄中「/data/jenkins/jobs/testweb/」

2)構建項目時的緩存目錄在數據目錄下的workspace中,「/data/jenkins/workspace」

3)通常來講jenkins代碼發佈平臺和tomcat站點運行的位置不在同一臺服務器須要考慮文件傳輸時的免密認證,本身作測試能夠將tomcat與jenkins放置於同一臺服務器

4)本文演示的是在整個持續集成平臺中運維工程師能夠操做的部分,如下操做須要與開發合做進行

構建Nexus私有庫導入某些jar文件,本文沒有展現

maven構建項目時須要用到的pom.xml配置文件

5)項目發佈完成後能夠在瀏覽器裏找到打好的war包,存儲位置在「工做空間」的「target」目錄裏

同時能夠再linux服務器的對應位置找到該代碼包

 

======= 完畢,呵呵呵呵 ======== 

相關文章
相關標籤/搜索