介绍: 首先介绍一下jenkins, Jenkins是一个开源的持续集成的服务器,Jenkins开源帮助我们自动构建各类项目。Jenkins强大的插件式,使得Jenkins可以集成很多软件,可能帮助我们持续集成我们的工程项目。在这之前公司的测试环境的项目都是通过我在本地发成Jar包,通过Filezilla让传到服务器,然后通过命令去实现,但是很明显一天测试环境的项目不断的迭代,一次次上传真的很鸡肋。
1、动作分析
jenkins肯定不是我们安装就可以帮我们部署项目的,他想要帮助我们部署项目到远程服务器,肯定要知道一些信息的。
(1) 可以从gitee上拉取项目
(2) 可以帮我们打包,那肯定要有maven
(3) 发送jar包到我们的远程服务器
(4) 发送后要做什么,我们编写shell脚本
弄清这些就可以上手软件吧
2、jenkins配置
(1)配置远程服务地址: 系统管理--->系统设置
SSH remote host目录下: 添加我们的远程主机
![1618311618310](http://dsvip1.vip/1618311618310.png)
配置文件传输地址和相对目录
![1618319452203](http://dsvip1.vip/1618319452203.png)
1、我们开始创建新的工程:
![1618310734510](http://dsvip1.vip/1618310734510.png)
2、废弃旧的构建
![1618321411427](http://dsvip1.vip/1618321411427.png)
3、配置gitee地址和账号构建
![1618321536724](http://dsvip1.vip/1618321536724.png)
4.配置构建环境
![1618321699109](http://dsvip1.vip/1618321699109.png)
在构建前我们执行shell脚本start.sh
5.配置构建的步骤
![1618321820891](http://dsvip1.vip/1618321820891.png)
步骤一
我们从gitee拉取的maven项目,通过maven去打包成功jar包
步骤二
我们的要将jar传输到我们指定的远程服务器下,项目打包后在target/*.jar表示我们的项目,去除前缀 target/,传输到我们的远程目录下**/estest/search**
步骤三
![1618322259758](http://dsvip1.vip/1618322259758.png)
3、Shell分析
我们刚一共用了两个shell脚本
start.sh
我们每次构建项目肯定要删除原来的jar包,防止文件传输失败
for i in `find /estest/search -name "*.jar"`
do
rm -rf ${i}
done
echo "jar包已经全部删除"
通过循环找到指定文件夹下**/estest/search** 下所有的.jar文件
查找到我们就进行删除
run.sh
echo "根据端口8082杀死java进程"
PID=$( netstat -nlp | grep 8082 | awk '{print $7}' | awk -F '[ / ]' '{print $1}')
echo "杀死进程id为${PID}"
if [ "$PID" = "" ]
then
echo "该应用没有进程"
else
kill -9 ${PID}
fi
name=""
echo `ls`
for i in `find /estest/search -name "*.jar"` //找到我们的jar文件名称
do
name=${i}
break
done
echo ${name}
if [ "$name" = "" ]
then
echo "没有可以执行的jar"
else
nohup java -jar ${name} >> /estest/search/search.log &
echo "应用已经启动"
fi
echo -e "\n"
因为我们的项目访问的端口是8082 ,所以我们通过端口找到进程id,通过进程id杀死以前的java进程,我们重新通过java -jar的命令去运行我们新的jar包。