环境:
- JDK 1.8
- Jenkins服务器和部署项目服务器为两台Centos服务器
- maven
步骤
默认jenkins,maven,jdk环境已经搭建完成
第一步-安装所需要的插件
1.点击【系统管理】-【插件管理】-【可选插件】搜索以下3个插件进行安装:
Git plugin ---下面要拉取需要构建的代码,根据公司项目代码仓库选择,下面我们用的是git。
Maven Integration plugin---使我们可以使用maven job
publish over SSH---使我们的jenkins服务器连接部署项目服务器
第二步-参数配置
1.点击系统管理
2.右边点击全局工具配置
3.配置Maven
4.配置JDK
以上都不要勾选自动安装
5.配置登录部署项目服务器参数,登录方式有两种,一种是密钥方式登录,还一种是服务器用户名和密码直接登录,我们现在用第二种,这一种比较简单。
.点击【系统管理】-【系统配置】,找到SSH Servers
Name:随便取,到时候用这个做为标识作用。
Hostname:目标服务器IP地址,也就是部署项目服务器地址。
Username:登录部署项目服务器地址的用户名
Remote Directory:可以不填。
再点击【高级】按钮
勾选上Use password authentication, or use a different key
Passphrase / Password的输入框中输入登录部署项目服务器的密码
点击【Test Configuration】按钮,如果出现Success,说明刚刚成功连接上了这条项目部署服务器,刚刚的配置正确。如果错误,先确认输入的账号密码是否正确。
以上参数配置基本完成
第三步-新建job
- 创建一个maven项目
- 勾选丢弃旧的构建,点击高级,展开所有配置,作用便于管理空间。图上配置的意思是保留最近10天的构建记录,一共只储存最近11次的构建记录,发布包保留7天,只保留一个发布包。根据自己的需求配置,不一定按照图片上的来。
- 设置源码管理
- 勾选Add timestamps to the Console Output,作用:拉取项目代码构建的过程中会将日志打印出来。
- 设置Build,Goals and options:clean install -Dmaven.test.skip=true -Ptest
- 勾选上Run only if build succeeds,作用是发布步骤,只有这个job前面构建成功后才会执行
- 点击Add post-build step
选择Send files or execute commands over SSH
最重要的配置来了,特地加粗加大,务必不要让其他小伙伴踩到我踩过坑
Name:这个字段就是上面【第二步参数-配置】的第五点中你设置的Name
Source files:这个字段的意思是,填入你想要传到项目部署服务器上的jar包地址。这个文件集的基本目录是这个job工作区,举实例说明。你在控制台输出能看到你这个job的工作区地址为:
/data/var/jenkins/workspace/aaa
再看你jar包的地址:
/data/var/jenkins/workspace/aaa/bbb/target/ccc.jar
假如你要将ccc.jar这个jar包传到项目部署服务上去。Source files 填bbb/target/ccc.jar,也就是jar包的地址减去job的工作区地址
Remove prefix:意思填入你要去掉的文件目录前缀。如果不填的话,这个ccc.jar包存到项目部署服务器上面的目录将会是bbb/target/ccc.jar,如果你填bbb,那么个ccc.jar存到项目部署服务器上面的目录,jar包前面的目录将会是target/ccc.jar。
Remote directory:意思是,你的ccc,jar包要存到项目部署服务器的哪个目录下,就填什么目录。图上的意思是,我将ccc.jar这个jar包存到项目部署服务的/jars目录下,这个位置有个重要的点,假如在上面【第二步-参数配置】的第五点Remote Directory的值填的是:/data ,然后现在这儿的Remote directory值填的:/jars ,那么Remote directory最终的地址将会是:/data/jars。总结:这两个目录地址会拼接。
Exec command:填入项目部署服务器上sh 文件地址,sh内容贴下,sh文件中是,kill 旧项目,删除旧项目,启动新项目,备份老项目。
DATE=$(date +%Y%m%d)
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/usr/java/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
DIR=/root/xxx
JARFILE=xxx-0.0.1-SNAPSHOT.jar
if [ ! -d $DIR/backup ];then
mkdir -p $DIR/backup
fi
cd $DIR
ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
mv $JARFILE backup/$JARFILE$DATE
mv -f /root/Jenkins-in/$JARFILE .
java -jar $JARFILE > out.log &
if [ $? = 0 ];then
sleep 30
tail -n 50 out.log
fi
cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
最后一步
点击保存,再构建job,查看控制台日志是否报错。
完毕~~