说在前面
我们平时在开发的时候都是在本地环境进行开发,开发测试完成后往往还需要在本地打包后再上传文件到服务器,这样的操作十分繁琐,并且有的时候可能不能及时,因此不能保证实时更新服务器的代码。所以才有了编写这个定时自动更新代码并打包项目脚本的想法。
思路
- 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仓库,服务便会自动拉取最新的代码并打包,达到实时更新代码的效果。