使用Github的Webhooks进行网站的自动化部署
转自本人正版博客:使用Github的Webhooks进行网站的自动化部署
使用mWeb做自己的博客,服务器没有直接使用github的gh-pages功能,而是部署到了自己的服务器上。
从此更新博客变成了三步走:1. 使用mWeb生成静态网页 2. push 到github 3. 登录服务器拉取最新内容。
昨天想到,能不能再简化一些步骤,让我的文章push到github后,让服务器自动拉取文章,部署新内容。说干就干,实施想法。
1. 目标
服务器自动拉取push到github上的新文章。
2. 想法
想法一: 定时检查置顶repo的提交,有更新,则启动部署流程。(主动查询方式)
想法二: github是否支持事件提醒或者第三方有无支持。(被动唤醒方式)(相当于消息推送)
3. 思考
主动查询,耗费cpu时间及流量,并且必然会和github产生同步间隔。
被动唤醒,不会消耗不必要的资源,若是支持必然是第一选项。
4. 查阅资料(可行性分析)
github支持Webhooks及大量的第三方服务,可以很好得对repo的push等操作做出反应。
Webhooks做了什么?
当github收到repo的操作行为时,会向指定的url发送一个带有描述操作内容的post请求。
5. 实现思路(总结)
对指定repo注册webhooks,指向我的服务器上的接口,服务器解析数据,若操作是push,则进行部署行为。
6. 实现
6.1 部署脚本:
deploy.sh
#!/bin/bash
LOG_FILE="/var/log/blog_deploy.log"
date >> "$LOG_FILE"
echo "Start deployment" >>"$LOG_FILE"
cd /Path/need/be/deployed/
echo "pulling source code..." >> "