使用Github Action实现Hexo博客自动化部署
本文参考自 Akilar,原文地址:https://akilar.top/posts/f752c86d/
每次部署Hexo都需要运行指令三件套,随着文章越来越多,编译的时间也随之越来越长,通过Github Action,我们只需要在每次完成博客的编写或修改以后,将改动直接push到远程仓库,之后的编译部署的工作统统交给CI来完成即可。
常量说明
本文内容会出现部分常量名来指代一些名词,请读者根据自己实际情况,对照好常量名
| 常量名 | 常量释义 |
|---|---|
| [Blogroot] | 本地存放博客源码的文件夹路径 |
| [SourceRepo] | 存放博客源码的私有仓库名 |
| [SiteBlogRepo] | 存放编译好的博客页面的公有仓库名 Site指站点,Github中编译好的博客页面仓库名应该为“username.github.io" |
| [SiteUsername] | 用户名 Site指站点 |
| [SiteToken] | 申请到的令牌码 Site指站点, 本文中指代Github Token |
| [GithubEmail] | 与github绑定的主邮箱,建议使用Gmail |
| [TokenUser] | Coding配置特有的令牌用户名 |
以下内容均以Github为例。若使用Gitee、Coding等进行博客部署,请阅读 Akilar的原文
Github Action的使用
获取Token
为了确保交由Github Action来持续部署时,Github Action具备足够的权限来进行hexo deploy操作, 需要先获取Token
访问Github->头像(右上角)->Settings->Developer Settings->Personal access tokens->generate new token,创建的Token名称随意,但必须勾选repo项和workflows项。
Token只会显示一次,请在生成Token之后立即记录下来,否则如果忘记了Token,就必须重新生成重新配置
然后就是创建存放Hexo博客源码的私有仓库[SourceRepo],请注意仓库必须是私有的,因为我们之后要使用Token来上传代码,如果不设置为私有仓库会导致我们的Token泄漏
配置Github Action
以下我会给出两个版本的脚本,请自行参考。脚本1为初学者版本,无其他插件/压缩;脚本2包含了其他插件可能需要的指令,请自行参照博客的实际情况修改脚本代码
在 [Blogroot] 内新建 .github 文件夹,然后 在 .github 文件夹内部新建一个 workflows 文件夹,最后在 workflows 文件夹内新建一个 autodeploy.yml 文件
在 autodeploy.yml 中输入以下脚本
# 脚本1,供初学者使用,如有其他需要在部署前运行的插件(如gulp、hexo-bangumi-bilibili等,请参考脚本2) |
# 脚本2,仅供有其他需要在部署前运行的插件(如gulp、hexo-bangumi-bilibili等)的博客使用,请根据自己博客的实际情况修改下面的脚本代码 |
注意,因为美国一些政治正确的原因,Github于2020年10月后的新建仓库的主分支都改名为 ”main“ 而不是 ”master“,但是Git软件默认的主分支还是 ”master“,所以请用Git查询自己本地的分支,然后把本地的分支推送到Github的 ”main“ 分支上去。例如,我本人的本地分支为 master,那么最后一行就应该为 ”master:main",如果你的本地分支名称不是 “master”,就必须修改,否则就不能部署成功
在本地设置远程仓库和分支
以下分为两种情况:使用过Git管理过博客源代码,和没有使用过Git管理博客源代码
没有使用过Git管理博客源代码
删除或者先把
[Blogroot]/themes/butterfly/.git移动到非博客文件夹目录下,原因是主题文件夹下的.git文件夹的存在会导致其被识别成子项目,从而无法被上传到源码仓库。在博客根目录
[Blogroot]路径下运行指令
git init #初始化 |
- 添加屏蔽项
因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到github上。这样可以显著减少需要提交的文件量和加快提交速度。
打开[Blogroot]/.gitignore,输入以下内容:
.DS_Store |
如果你的主题不是butterfly,那么最后一行请改为你使用的主题
- 运行Git,提交代码
请记住下面三行指令,以后博客部署都是通过这3行指令来完成
git add . |
使用过Git管理过博客源代码
- 添加屏蔽项
因为能够使用指令进行安装的内容不包括在需要提交的源码内,所有我们需要将这些内容添加到屏蔽项,表示不上传到github上。这样可以显著减少需要提交的文件量和加快提交速度。
打开[Blogroot]/.gitignore,输入以下内容:
.DS_Store |
如果你的主题不是butterfly,那么最后一行请改为你使用的主题
- 提交源码到私有仓库
在博客根目录[Blogroot]下启动终端,使用git指令重设仓库地址。这样在新建仓库,我们仍旧可以保留珍贵的commit history,便于版本回滚
git remote rm origin # 删除原有仓库链接 |
查看部署情况
打开Github的私有源码仓库,找到Action
如果出现了上面这样全部打了勾勾,就算是部署成功了。恭喜你,以后就能够通过Github Action直接一键部署,而不是每次部署之前都要用hexo手动编译等待编译完才能部署了
后记
这里可能有同学要问,github action有啥用?这不就是从hexo cl && hexo g && hexo s的三件套变成了git add .,git commit -m "commit content",git push三件套吗?
其实github action的最大作用就是进一步提高速度和便携性,首先,配置要求提交源码这点,萌新小白就没必要再靠本地不断新建压缩包来备份源码了,借助git的版本管理,不管怎么改都可以快速回滚
然后,git提交是增量更新,每次只提交新增或者删改的内容,而hexo deploy是在本地每次重新生成所有静态文件以后再整个提交。github action能帮我们节省大把时间,把最耗时的hexo generate和hexo deploy的工作丢给CI处理。让我们能够专心与编写博客内容,而不是水文3分钟,提交半小时
以后如果有机会,我会再讲讲如何用Github+npm搭建一个属于自己的免费图床和资源床(挖坑环节)
(坑已填,请看 https://yonagi04.github.io/posts/2024/37a28d8d4ce2/)










