1. 程式人生 > >SVN + Maven + jenkins 實現自動化構建

SVN + Maven + jenkins 實現自動化構建

搭建環境說明:

SVN 在window下 執行在 192.168.74.1
jenkins 在 linux下 執行在 192.168.58.135 版本1.65
Maven 在 linux下 執行在 192.168.58.135 版本3.0.4
tomcat7.0.4
遠端主機 192.168.5.106
tomcat7.0.4
JDK 1.8.0_05

1 將jenkins.war 上傳到192.168.58.135 /usr/local/tomcat8.5.9/webapps 下
通過啟動tomcat 訪問jenkins
或者可以使用 java -jar jenkins.war 命令

2 新增環境變數,修改工作目錄
建立 /opt/jenkins ,
在/etc/profile中新增環境變數export JENKINS_HOME=/opt/jenkins,
source /etc/profile 使修改生效
如果不新增環境變數JENKINS_HOME,則預設工作目錄使用者工作目錄下在:/root/.jenkins

4 新增外掛
jenkins是一個可以新增外掛的整合工具
點選左側的“系統管理”—-“管理外掛” —–“可選外掛” 選擇需要安裝的外掛
如: delpoy to container plugin
publish over SSH
Maven Integration plugin
SSH plugin
SVN Publisher plugin
Hudson SCP publisher plugin
點選”直接安裝” —-然後安裝完成重啟

或者選擇“高階”選項卡中—上傳外掛

5 系統設定
點選左側的“系統管理”—-“系統設定”

Maven Configuration
這裡寫圖片描述

jdk 安裝
這裡寫圖片描述

maven 安裝
這裡寫圖片描述

這裡寫圖片描述

jenkins的訪問地址(預設自己生成)
這裡寫圖片描述

SVN的配置
這裡寫圖片描述

Publish over SSH
這裡寫圖片描述

Passphrase —— 與下面Username—root 的密碼
Name – —– 192.168.5.106_ssh 為遠端主機的名稱
Hostname —-192.168.5.106 遠端主機的ip
Username —–登陸遠端主機的使用者名稱
Remote Directory ——指定jenkins 在遠端主機上的部署目錄

點選“test configuration ” 測試下配置遠端主機是否能通訊

6 新建專案
點選左邊“新建”—–輸入“item名稱” —-選擇“構建一個maven專案”

配置遠端倉庫:主要目的是從遠端倉庫拉取程式碼下來
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

配置maven 的目標:意思是使用maven進行 clean 、complier、package 、install 。
這裡寫圖片描述

點選“高階” —-更改POM的預設地址pom.xml
這裡寫圖片描述

/opt/jenkins/jobs/mymaven_myapptest3/workspace/myapptest1/target/myapptest1
/opt/jenkins 表示jenkins工作目錄
jobs/mymaven_myapptest3 表示jenkins管理mymaven_myapptest3專案的目錄
workspace 表示maven等外掛的工作目錄

send files or execute commands over SSH
這裡寫圖片描述

SSH Server Name :要連線的遠端主機名
Transfer Set Source files : jenkins所在的主機要傳送的原始檔是在這個路徑下的 myapptest1/target/myapptest1.war war包

Remove prefix:在傳送war 包到遠端主機時需要去掉的字首
Remote directory : 遠端目錄預設不填寫就是之前在“系統設定”中設定的遠端主機的目錄

Exec command: 在遠端主機上執行的shell 指令碼

構建專案:這裡表示構建專案使用maven的話 使用哪個maven配置檔案:
(這裡的clean和package 與 前面【配置maven 的目標】裡面的一樣的意思,至於執行哪個?測試了下是執行【配置maven 的目標】中的goals)

這裡寫圖片描述

到此新增專案完成

這裡寫圖片描述

**注意: 一定要注意如下的相對路徑
Transfer Set Source files
Remove prefix
Root POM**

7 說明下 auto_deploy.sh 指令碼

#!/bin/bash
log_time=`date +%Y%m%d%H:%M:%S`


#base parameter
tomcat_home=/usr/local/tomcat7.0.4
tomcat_port=8080
shell_environment=/bin/bash
war_dir=/opt/jenkins
war_name=myapptest1.war


#update  environment
echo   "*************${log_time}*********"
echo   "*************start  update  environment*********"
export JAVA_HOME=/usr/java/jdk1.8.0_05
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export TOMCAT_HOME=/usr/local/tomcat7.0.4
export CATALINA_BASE=/usr/local/tomcat7.0.4
export CATALINA_HOME=/usr/local/tomcat7.0.4

sleep  3


#update  server
echo   "*************start update server**********"
check_tomcat_status(){
    netstat  -nlpt|grep  ${tomcat_port} > /dev/null
    t=$?
    if [ $t -eq 0  ];then
       echo "tomcat is running  port is ${tomcat_port}"
       echo  "shutdown  tomcat......"
       echo  ">>>>>shutdown  tomcat  start >>>>>"
       ${shell_environment}  ${tomcat_home}/bin/shutdown.sh
       echo  ">>>>>shutdown  tomcat  end >>>>>"
       sleep  5
    elif [ $t  -ne  0 ];then
       echo "tomcat is poweroff"
       ${shell_environment} ${tomcat_home}/bin/shutdown.sh
       sleep 5
    fi
}

check_tomcat_status

deploy_location=${tomcat_home}/webapps

dirHaveWar=`ls ${war_dir}|grep ${war_name}|wc -l`
if [ ${dirHaveWar} -eq 0  ]; then
   echo  "%%%%%%%%%%%%%%   not  have   war  %%%%%%%%%%%%"
else
  echo  " ......../opt/jenkins   have  war......."
fi

isHaveWar=`ls ${deploy_location}|grep ${war_name}|wc  -l`   
if [ ${isHaveWar} -eq 0  ];then
   echo  "<<<<<< ${deploy_location}/${war_name} is  empty >>>>>"
   cp  ${war_dir}/${war_name}   ${deploy_location}
   echo  "*****cp  ${war_name}  to  ${deploy_location}******"
   sleep  3
else
   echo  "<<<<< find   ${deploy_location}/${war_name} >>>>>"
   rm  ${deploy_location}/${war_name}
   cp  ${war_dir}/${war_name}   ${deploy_location}
   echo  "*****cp  ${war_name}  to  ${deploy_location}*****"
   sleep  3
fi

echo " #####  deploy  ${war_name}  over  #####"



#reboot  tomcat
echo  " reboot  tomcat  start  .........."
${shell_environment}  ${tomcat_home}/bin/startup.sh
echo  "  reboot  tomcat  end  ........"
echo "************************ deploy war package into container Successlly  **********************************"

8 構建專案

點選“立即構建” 完成專案的構建
這裡寫圖片描述

在構建歷史中可以檢視構建的日誌:
如:#21 —– “Console Output”—-控制檯輸出
這裡寫圖片描述