利用Webhooks实现博客自动推送

利用Webhooks实现博客自动推送

我的 Hexo 博客以前是 hexo g 后是直接 deploy 到阿里云ECS,前一段时间部署 deepin开发指南 的时候用的完全不同的一种思路 —— Webhooks。 Github 为开发者提供一个功能,当你们的本地 repo 推送到 github 时,可以选择使用 Webhooks (官方文档请戳这里通知你的服务器,然后服务器收到通知后执行相应的操作。 ### 阿里云 ECS 相应的目录结构

1
2
3
4
5
6
7
8
webhooks
├── deepin-develop-guide
│   ├── deploy.sh # deepin.lolimay.cn 部署脚本
│   └── public
├── lolimay-blog-source
│   ├── deploy.sh # lolimay.cn 部署脚本
│   └── public
└── webhooks.js # 监听脚本,用于监听 Webhooks

webhooks.js

webhooks 用于监听 github 的通知,github 通过访问指定的 url 来触发相应的 webhooks。

webhooks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const http = require('http')
const exec = require('child_process').exec

http.createServer((req, res) => {
switch(req.url) { // 根据 url 执行相应的部署脚本
case '/webhooks/deepin-develop-guide':
exec('sh deepin-develop-guide/deploy.sh')
break
case '/webhooks/lolimay-blog-source':
exec('sh lolimay-blog-source/deploy.sh')
break
}
res.end()
}).listen(/* 这里换成你需要监听的端口 */, "0.0.0.0")

deploy.js

deploy.js
1
2
3
4
5
6
7
8
9
10
# 初始化脚本执行环境
cd /home/git/lolimay-blog-source/public

# 从 github 上拉取最新的文件
git reset --hard
git pull origin master

# 将文件部署到相应目录
rm -rf /www/wwwroot/lolimay.cn/*
mv * /www/wwwroot/lolimay.cn/

后记

由于这篇博文是给博主自己备忘的,所以很多地方都说的不是很清楚,这里有一篇写的特别详细的教程,感兴趣的同学可以看看。