说在前面
我们平时在开发的时候都是在本地环境进行开发,开发测试完成后往往还需要在本地打包后再上传文件到服务器,这样的操作十分繁琐,并且有的时候可能不能及时,因此不能保证实时更新服务器的代码。所以才有了编写这个定时自动更新代码并打包项目脚本的想法。
思路
- 1、先在服务器创建一个文件夹,来放置Git仓库的代码,配置好git环境
- 2、 编写自动更新脚本
- 3、设置定时任务
脚本代码
#! /bin/bash -ilex
## author:jyeontu
echo "--------------------------------"
echo "----------开始执行脚本----------"
date
pwd;
echo "切换到git目录"
##切换到放置git代码的目录绝对路径
cd /www/wwwroot/ip/myGiteeCode/myProject;
path=`pwd`
echo $path
if [ "$path" == "/www/wwwroot/ip/myGiteeCode/myProject" ]
then
echo "目录切换成功,准备拉取最新代码"
else
echo "目录切换失败,退出程序"
exit 0;
fi
git pull;
echo "准备构建项目"
npm run build;
##切换到需要更新的项目目录
cd /www/wwwroot/ip/myProject
pwd
path=`pwd`
if [ "$path" == "/www/wwwroot/ip/myProject" ]
then
echo "目录切换成功,删除旧文件"
rm -rf *
ls;
else
echo "目录切换失败,退出程序"
exit 0;
fi
echo "移动新文件"
##将最新代码打包的文件复制到项目目录
cp -r /www/wwwroot/ip/myGiteeCode/myProject/dist/{index.html,js,css,favicon.ico,fonts,img} ./;
echo "更新成功"
ls;
date
echo "----------结束执行脚本----------"
设置定时任务
使用宝塔面板的同学可以直接在面板中设置。 使用终端的可以继续往下看
#切换到spool目录,定时任务配置文件在该目录下
vi /var/spool/cron/root
#在该文件中添加
#每5分钟自动执行一次
*/5 * * * * 脚本地址.sh
- 第一个表示每xx(1-59)分钟,每分钟用或*/1表示
- 第二个*表示每xx(0-23)小时
- 第三个*表示日期,1-31
- 第四个*表示月份,1-12
- 第五个*表示星期x(0-6, 0为星期日)
说在后面
设置完成后,以后你更新代码只需要将本地代码推送到git仓库,服务便会自动拉取最新的代码并打包,达到实时更新代码的效果。