其实这个工作很久之前就完成了,最近才决定以文章的形式写出来
现在手里有两台服务器,曾经存放静态页面的服务和管理静态页面的服务在同一台服务器上。最近打算将其分开部署,所以就有了这篇文章
1. 流程变化
曾经由管理程序直接生成静态页面即可,对应Python&Hexo的代码就是:
1
| status = os.system('cd ' + path + ' && ' + 'hexo generate')
|
新版方案则由后台管理程序先生成静态页面,然后将静态页面推送至Git服务器。在Git中设置Pipeline,自动向静态页面服务器推送文件。对应Python&Hexo的代码是:
1 2 3 4 5 6 7 8 9 10 11
| result = os.popen('cd ' + path + ' && ' + 'hexo generate') res = result.read() for line in res.splitlines(): msg += line + "\n"
result = os.popen('cd ' + path + '/public && git add . && git commit -m "' + localtime + '" && git push') res = result.read() for line in res.splitlines(): msg += line + "\n"
|
2. CI设置
这里使用了私有部署的Drone作为CI工具,其方案是直接登录目标机器,git pull下来最新的页面数据即可。
这里有一个前提,我的静态资源都是由单独服务管理的,Git只负责管理最新的HTML。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| kind: pipeline type: docker name: master steps: - name: update image: appleboy/drone-ssh settings: host: * port: * script: - cd /blog/public - git pull trigger: branch: - master
|