看看官方对GitHub Actions的介绍: GitHub Actions 帮助您自动完成软件开发周期内的任务。 GitHub Actions 是事件驱动的,意味着您可以在指定事件发生后运行一系列命令。 例如,每次有人为仓库创建拉取请求时,您都可以自动运行命令来执行软件测试脚本。
简单的说就是,GitHub 把持续集成系列操作步骤叫做 actions。比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。可以看看官方的介绍,对GitHub Actions快速了解
Hexo 配置
Hexo 搭建使用可以去参看hexo 文档。
Github Pages 支持两种模式
- User or organization site: 新建一个 username.github.io 的仓库,每个用户只能建立一个。
- Project site: 在对应仓库 Setting => pages 进行配置,如果有多个需要配置独立域名。
Github Pages 的配置可以参看这里
我这里是使用 Project site 的搭建 Hexo 站点的。修改 _config.yml 下的 deploy 推送仓库地址,将其推送到 MalBlog/gh-pages 分支上去。
deploy: |
在本地执行 hexo generate 和 hexo deploy 确保能正常生成和发布。
GitHub Actions
我们希望当我们把博客源码推送到对应的仓库后,GitHub Actions 自动帮我们执行 hexo generate、hexo deploy 的生成和发布操作,完成博客的自动部署。首先在 项目根目录的 .github/workflows 下 新建一个 main.yml,每一个 .yml 文件就是一个 Action , 一个 Action 相当于一个工作流 workflow,一个工作流可以有多个任务 job,每个任务可以分为几步 step。
第一步 我们配置工作流触发的时机
# 工作流名称 |
第二步 配置工作流中的 job
jons: |
第三步 实现任务步骤, 实现自动部署大致需要如下步骤
拉取博客源码=> 安装 Hexo 需要环境 => 安装源码依赖 => 构建博客源码 => 推送构建产物
jons: |
Github 每个仓库都是可以设置 Deploy keys
的, 用来可以操作单个仓库的。我们需要生成一个 SSH Key
,将公钥添加到 Setting => Deploy 里, 将私钥 Setting => Secrets => Actions 里。这样就可以在 工作流中 获取到 Secrets
配置变量。我这里使用名称是 HEXO_DEPLOY_PRI
。
Git submodule
有时候使用了三方主题,需要更新时候,我们也希望能够自动更新上去,我们可以使用 Git submodule
来管理主题。
git submodule add <主题仓库地址> <主题存放路径> |
修改工作流配置,在构建前先拉取子模块中的主题
# 最开始 git submodule update --recursive --remote 去拉取,发现一直更新不到最新的 |
最后
这样基本上就实现了 Hexo 的自动部署和主题自动更新了, 加上使用 github.dev 就能实现只需要一个浏览器就能随时随地的写了, 不在需要本地配置搭建环境啦。