在维护 Hexo 博客的过程中,手动执行 hexo clean && hexo g && hexo d 不仅繁琐,而且容易因为本地环境差异(如 Node.js 版本不一致)导致部署失败。
本文将介绍如何利用 GitHub Actions 实现自动化部署,并展示如何添加定时任务来自动更新博客数据。
什么是 GitHub Actions?
GitHub Actions 是 GitHub 提供的持续集成和持续部署(CI/CD)平台。它允许你在 GitHub 仓库中直接自动化构建、测试和部署流程。
核心概念包括:
- Workflow(工作流):由一个或多个 Job 组成的自动化过程,通过
.yml文件定义。 - Event(事件):触发工作流的规则,如
push(代码提交)或schedule(定时触发)。 - Job(任务):在同一个运行器(Runner)上执行的一组步骤。
- Step(步骤):任务中的具体操作,可以是运行脚本或使用现成的 Action。

实战配置
我们在项目中创建了 .github/workflows/blog_automation.yml 文件,实现了两个核心功能:
- 代码提交时自动部署:当推送到
main分支时,自动构建并部署博客。 - 定时抓取数据:每小时运行一次爬虫脚本,并将更新后的数据自动提交回仓库。
1. 工作流触发规则
首先定义触发条件:
|
2. 自动部署任务 (Deploy Job)
这个任务只在 push 事件触发时运行。它配置了 Node.js 环境(版本 24),安装依赖,并执行部署脚本。
|
关键点:
npm ci:相比npm install,它更适合 CI 环境,严格按照package-lock.json安装依赖。deploy.sh:我们将具体的 Hexo 命令封装在脚本中,使用npx确保调用的是项目本地的 Hexo:
|
3. 定时抓取与自动提交 (Scrape Job)
这个任务展示了 GitHub Actions 强大的回写能力。它定期运行爬虫,如果有数据更新,会自动 commit 并 push 回仓库。
|
技巧:
permissions: contents: write:这是必须的,否则 Action 无法将更改推送到仓库。[skip ci]:在 commit message 中加入这个标记,可以避免这次提交再次触发push事件导致的构建循环。
总结
通过 GitHub Actions,我们不仅解放了双手,还保证了部署环境的一致性(Node.js 24)。无论是简单的静态博客部署,还是复杂的定时数据处理,GitHub Actions 都能提供优雅的解决方案。
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客!
评论
0 条评论