这是已经老久前挖的坑, 现在看来是要填了 🤣
使用 CI 有啥好处呢?
随时随地, 开个网页, 只要分支有 push 便会自动构建、部署博客~
高集成, 所有用到的东西都不用离开 github.com
工具
- GitHub 账号一枚
- Git
- NodeJS
准备
站点准备
首先肯定先安装个 Hexo 啦
npm install hexo-cli -g |
然后在一个空文件夹下 执行
hexo init |
然后按照喜好配置你的 Hexo 站点~
最后在 GitHub 上创建一个 GitHub Pages 仓库和一个 Hexo 博客文件仓库/分支(
(说一下, 个人主题是 Fork 了一份稍微改了一下, 然后 git submodule 挂上去的说, 所以 workflow 中有同步子模块的一步)
GitHub 准备
打开 github.com
在 Settings
- Developer settings
- Personal access tokens
- Generate new token
中创建密钥
然后勾选 repo
, 拉到最下面, Generate toker
最后将生成的 token 保存下来(只会出现一次, 一定一定记得存下来!
接下来在你 Hexo 博客文件仓库/分支所在的仓库 的 Settings
- Secrets
- Add a new secret
创建俩个变量分别是
GH_REF
内容为你 GitHub Pages 仓库的地址(不用带 httpsGH_TOKEN
内容为上面所获取的 token
至此, 就差不多准备好了 😋
workflows
如果只是要个 workflows 的话, 点我跳转到成品
过程解释
- 名称, 这个随意取
name: Hexo |
- 指定触发 workflow 的事件, 这里选择的是推送至指定分支的事件
on: |
- 设置时区, 这里设置的是上海的呢
env: |
- 指定 workflow 所运行的系统, 这里是设置最新的 Ubuntu
blog-cicd: |
- 检出代码, 设置 Node 环境
- name: Checkout codes |
同步主题, 我这里是 Fork 了一份主题并添加成了子模块的说, 如果没有使用子模块的话, 这一步可以忽略
请看 5.
的注释
如果你的主题未做修改的话, 那你可以直接 git clone 下来使用, 在 .gitignore
中添加忽略(当然, 你直接在仓库中存在也行, 不过那样的话看目录结构会复杂一点)
- name: Checkout submodules |
- 缓存
~/.npm
目录, 加快构建速度
- name: Cache Node Dependencies # Npm 缓存, 这一步报错的话, 把这部分删掉即可 |
- 安装依赖, 个人使用的主题也需要安装一次, 但大部分主题不需要安装, 这里便没有贴出
如果主题需要安装依赖的话, cd
过去安装即可(Ubuntu 环境~
- name: Install dependencies |
- 生成文件, 我主题是挂子模块的, 子模块中我不想它出现配置, 所以这里有个
mv
操作将目录下的_config.theme.yml
移动并重命名为_config.yml
- name: Generate files |
- 部署到到 GitHub Pages 仓库
- name: Deploy blog |
扩展
由于个人将 GitHub Pages 仓库也绑定到 Now.sh 了, 所以需要添加 now.json
设置 404 页面(本博客的 Now.sh 域名 blog.isteed.cc)(其它的规则懒得整~
所以我将 now.json 文件存储到博客源文件的根目录下, 在生成文件后将其移动过去
这样的话, 我觉得也可以做个双线部署用用, coding 似乎使用的是新加坡腾讯云, 而 Now.sh 则有香港、台湾谷歌云, 速度蛮快的说(注: Now.sh 有流量限制, 不过应对我这种博客没啥人的还是够了 🤣)
成品
最后的 workflow
name: Hexo |
碎碎念
GitHub Actions 真的是太太太好了, 那么高配置的服务器, 那么强的国际带宽, 免费用户的私有仓库都有 2000min 的时间用, 公开仓库甚至还免费不限时, 系统方面不仅有 Ubuntu、Windows 甚至还有 macOS!!!
GitHub 牛逼!巨硬牛逼!(希望少点咖喱味