jenkins通过shell脚本部署Jar到远程服务器

介绍: 首先介绍一下jenkins, Jenkins是一个开源的持续集成的服务器,Jenkins开源帮助我们自动构建各类项目。Jenkins强大的插件式,使得Jenkins可以集成很多软件,可能帮助我们持续集成我们的工程项目。在这之前公司的测试环境的项目都是通过我在本地发成Jar包,通过Filezilla让传到服务器,然后通过命令去实现,但是很明显一天测试环境的项目不断的迭代,一次次上传真的很鸡肋。

1、动作分析

jenkins肯定不是我们安装就可以帮我们部署项目的,他想要帮助我们部署项目到远程服务器,肯定要知道一些信息的。

(1) 可以从gitee上拉取项目

(2) 可以帮我们打包,那肯定要有maven

(3) 发送jar包到我们的远程服务器

(4) 发送后要做什么,我们编写shell脚本

弄清这些就可以上手软件吧

2、jenkins配置

(1)配置远程服务地址: 系统管理--->系统设置

SSH remote host目录下: 添加我们的远程主机

1618311618310

配置文件传输地址和相对目录

1618319452203

1、我们开始创建新的工程:

1618310734510

2、废弃旧的构建

1618321411427

3、配置gitee地址和账号构建

1618321536724

4.配置构建环境

1618321699109

在构建前我们执行shell脚本start.sh

5.配置构建的步骤

1618321820891

步骤一

我们从gitee拉取的maven项目,通过maven去打包成功jar包

步骤二

我们的要将jar传输到我们指定的远程服务器下,项目打包后在target/*.jar表示我们的项目,去除前缀 target/,传输到我们的远程目录下**/estest/search**

步骤三

1618322259758

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包。

# 架构 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×