使用 GitHub Actions 实现 Hexo 博客自动部署到cloudflare
前言
作为一名博客写作者,手动部署 Hexo 博客到 GitHub Pages 既繁琐又容易出错。本文将详细介绍如何使用 GitHub Actions 实现 Hexo 博客的自动部署,让你专注于内容创作,让技术自动化为你服务。
什么是 GitHub Actions?
GitHub Actions 是 GitHub 提供的持续集成和持续部署 (CI/CD) 平台,允许你在代码仓库中自动化构建、测试和部署流程。对于 Hexo 博客来说,这意味着:
- ✅ 自动检测内容更新
- ✅ 自动构建静态文件
- ✅ 自动部署到 GitHub Pages
- ✅ 完全免费的自动化流程
获取 GitHub Token
要让 GitHub Actions 有权限操作你的仓库,你需要创建一个 Personal Access Token。
创建 Token 步骤:
- 登录 GitHub,点击右上角头像 → Settings
- 左侧菜单栏找到 Developer settings
- 选择 Personal access tokens → Tokens (classic)
- 点击 Generate new token → Generate new token (classic)
- 配置 Token 信息:
- Note:
hexo_auto_deploy(描述用途,token的名称) - Expiration: 建议选择
No expiration(永不过期) - Select scopes: 勾选以下权限:
repo(完全控制仓库)workflow(工作流权限)
- Note:
- 生成 Token:点击 Generate token,立即复制生成的 Token(只会显示一次!)
在仓库中配置 Token:
- 进入你的 Hexo 博客仓库
- 点击 Settings → Secrets and variables → Actions
- 点击 New repository secret
- 填写:
- Name:
GH_TOKEN - Value: 粘贴刚才复制的 Token
- Name:
- 点击 Add secret
在同仓库中创建备份分支
hexo利用git分支进行博客源码备份也可以另外新建一个仓库或者是分支都是可以的,然后在仓库中创建** .github/workflows/deploy.yml**这个文件。
创建 GitHub Actions 工作流
在你的 Hexo 博客仓库中创建 .github/workflows/deploy.yml 文件,内容如下:
name: Blog自动部署 # 工作流名称 |
代码详细解析
触发器配置 (on)
on: |
- branches: 指定只在
hexoBackup分支的推送时触发 - paths: 智能监控,只在以下文件变动时运行:
- 所有 JSON 配置文件
- 所有 YAML 配置文件
- source 目录下的所有内容(你的文章和资源)
环境变量 (env)
env: |
集中管理环境变量,便于维护和修改。
缓存策略
- name: 缓存 Hexo 构建 |
缓存机制说明:
path: 缓存 npm 全局安装目录key: 基于操作系统、缓存名称和 package-lock.json 的哈希生成唯一键restore-keys: 缓存回退策略,如果精确匹配失败,尝试匹配相近的缓存
依赖安装优化
- name: Init Node.js |
- 时区设置: 确保日志时间准确
--force参数: 解决可能的依赖冲突问题
部署流程
- name: 传统方式部署 |
这里使用 Hexo 原生的 deploy 命令,需要在你的 _config.yml 中配置部署信息:
# Deployment {token} 为上面生成的 github令牌token |
第三步:配置 Hexo 部署设置
在你的 Hexo 博客根目录的 _config.yml 文件中添加部署配置:
# Deployment |
重要: 将 github_token 替换为 ${{ secrets.GH_TOKEN }},GitHub Actions 会自动替换为你在 Secrets 中设置的 Token。
第四步:测试自动部署
- 提交代码:将工作流文件推送到
hexoBackup分支 - 查看运行状态:
- 进入仓库页面
- 点击 Actions 标签页
- 查看工作流运行状态
- 验证部署:访问你的 GitHub Pages 地址查看是否更新
高级优化建议
设置仓库密钥
我们不应该将Token直接写在代码中,所以可以使用GitHub Secrets来存储Token,然后在工作流中将其转换为_config.yml中的配置,或者使用环境变量。
在这个分支仓库中点击仓库的【Settings】-【secrets and variables】-【New repository secret】-【New secret】
**Name :**hexo_token(这个随便取)
**Secret :**上面创建的github的令牌token。
假设我们在Secrets中设置了一个名为hexo_token的秘密变量,我们可以使用sed命令来替换,例如:
# 原来是这样的 |
sed -i "s|[email protected]:|https://${{ secrets.hexo_token}}@github.com|g" _config.yml
将 [email protected]:替换为 https://${{ secrets.hexo_token}}@github.com
然后我们在工作流中添加一个步骤:
- name: 修改_config.yml中的部署仓库URL |
使用更专业的部署 Action
- name: 部署到 GitHub Pages |
多环境支持
env: |
常见问题解决
权限错误
Git提交时报错:
To https://github.com/quantum6/jdk8u-tsit |
- 错误原因:
Token没有workflow权限。
解决办法1:修改Token
解决办法2:新建Token
【Hexo自动部署】
使用 GitHub Actions 自动发布 Hexo 博客
Hexo+GitHub搭建个人博客,实现云端编辑、一键发文