阅读此篇文章之前,需具备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
配置_config.yaml
在Hexo项目根目录配置文件 _config.yaml
中加入如下代码配置,这个文件不是主题里面的那个,请注意。
deploy:
type: git
repo: [email protected]:Github用户名/Github用户名.github.io.git
branch: master
密钥生成和Github配置
密钥生成
用git命令生成公私秘钥 ssh-keygen -f github-actions-key
如果你不知道密钥文件文件生成到哪里,可以用 dir
命令回车看看当前目录存在哪些文件,或者 cd /d/
这样就进入D盘根目录,执行上述命令生成即可,一路回车到底
完事后应该可以看到一个不带后缀名的文件和一个带 .pub
后缀名的文件。
如果你严格执行了我上述命令,那么文件名分别是 github-actions-key
和 github-actions-key.pub
通常前者文件大于后者。
Github配置
先去github创建一个Private仓库,同时你已经有公开的github pages仓库,这种仓库一般是 你的github用户名.github.io
命名的,并且这个仓库已经存在问题,使得通过 你的github用户名.github.io
可访问。
配置 github-actions-key.pub
公钥,登录你的github,在右上角点击你的头像后,点击 Settings–>SSH and GPG keys
把公钥文件的内容粘贴进去。
配置 github-actions-key
私钥,找到你的Private仓库,在仓库中点击 Settings->Secrets
把私钥的内容添加进去,此时 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
# workflow name
name: Hexo Github Actions
# master branch on push, auto run
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
# check it to your workflow can access it
# from: https://github.com/actions/checkout
- name: Checkout Repository master branch
uses: actions/checkout@master
# from: https://github.com/actions/setup-node
- name: Setup Node.js 10.x
uses: actions/setup-node@master
with:
node-version: "10.x"
- name: Setup Hexo Dependencies
run: |
npm install hexo-cli -g
npm install
- name: Setup Deploy Private Key
env:
HEXO_DEPLOY_PRIVATE_KEY: ${{ secrets.HEXO_DEPLOY_PRIVATE_KEY }}
run: |
sudo timedatectl set-timezone "Asia/Shanghai"
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
- name: Setup Git Infomation
run: |
git config --global user.name 'Github用户名'
git config --global user.email 'Github注册邮箱'
- name: Deploy Hexo
run: |
hexo clean
hexo generate
hexo deploy