阅读此篇文章之前,需具备hexo本地环境的搭建,会用
git push
到Github Pages上使得静态网站可以访问这样的能力。
同样,《Coding持续集成自动部署Hexo博客》还可以试试用Coding-Ci来做这个事情。
Github Actions
做的事情,就是替代你之前在本地构建Hexo环境,并且每次更新还要git推送一次,而现在这一切都放到服务器端来处理,这使得你随时随地都可以发表博客文章,只要有设备能链接上Github即可。
而之前你不但要有链接的上的设备,还要有hexo的运行环境,如果在别的电脑来坐这个事情,那么过程必将是繁琐的,而且就算同步也不好使,因没法在移动端实现吧?
下面开始着手 Github Actions
的实现,自己也折腾了许久才得以完成。
安装hexo必要插件
Github Actions
用的是deploy 方式,得先在本地安装一下此插件 npm install hexo-deployer-git --save
如果你还有其他的插件,一并安装,这些信息应该会更新到 package.json
和 package-lock.json
两文件,我之前失败可能是与此相关。如果有gulp这样的插件,可能还要写入部署配置文件中去 deploy.yml
这是2021年之前是需要的,现在2025年我没有验证是否需要,但我的package.json
是有"deploy": "hexo deploy"
的,应该还是需要的吧。
配置_config.yaml
在Hexo项目根目录配置文件 _config.yaml
中加入如下代码配置,这个文件不是主题里面的那个,请注意。
1 | deploy: |
branch: master
对应的是Github Pages仓库的settings→pages中Build and deployment下的Branch
,如果你这里不是master
,那么就要改为你仓库对应的,因为我的仓库2020年建立的时候就是master,不清楚现在新建是否默认还是master,如下图中的②所示:
密钥生成和Github配置
密钥生成
用git命令生成公私秘钥 ssh-keygen -f github-actions-key
如果你不知道密钥文件文件生成到哪里,可以用 dir
命令回车看看当前目录存在哪些文件,或者 cd /d/
这样就进入D盘根目录,执行上述命令生成即可,一路回车到底,一般默认是在Windows用户文件夹根目录,
完事后应该可以看到一个不带后缀名的文件(是为私钥)和一个带 .pub
后缀名的文件(是为公钥)。
如果你严格执行了我上述命令,那么文件名分别是私钥 github-actions-key
和公钥 github-actions-key.pub
通常前者文件大于后者,文件名跟我不一样也没有关系,反正有.pub的就是公钥,没有的就是私钥,按这个区分就好了。
Github配置
先去github创建一个Private仓库,同时你已经有公开的github pages仓库,这种仓库一般是 你的github用户名.github.io
命名的,并且这个仓库已经存在的,使得通过 你的github用户名.github.io
可访问,如果你都不知道GithubPages做站点,那么建议先看如何通过Github来搭建静态网站吧!
配置公钥 github-actions-key.pub
,用记事本打开这个文件,找到你的Github Pages仓库页面的设置(注意是仓库的设置页面而非帐号的设置页面),操作步骤大致为Settings → Deploy keys → Add deploy key
,Title
为HEXO_DEPLOY_PUB_KEY
,把 github-actions-key.pub
中的内容复制到Key框中。
配置私钥 github-actions-key
私钥,找到你的Private仓库的设置页面(没有如果还没有创建,则先创建,此仓库创建时设置私有),按Settings → Secrets and variables → Actions → New repository secret
把私钥的内容添加进去,此时 Name
中要严格填写 HEXO_DEPLOY_PRIVATE_KEY
否则就要修改 deploy.yml
相应代码。
Github Actions配置
Github Actions
是在你创建的Private仓库中,把hexo源文件传到此仓库,源文件有如下,当然你也可以试试网页版直接上传这些文件和文件夹。
- scaffolds文件夹
- source文件夹
- theme文件夹
- _config.yml
- package.json
- package-lock.json
最后在Private仓库点击 Actions→set up a workflow yourself
对下面的代码做相应修改,粘贴进去,文件名我命名为 deploy.yml
然后提交,便会自动开始运行。
下面代码指定了时区,不然可能会导致你用今天的日期写一篇文章后,尽管自动更新了,文章依旧不发表的问题,因为默认的时区比我们这里慢上好几个小时。下面代码还可在这里查看,更易于复制 https://gitee.com/ct2/web/blob/master/github-actions-hexo.md
1 | # workflow name |
上传到Github私有仓库
在https://github.com/settings/tokens中创建一个用来上传的密钥吧,选择`token (classic),选择范围(Select scopes)仅需勾选
workflow`即可,过期时间(Expiration)最大只能是1年有效期。
创建完成后,我们先把Github端的仓库克隆到本地吧,记得把命令cd到你需要克隆的所在目录,然后执行命令参考如下:
1 | git config --global user.name "你的Github用户名" |
然后把所需文件复制到这个仓库目录下再次执行命令,如果你直接打开cmd命令,那么你需要手动cd到仓库目录,所需文件一般是hexo的如下文件:
- scaffolds文件夹
- source文件夹
- theme文件夹
- _config.yml
- package.json
- package-lock.json
参考如下:
1 | git init |
仅供参考,大致是这么一个过程。