GitHubActions持续集成语雀Hexo博客

快速搭建语雀 Hexo 博客,Github Actions 快速集成发布。参考文档: yuque-hexo

一、原理介绍

全流程自动化,一步步的触发

二、准备工作

主要就是 github 账号以及 token,阿里云 OSS 图床及云函数配置(我使用的阿里云,就只做这个例子,腾讯云的配置差别不是很大)
github 账号不名不要太奇怪,尽量不要有一些特殊字符

Github Token

进入Github Settings Token

  • settings/developer settings/token (class)

  • 选择 workflow,会包含 repo 权限
  • 选择 write:packages(Github 图床会需要此权限)

  • 生成的 token 记录下来,取名为: ${GITHUB_TOKEN}

Git 源码 Repo 及静态资源 Repo

  • 拿到自己的 github 用户名(最好不要有空格以及特殊字符),记录为${GITHUB_NAME}
  • 创建两个仓库,repo 名分别为${GITHUB_NAME}及${GITHUB_NAME}.github.io
  • 都只需要单分支,修改默认分支名字为 master

    吐槽一下,因为西方的政治正确,现在技术用语都不再使用 master/slave 了,github 默认分支名也改为了 main

阿里云 OSS 图床

之前使用的是阿里云图床,后来换了 github 图床,github 图床配置更简单

  • 进入RAM 访问控制,创建子 RAM 账户,一定要记录好
  • 提前记录好 AccessKey 及 AccessSecret,否则之后取不到 Secret!

  • 给 RAM 账户添加 OSS 权限(AliyunOSSFullAccess\AliyunOSSReadOnlyAccess)

Github 图床

  • 创建图片存储库

  • github 做图床,一般会使用一些加速工具,配置如下

    必须要配置 host,以及设置并发为 1
    此时 bucket 为图片库名,prefixkey 为文件夹名,不填 region
    SECRET_ID=Github 用户名,SECRET_KEY=Github Token(需要 write:packages 权限)

1
2
3
4
5
6
7
8
9
"imgCdn": {
"enabled": true,
"imageBed": "github",
"concurrency": 1,
"host": "cdn.jsdelivr.net",
"bucket": "images",
"region": "",
"prefixKey": "blog"
}

阿里云函数计算 FC

  • 创建函数,使用 Python2.7 环境
  • 函数配置中的请求处理程序为:index.handler(对应 index.py 中的 handler 函数)

  • 在 index.py 中编辑,修改 url 中的仓库名为自己源码仓库名
  • 修改 Authorization 中的 token 为之前创建的 github token(空格不能丢)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: utf-8 -*-
import requests

# To enable the initializer feature (https://help.aliyun.com/document_detail/158208.html)
# please implement the initializer function as below:
# def initializer(context):
# logger = logging.getLogger()
# logger.info('initializing')

def handler(event, context):
r = requests.post("https://api.github.com/repos/polarisink/polarisink/dispatches",
json = {"event_type": "run-it"},
headers = {"User-Agent":'curl/7.52.1',
'Content-Type': 'application/json',
'Accept': 'application/vnd.github.everest-preview+json',
'Authorization': 'token ${GITHUB_TOKEN}'})
if r.status_code == 204:
return "This's OK!"
else:
return r.status_code
  • 创建 web 触发云函数的地址,记录好地址

    使用 HTTP 触发器
    请求方法全选
    不需要认证

语雀仓库名及 Token

  • 创建一个公开访问的知识库
  • 拿到自己的用户名和知识库名
  • 知识库中内容不要为空,可以提前加入测试文档!

  • 配置语雀知识库 WebHook

    选择其他渠道
    输入上一步云函数的 http 触发地址即可

本地 SSH 及 Git 配置

1
2
3
4
5
6
7
8
9
# 配置git用户名和邮箱
git config --global user.name "yourname"
git config --global user.email "your_email@youremail.com"

# 配置ssh
ssh-keygen -t rsa -C "your_email@youremail.com"

# 获取公钥到剪切板
cat ~/.ssh/id_rsa.pub

三、正式配置

本地初始化源码仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 拉取我的仓库源码
git clone git@github.com:polarisink/polarisink.git

# 修改polarisink为你的源码仓库名
mv polarisink ${GITHUB_NAME}

# 链接到你的仓库
cd ${GITHUB_NAME}
# 删除我的git记录
rm -rf .git
# git初始化
git init
# 链接到你的博客源码仓库
git remote add origin git@github.com:${GITHUB_NAME}/${GITHUB_NAME}.git
# 拉取远程代码
git pull origin master

# 第一次提交
git add .
git commit -m "your first commit message"
git push
  • 注意 sources/CNAME 文件,用于域名映射的,可以先删掉此文件

更新 Readme

用户名同名仓库的 readme 会作为 github 主页展示资料,因此需要修改为自己的
及时修改对应的 Github stats,通过开放 api 可查看最近提交状态

Github Actions Secret 配置

  • 进入入源码库 Settings/Actions 界面界面

  • 添加SECRET_IDSECRET_KEY,内容为阿里云 OSS RAM 子账户配置的 ID 和 KEY
  • 添加SSH_PRIVATE_KEY,内容为本地 SSH 私钥~/.ssh/id_rsa
  • 添加YUQUE_TOKEN,内容为之前获取的语雀 Token

修改配置

  • 修改package.json

    修改 login 和 repo 为你的语雀用户名和知识库名
    修改 imgCdn 中的 bucket 为你的 oss bucket 名,region 为区域名,prefix 为 bucket 中图片主文件夹名字
    如果是七牛云或者腾讯 COS,可阅读语雀-hexo的文档进行对应修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"yuqueConfig": {
"cachePath": "yuque.json",
"baseUrl": "https://www.yuque.com/api/v2",
"login": "polarisink",
"repo": "kbpma2",
"mdNameFormat": "title",
"postPath": "source/_posts/yuque",
"onlyPublished": true,
"onlyPublic": true,
"lastGeneratePath": "lastGeneratePath.log",
"imgCdn": {
"enabled": true,
"imageBed": "oss",
"bucket": "lqsgoodboy",
"region": "oss-cn-shanghai",
"prefixKey": "yuque_hexo"
}
},
  • 修改 github actions 配置,文件位置为.github/workflows/main.yml

    修改 external_repository 为自己的静态资源仓库名即可

1
2
3
4
5
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.SSH_PRIVATE_KEY }}
external_repository: polarisink/polarisink.github.io

测试使用

  • 在语雀中新建一篇文章并保存,勾选文档有较大更新

四、其他配置

评论配置

  • 在源码 repo–>settings–>discussions,打开,安装 giscus 软件
  • giscus 官网中按照提示填写配置,会生成对应的配置,复制到 fluid yml 中配置即可

GitHubActions持续集成语雀Hexo博客
https://polarisink.github.io/20221019/yuque/GitHubActions持续集成语雀Hexo博客/
作者
Areis
发布于
2022年10月19日
许可协议