一、環境搭建
1、安裝所需軟件
- Jdk
- Maven
- Jenkins
- Tomcat
- Xshell
- git
以上軟件去官網下載,比較簡單,不一一描述了
2、安裝所需的jenkins插件
- Git plugin
- GitHub plugin git插件,download代碼至本地
- Mailer Plugin 郵件插件
- Publish Over SSH 遠程訪問Linux服務器插件
打開jenkins—》系統管理—》管理插件—》可選插件,輸入要下載的插件,勾選直接安裝,安裝完成頁面勾選重啟,插件安裝成功

3、配置jdk\maven\tomcat環境變量
路徑:我的電腦---》屬性—》高級系統設置—》環境變量
- Jdk環境變量配置
JAVA_HOME: C:\Program Files\Java\jdk1.8.0
CLASSPATH: .; %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar
PATH: %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin
- Maven環境變量配置
M2_HOME: C:\maven
MAVEN_OPTS: -Xms256m -Xmx512m
PATH: %M2_HOME%\bin
- Tomcat環境變量配置
CATALINA_BASE:c:\tomcat
CATALINA_HOME: c:\tomcat
CLASSPATH : %CATALINA_HOME%\common\lib\servlet.jar
PATH: %CATALINA_HOME%\bin; %CATALINA_HOME%\lib
- Linux環境變量配置
修改etc/profile文件,文件末尾添加
# jdk1.8 settings
JAVA_HOME=/usr/java/jdk1.8.0_51
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
#tomcat settings
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat
export CATALINA_HOME CATALINA_BASE
保存,執行source /etc/profile生效
然后在tomcat/bin/目錄下創建setenv.sh文件,文件內容如下
#!/bin/bash
CATALINA_HOME=/usr/local/tomcat
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID
ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
echo $ID
for id in $ID
do
echo $id > $CATALINA_PID
done
JAVA_OPTS=`-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m`
JAVA_HOME=/usr/java/jdk1.8.0_51
JRE_HOME=/usr/java/jdk1.8.0_51/jre
在tomcat/bin目錄下創建CATALINA_PID文件
把setenv.sh文件內容copy至/bin/catalina.sh文件
Linux環境變量配置是為解決后面執行shell腳本時重啟tomcat報錯
4、修改maven配置文件,修改版本庫地址和jdk版本
修改配置文件:maven—>conf-->settings.xml
jdk默認是被注釋的,放開后,修改為當前安裝的jdk版本,否則構建時會報錯

創建maven版本庫地址,然后在settings.xml中添加版本庫地址
添加<localRepository>D:/repository</localRepository>一行代碼,如圖

5、配置遠程tomcat站點,創建站點文件夾(存放war包)
修改tomcat下server.xml文件

二、構建java項目
1、設置jenkins全局變量
打開jenkins,進入系統管理,
l Maven\JDK\git安裝目錄,如圖



l 配置郵件通知,此處的郵件地址要跟管理員一樣,勾選發送郵件測試配置,輸入收件人地址,若配置成功,會收到測試郵件

l 選擇要發布的具體位置,輸入以下內容后,點擊test configuration,驗證是否連接成功
SSH Server Name: 遠程連接名字,隨便起
HostName:遠程主機ip
Usename:遠程登錄名
Remote Directory:發布遠程目錄
Passphrase/Password: 遠程登錄密碼

2、創建maven項目,修改配置項
l 新建job,選擇構建一個maven項目

l 配置job
- 源碼管理:輸入git地址

- 構建觸發器:勾選Build whenever a SNAPSHOT dependency is built,建立快照依賴關系

- 構建文件:構建pom文件(pom相對路徑,Jenkins識別路徑至workspace)+構建命令clean install -P test/-P pro

- 遠程發布信息:

- 設置發送郵件通知,構建不穩定時和構建失敗時發送郵件通知

三、編寫腳本並發布
1、編寫shell腳本,腳本上傳至遠程機器
#!/bin/bash export LANG="en_US.UTF-8" PROJECT=admin BACK_DIR=/usr/local/autodeploy/back/$PROJECT TEMP_DIR=/usr/local/autodeploy/temp/$PROJECT TOMCAT_HOME=/usr/local/tomcat WEBAPPS=webapps_jfadmin if [ -f $TEMP_DIR/$PROJECT.war ]; then echo "=======If temp exists war,finding tomcat PID======" #shutdown tomcat #echo "===================killing tomcat=================" #$TOMCAT_HOME/bin/shutdown.sh #ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'` #echo $ID #for id in $ID #do #kill -9 $id #echo "killed$id" #done #echo "===================killed tomcat===================" #sleep3 if [ -f $TOMCAT_HOME/$WEBAPPS/$PROJECT.war ]; then echo "[INFO] If /usr/local/tomcat/webapps_jfadmin/admin.war exists,it will delete old war and its folder" echo "===================deleteing old war =================" rm -rf $TOMCAT_HOME/$WEBAPPS/$PROJECT.war rm -rf $TOMCAT_HOME/$WEBAPPS/$PROJECT else echo "===================old war not exits===================" fi echo "Copying /usr/local/autodeploy/temp/admin.war to /usr/local/autodeploy/tomcat/webapps_jfadmin" #echo "===================copying new war===================" cp $TEMP_DIR/$PROJECT.war $TOMCAT_HOME/$WEBAPPS/$PROJECT.war echo "===================backing war===================" echo "Creating the back folder " mkdir -p $BACK_DIR echo "Backing /usr/local/autodeploy/tomcat/webapps_jfadmin/admin.war to /usr/local/autodeploy/back/admin,and named by date" cp $TOMCAT_HOME/$WEBAPPS/$PROJECT.war $BACK_DIR/"$PROJECT"_`date +%Y%m%d%H%M%S`.war #echo "===================deleteing temp file===================" echo "Deleting /usr/local/autodeploy/temp/admin/admin.war" rm -rf $TEMP_DIR/$PROJECT.war #start tomcat #echo "===================starting tomcat===================" #$TOMCAT_HOME/bin/startup.sh echo "===================finished==========================!" else echo "===================temp file not exits===================" fi
2、發布
進入jobs列表,點擊構建即可

構建成功,如下圖所示

四、附屬
4.1 Jenkins部署流程圖

