环境说明:
- 技术栈:svn + maven + jdk1.8 + springboot + Jenkins + linux shell
- Jenkins插件:Subversion + Maven Integration plugin + Publish over SSH
- Jenkins所在主机:192.168.122.5
- 项目部署服务器:192.168.122.3
准备条件:
- Jenkins系列教程一:Linux上部署Jenkins
- Jenkins系列教程四:配置jdk、maven
- Jenkins系列教程五:Jenkins安装Maven项目插件:Maven Integration plugin
- Jenkins系列教程六:Jenkins安装Publish over SSH插件并配置
- Jenkins系列教程七:Jenkins安装svn插件并配置
一、新建项目
二、丢弃策略
三、源码管理
3-1、填写项目的svn地址
源码管理 -> 选中Subversion -> 填写项目的svn地址
注意:svn地址后面追加 @HEAD 将每次拉取最新的代码
3-2、输入svn用户名、密码
3-3、选择配置的用户
四、配置maven打包指令
clean install -Dmaven.test.skip=true -Pdev
说明:-Pdev是因为我的项目区分环境,可不加
五、Post Steps
Post Steps -> 选中 Run only if build succeeds
六、构建后操作
构建后操作 -> 增加构建后操作 -> 选择 Send build artifacts over SSH
选择IP - > 按下图设置 Transfers
说明:
Source files:target/*.jar jar包名,多个项目都在同一目录建议用项目.jar
Remove prefix:target/
Remote directory:/root/Jenkins-in/ 代码应用服务器的目录地址
Exec command:/root/Jenkins-in/test-job.sh 应用服务器对应的脚本。
七、应用配置
点击最下方的应用,配置生效
八、项目部署服务器脚本
8-1、编写脚本
在服务器192.168.122.3上执行操作如下命令:
mkdir -p /root/Jenkins-in/
cd /root/Jenkins-in/
vi test-job.sh
脚本内容如下:
#!/bin/bash
DATE=$(date +%Y%m%d%H%M%S)
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/data/jdk1.8.0_261
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
DIR="/data/P4/test-job"
JARFILE="test-job-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 -f $JARFILE backup/$JARFILE$DATE
mv -f /root/Jenkins-in/$JARFILE .
java -jar -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m $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
说明:
1、修改脚本中JAVA_HOME=/data/jdk1.8.0_261
2、修改脚本中JARFILE=“test-job-0.0.1-SNAPSHOT.jar”
8-2、脚本可执行授权
chmod +x test-job.sh
九、构建
jenkin首页 -> 找到test-job -> 下拉 选择 Build Now
查看控制台日志
等待构建结果