流程和概述
流程大概为: 语雀webhook→Serverless→Github Actions→Github Pages
本身用 Github Actions→Github Pages 即可完成在线更新文章,或者说通过Github网页写文章实现自动化部署到hexo静态博客。但习惯用语雀来记录笔记,或者有类似需求的,便可在语雀文档中写文章从而实现自动化部署到 Github Pages静态博客上。
Serverless配置
- 你得先有腾讯云或者阿里云账户,没有注册的话,这些注册需要验证手机,甚至实名认证。这里以腾讯云为例,在腾讯云中开通Serverless(无服务架构),有叫函数计算,有叫云函数,总之都围绕它展开做的产品。
- 新建云函数,函数名称自己随意,运行环境 Python2.7创建方式空白函数,点击高级设置,启用运行角色为SCF_QcsRole
- 点击完成后,在 函数代码→函数管理复制如下代码做相应修改,没有Github账户或者私有仓库待会创建后来修改也可以。
先去登录 GitHub,定位到如此网址
https://github.com/settings/profile,点击 Developer settings,新建一个token,然后勾选 repo后确定申请。或点击查看《Github申请token》,然后填写好。
下面所有代码都可在 https://gitee.com/ct2/web/blob/master/yque-serverless-github-actions-hexo.md中,更便于复制。
| 1 | # -*- coding: utf8 -*- | 
- 特别注意的是 - 'Authorization': 'token bc9aa5a5dfa324545007eab6c1865d'这样形式存在的。
- 触发方式如下,没有可以在触发管理中新建触发管理。 
- 触发方式:API 网关触发器
- API 服务类型:新建 API 服务
- API 服务:SCF_API_SERVICE
- 请求方法:ANY
- 发布环境:发布
- 鉴权方法:免鉴权
- 启动集成响应:未启用
 
- 在 - 触发管理中能看到访问路径,记下这个访问路径,我们要写入语雀中去
语雀配置
- 没有账户点击这里申请语雀账户,注册成功后在知识库中新建一个知识库,权限选择互联网可见,知识库名称自己命名,比如我这里为 tohexo
- 然后点击右上角头像设置刚新建的知识库,在知识库信息中便可修改路径,比如我的全路径为  https://www.yuque.com/ccne2020/hexoblog留意下这个链接,待会后面会取用这个链接中的相关信息。
- 在知识库的开发者中,网页路径为 https://www.yuque.com/你的语雀用户名/知识库用户名/settings/webhooks填入上面云函数的访问路径,名称自己写,然后把仅主动推送更新触发,发布文档,更新文档,删除文档都勾选上点击添加
- 在点击右上角头像,点击 个人设置→token→新建,用途自己填写,这里勾选读取你的知识库读取你的文档后创建,记下这串token,后面要填写在Github私有仓库中。
- 因为要用到 yuque-hexo插件,因此不妨在本地执行以下npm install yuque-hexo --save好让hexo的package.json中写有"yuque-hexo": "^1.6.5"这样的字段。
- 用记事本打开package.json文件,可以在"dependencies":字段中看到"yuque-hexo": "^1.6.5"
- 接着配置如下代码
| 1 | "yuqueConfig": { | 
- 着在 "scripts":字段下加入如下代码
| 1 | "start": "yuque-hexo clean && yuque-hexo sync && hexo clean && hexo generate", | 
- 下面开始百度搜索 json在线检查找一个检查json的网站打开,复制你文件的内容检查一遍看看能不能通过,能通过才可以用。
- 如果你的知识库中没有文章的话,这是可以先发一篇文章。我的整个 package.json文件内容如下:
| 1 | { | 
Github Pages配置
- 按理说,你应该具备此仓库,并且已经存放了hexo网站文件,如果没有,那么则创建一个以 你的github用户名.github.io的公开仓库即可。
- 下面打开git,没有的话去官网下载一个 https://git-scm.com/downloads,可参见《Github Actions自动部署Hexo博客》中的密钥生成这一小节。
- git执行 ssh-keygen -f YUQUE_GIT_HEXO一路回车即可得到两个文件
- 打开此仓库的Settings→Deploy keys→Add deploy key,Title字段填写YUQUE_GIT_HEXO.PUB,Key就把公钥,就是带.PUB后缀名的文件内容粘贴到此,同时一定要勾选Allow write access
- 因为我这里是用网页上传来实现,需要手动这般操作。
Github Private配置
- 这个Github Private是你创建的一个私有库,用来存放hexo所需文件的仓库。 
- 打开此仓库的 - Settings→Secrets→New Secrets,这里的- Name字段要填写为- YUQUE_GIT_HEXO,- Value字段填写前面生成的- YUQUE_GIT_HEXO文件中的内容。
- 还记得语雀配置中的token吗?现在也重复上述操,而这里的 - Name字段填写为- YQ_TOKEN如果你填写的不是这个值,那么请在Github Actions的脚本代码做修改。
- 然后上传hexo所需文件,直接用网页上传亦可,文件有如下: 
- scaffolds文件夹
- source文件夹
- theme文件夹
- _config.yml
- package.json
- package-lock.json
 
配置Github Actions脚本
- 在仓库中点击 Actions-->Set up a workflow yourself粘贴如下代码后做相应修改即可
| 1 | # workflow name | 
最后在Serverless中点击测试,如果成功的话应该可以看到 This's OK!。在语雀中无论删除文章,更新文章,新发布文章,都一定要选择 文档有较大更新,推送给关注知识库的人 才能触发这系列操作。
针对语雀图片无法正常显示的解决办法,找到主题的 layout 文件夹中的 post.ejs 文件中加上一句 <meta name="referrer" content="no-referrer" />可解决此问题。
最后总结
另外github actions可能对触发操作做了一定限制,因此不要频繁点击测试,可能会导致失败问题。我自己的感觉是前面我一分钟点击七八次都能通过测试,后面莫名其妙就失败了,猜想与此有关,然后过了几分钟再次点击,测试又通过。在一个我怀疑跟墙有关,反正很玄学。
现在可以尝试在语雀中发布一篇文章应该可以触发一系列操作。经过反复摸索和练习,终得以成功,但我好像并不喜欢这样的写作方式,可能是与我习惯有关吧!






