Linux - Maven - Git 自动化部署
通过一个auto.sh 脚本实现
1、git拉下代码,
2、使用maven进行打包,
3、停止旧项目,
4、备份旧包,拷贝打好的新jar包,
5、启动新jar包
Linux 安装maven
1、通过wget下载,路径可以直接使用,一般都是装在这
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
2、进行编译安装,需要一点时间
yum -y install apache-maven
3、查看是否安装成功 ,成功了如下图(1-1),会显示版本号,还有jdk
mvn -version
4、进行更改源(maven毕竟是在美国,改为aliyun,打包(第一次打包需要下载pom.xml的包)会快一点)
(如果是土豪,买的服务器网速够快,就不用这一步)
根据第三步,可以看到,Maven home路径下conf指向/etc/maven,/etc/maven下有个settings.xml配置文件
大概在160行左右,有个<mirrors></mirrors>,把下面代码放入其中,保存退出就可以了,这样打包使用国内的,第一次就很快
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
Linux·安装git
1、安装git,如果有选择,输入 y 就可以了
yum install git
2、查看是否安装成功
git --version
3、如果觉得git版本太低,可以查看另一篇文章,使用源码编译安装
环境部署(三):Linux下安装Git :https://www.cnblogs.com/imyalost/p/8715688.html
Maven打包
1、使用git拉下代码,
git clone http://xxx/project.git
git pull
2、如果项目是私有的,pull 需要每次都输入密码,如果想后面不需要再次输入密码,可以进入服务器根目录 ,运行下面命令
使用之后,然后配置项目的.git/config ,只有第一次需要输入完整账号密码,后面不需要输入了
cd /
git config --global credential.helper store
然后进入git项目根目录,使用 ll -a 查看git文件夹,修改里面config配置,在http://后面直接跟git账号加'@'符号
3、进行打包命令,此命令要在项目里运行(test意思就是去除test文件进行打包,直接完整拷贝运行,命令没有特殊单词)
第一次打包如果没有使用aliyun源,打包是需要一点时间的(主要看项目引用包多不多)。
mvn clean install -Dmaven.test.skip=true
auto.sh脚本,自动部署
1、脚本说明
脚本中/xxx/xxx,都是目录,可以根据git拉下代码路径和项目部署路径自行调节
第一条命令 git pull,如果是私有,或者私有没有使用(Maven打包 ->2 )步骤。可能需要输入账号密码。导致脚本失败
第三条命令 ,使用项目端口进行kill
第四条命令 拷贝的时候,正常停止项目之后,jar包还是在,如果直接拷贝,可能会提示是否覆盖,需要输入yes/on,使用'|'通道命令之后,遇到判断,会自动为 ‘yes’覆盖。
auto.sh脚本,如果没有权限可以使用 以下命令添加权限
chmod 777 auto.sh
#!/bin/sh
# 1 更新代码
git pull
# 2、打包
mvn clean install -Dmaven.test.skip=true
echo'执行打包命令完毕'
# 3、停止
#设置关闭的端口
port=8082
#获取此端口运行的进程
pid=`lsof -t -i:$port`
#判断如果进程号不为空则,关闭进程
if test -z "$pid";then
echo " 工程未启动!"
else
kill -9 $pid
echo " 工程进程$pid 关闭成功!"
fi
# 停止可能需要点时间,等五秒后,再进行拷贝和启动,睡眠时间可以根据项目,自行调节
sleep 5
# 4、强制覆盖拷贝git拉下的代码中jar包,到项目中,如果有需要备份,可以插入一条备份命令
time=$(date "+%Y%m%d%H%M%S")
yes|cp /xxx/server/project/project-2.0.0.jar /xxx/server/project/backUpWar/$time.jar
echo'执行备份命令完毕 $time'
yes|cp /xxx/xxx/project/target/project-2.0.0.jar /xxx/server/project/
echo'执行拷贝命令完毕'
# 5、启动
nohup java -Xms512m -Xmx512m -jar /xxx/server/project/project-2.0.0.jar >> /xxx/server/project/run.log 2>&1 &
echo'执行启动命令完毕 project'
sleep 3
pid=`lsof -t -i:$port`
if test -z "$pid";then
echo " 工程未启动!"
else
echo " 工程进程$pid 启动成功!"
fi