一.安装jenkins
1.1进入jenkins官网下载jenkins war包,上传到服务器/usr/local目录。
1.2执行启动jenkins命令,(注意jenkins版本需要的jdk版本)
/usr/local/java11/bin/java -Djava.awt.headless=true -jar /usr/local/jenkins.war --webroot=/jenkins/war --httpPort=8020
1.3 访问Jenkins页面: http://ip:8020
二.安装git拉取项目
2.1 服务器安装git,执行安装命令
yum install git
2.2 将项目clone到本地
#创建项目文件夹
mkdir -p /data/summarize/git
cd /data/summarize/git
git clone http://xxx/summarize.git
2.3 需要保存git用户密码,执行以下命令再次输入git账号密码
git config --global credential.helper store
git pull
2.4 创建jar目录,用于放入jenkins打包的jar,并在该目录下创建启动脚本
mkdir -p /data/summarize/jar
编写shart.sh脚本
cd /data/summarize/jar
vim start.sh
脚本内容
#jar名称
Tag="summarize-0.0.1-SNAPSHOT.jar"
# 检查进程状态
pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
echo -n "boot ( pid $pid) is running"
echo
echo -n $"Shutting down boot: "
pid=$(ps -ef | grep -v 'grep' | egrep $Tag| awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
echo "kill boot process"
# kill "$pid"
kill -9 "$pid"
fi
else
echo "boot is stopped"
fi
# 启动项目
nohup java -Dappliction=$Tag -jar $Tag > console.out 2>&1 &
三.Jenkins配置
3.1 全局属性环境变量,添加如下配置,该配置解决执行start.sh脚本不生效问题
3.2 配置jenkins任务,选择自由风格
完整配置如下,其它都不用管。
shell脚本内容,maven需要提前上传到/usr/local目录,配置settings.xml文件。
#进入项目目录
cd /data/summarize/git/summarize
#同步最新代码
git pull#maven打包
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true#移动打包的jar到目录
mv target/summarize-0.0.1-SNAPSHOT.jar /data/summarize/jar/#进入目录
cd /data/summarize/jar
chmod 777 start.sh#启动脚本
sh start.sh
保存之后构建即可自动化部署服务了。
四.多台服务器部署服务
在生产环境中,服务部署需要同时部署到多台服务器并启动,那么该如何操作呢?其实只需要改下jenkins配置脚本内容,添加rsync命令同步文件夹到其它服务器,ssh远程连接执行脚本即可。(注:服务器之间需要提前配置免密登录)
#进入项目目录
cd /data/summarize/git/summarize
#同步最新代码
git pull#maven打包
/usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true#移动打包的jar到目录
mv target/summarize-0.0.1-SNAPSHOT.jar /data/summarize/jar/#同步目录到远程服务器
rsync -avr /data/summarize/jar root@47.109.145.59:/data/summarize/
#远程连接,进入目录启动脚本
ssh root@47.109.145.59 "cd /data/summarize/jar; sh start.sh; "
#进入本地目录
cd /data/summarize/jar
chmod 777 start.sh#启动脚本
sh start.sh