全自动博客部署方案
发表于更新于
字数总计804阅读时长3分钟阅读量
前言
Netlify 本身是支持 GitHub 上传后自动构建的,但是每次构建完毕后都需要到 CDN 手动刷新缓存,这着实是一件麻烦事。
所以我便想到了使用 CDN 提供的 API 完成自动刷新缓存,那么如何调用 API 呢?答案就是通过 Netlify 的 Functions 完成自动化。
教程
我们假设读者在阅读本篇时,已经在 Netlify 上部署了网站,如果不会部署,可以见:《从零开始搭建博客》
首先,我们需要确定你使用的 CDN 是否支持 API 调用,如果支持的话,打开 CDN 的官网就能找到相关的文档,下面我们以“多吉云”为例。
首先,我们需要在博客的根目录中创建 Netlify functions,默认的目录是:[root]\netlify\functions\
(你也可以在 Netlify 中自定义目录),在这个目录下创建一个名为deploy-succeeded.js
的 js 文件,然后输入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | exports.handler = () => { let urlList = ['https://kmar.top/*'] dogecloudApi('/cdn/refresh/add.json', { rtype: 'path', urls: JSON.stringify(urlList) }, false, (err, _) => { if (err) console.error(err) else console.log('刷新成功') } ) }
function dogecloudApi(apiPath, data = {}, jsonMode = false, callback = null) { const request = require('request'); const crypto = require('crypto'); const querystring = require('querystring'); const accessKey = '你的 accessKey'; const secretKey = '你的 secretKey';
const body = jsonMode ? JSON.stringify(data) : querystring.encode(data); const sign = crypto.createHmac('sha1', secretKey).update(Buffer.from(apiPath + "\n" + body, 'utf8')).digest('hex'); const authorization = 'TOKEN ' + accessKey + ':' + sign;
request({ url: 'https://api.dogecloud.com' + apiPath, method: 'POST', body: body, headers: { 'Content-Type': jsonMode ? 'application/json' : 'application/x-www-form-urlencoded', 'Authorization': authorization } }, function (err, response, ret) { if (!callback) return; if (err) { callback(err, null); return } ret = JSON.parse(ret); if (ret.code !== 200) { callback({Error: 'API Error: ' + ret.msg}, null); return } callback(null, ret.data); }); }
|
上面是多吉云 API 的调用,把其中的accessKey
、secretKey
和 URL 地址均替换为你的,然后在博客根目录的 package.json
中填入需要的软件库即可。如果你使用的是别的 CDN,则需要自行查阅 API 文档,然后编写相应的代码。
如果你实在不会写代码,也可以在评论区留言你的 CDN 服务商名称,我有时间了会写好加在博文中。
注意:Netlify Functions 是有免费额度的,但是只用来刷新 CDN 缓存的话一般是用不完的,详情请见 Netlify 官方文档。
创作不易,扫描下方打赏二维码支持一下吧ヾ(≧▽≦*)o
全自动博客部署方案空 梦 | 山岳库博
更新于 2023-01-06
发布于 2023-01-06