前言
最近由于工作需要所以研究了一下GitLab的CI/CD的功能,事后想起荒废了很久的博客,所以萌生了使用GitHub的Actions重新部署一下的想法,这里记录一下安装的过程。
-环境说明
-
-
- 博客框架: Hexo -
- 博客主题: Butterfly -
- 托管环境: GitHub Pages -
- 源程序仓库: 可以设置成私有仓库,用来保存原始文件 -
- 页面文件仓库: 用来存放编译后的页面文件 -
- 更新流程: 编写文章PUSH到源程序仓库,源程序仓库Actions触发预先定义的任务,编译后PUSH到页面文件仓库,页面文件仓库Actions触发默认的github-pages任务部署网页服务。 -
安装hexo并初始化项目
Hexo依赖于Node.js环境,所以需要先安装Node.js,对于Mac来说,可以去Node.js官网下载安装包也可以通过brew命令安装。还需要安装GIT环境,Mac OS默认已安装。
--
-
- 全局安装hexo-cli
npm install -g hexo-cli
- - 初始化一个名为blog的hexo工程
hexo init blog
- - 安装依赖
cd blog && npm install
- - 启动hexo服务
hexo server
-
安装主题
推荐通过git clone主题仓库到hexo的themes文件夹下,这样比较容易管理
执行命令git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly将主题butterfly安装到hexo的themes文件夹下。
建立源程序仓库
在GitHub建立源程序仓库,名称随意,可以设置成私有仓库,我这里取名为blog。
-建立页面文件仓库
在GitHub建立页面文件仓库,如果想通过githubname.github.io访问,需要将仓库命名为githubname.github.io,如果没有这个需求,可以任意取名。
-设置秘钥
需要在GitHub设置三个秘钥文件
-SSH keys
添加Authentication Keys到GitHub的SSH keys,成功设置后可以免密执行git命令。
--
-
ssh-keygen -t rsa -C "your.email@example.com" -b 4096,按提示生成秘钥,也可以一路无脑回车
-pbcopy < ~/.ssh/id_rsa.pub,拷贝公钥到SSH keys
-ssh -T git@github.com,测试是否可以通过认证。
-
源程序仓库的Actions secrets
添加私钥blog-deploy-key到源程序仓库的Actions secrets
--
-
ssh-keygen -f blog-deploy-key,生成公私钥对
-pbcopy < ~/.ssh/blog-deploy-key,拷贝私钥到Actions secrets,命名为BLOG_DEPLOY_PRI
-
页面文件仓库的Deploy keys
添加公钥blog-deploy-key.pub到页面文件仓库的Deploy keys,切记勾选Allow write access ,设置成功后源程序仓库的Actions任务可以PUSH代码到页面文件仓库
--
-
pbcopy < ~/.ssh/blog-deploy-key.pub,拷贝公钥粘贴到Deploy keys,命名为BLOG_DEPLOY_PUB
-
编写blog仓库的Actions文件
新建文件.github/workflows/deploy.yml,编写Actions任务。
1 | name: CI |
自定义主题配置
可以遵照官方建议操作
-在 hexo 的根目錄創建一個文件 _config.butterfly.yml,並把主題目錄的 _config.yml 內容複製到 _config.butterfly.yml 去。( 注意: 複製的是主題的 _config.yml ,而不是 hexo 的 _config.yml)
-如果某些主题不支持读取根目录下的配置文件,可以考虑使用根目录下的配置文件覆盖主题目录下的配置文件,只需要在Configuration environment任务最后添加cp _config.${{ env.THEME }}.yml themes/${{ env.THEME }}/_config.yml
当然主题可能出现破坏性升级,可以考虑不追踪最新的主题,自己手动更新主题文件,去掉上面的Checkout theme repo任务,并且将themes文件夹添加到git版本追踪中
设置hexo部署路径
在hexo的配置文件_config.yml中,补全设置deploy子参数
-1 | deploy: |
以上涉及到的所有branch参数都需要一一对应,源程序仓库和页面文件仓库我都是使用的main分支,主题使用的master分支,按需修改即可,页面文件仓库的Pages也需要设置成对应的分支
-
+

