jenkins+maven+svn 构建一键打包发布环境

1、安装Jenkins比较简单,下载war包解压到tomcat的webapps目录下,启动tomcat即可

http://mirrors.jenkins-ci.org/war/  #下载地址
http://192.168.1.1:8080/jenkins    #访问地址

2、安装maven,下载之后直接丢到/usr/local下面,配置好环境变量即可

http://maven.apache.org/download.cgi    #下载地址
环境变量配置如下
MAVEN_HOME=/usr/local/apache-maven-3.3.9
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

3、访问jenkins,一开始会提示你去服务器拿一个key,直接按照路径cat获取即可,然后提示你设置用户密码,安装一下推荐的插件之类的,我这里不再演示。

确保以下三个插件要装上(主面板-系统管理-插件管理-可选插件-CTRL+f搜索插件名来安装,装完重启jenkins)
maven integration plugins    #maven插件,装了它才能有“构建一个maven项目”这个选项
Subversion Plug-in           #svn插件,git的插件貌似在开始的推荐插件里面就有装上了,我这里不用git,暂不讨论
Deploy to container Plugin    #发布到tomcat用到的插件,不过我选择用shell发布,装上也无妨,日后研究

4、配置jenkins里面的jdk,maven
(主面板-系统管理-Global Tool Configuration)
QQ截图20170521170858.png
QQ截图20170521170916.png

5、配置ssh信息,用来远程执行脚本发布用
(主面板-系统管理-系统设置)

  a、在jenkins服务器利用ssh-keygen -t rsa 生成公钥私钥
  b、把公钥利用ssh-copy-id -i发送到web服务器
  c、把私钥黏贴如下

QQ截图20170521171258.png

6、新建-maven项目-OK
配置:
a、配置svn地址,git同理
QQ截图20170521172039.png

b、build构建命令

package    打包
clean    清除上一次的构建
-DskipTests    跳过测试

QQ图片20170521172223.png

7、配置构建完成之后的操作

这几行命令的意思主要是从jenkins的workspace里面把构建后的war包移出来到一个以时间命名的文件夹,然后把这个文件夹推送到测试服务器,一份用于存档,一份用于发布(我的发布文件夹不以时间命名,每次发布之后都会清除war包,下次构建又会把war包推送到此,便于下面的脚本调用)

QQ截图20170521172518.png

8、添加一个远程执行的脚本
QQ截图20170521172948.png

QQ截图20170521173031.png

9、我的自动发布脚本参考

#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_73

pid=`ss -lntup|grep 8080|awk -F '[,]' '{print $2}'`
if [ -n $pid ]
  then
        /bin/kill -9 $pid
fi

deployDir=/tomcat/webapps
SrcDir=/mnt/war
backupDir=/home/yxc/deploy/backup/`date +%y%m%d-%H%M%S`
mkdir -p $backupDir

declare -a webprjs=(app admin super)
for webprj in ${webprjs[@]};do
    mv $deployDir/$webprj $backupDir/
    unzip $SrcDir/${webprj}.war -d $deployDir/$webprj
    grep -R "show_sql\">true" -l $deployDir/$webprj/*|xargs -I {} sed -i "s#show_sql\">true#show_sql\">false#g" {}
    cp -rv /home/yxc/config/$webprj/* $deployDir/$webprj/
done

sleep 3

echo "start tomcat..."
/bin/sh /tomcat/bin/startup.sh

echo "delete war..."
rm -f $SrcDir/*

echo "update rmweb..."
cd /rmweb/rmweb && /bin/sh update.sh    #这是一个从svn更新前端文件的脚本

echo "deploy finish..."
添加新评论