写在前面的话,事情应该发生在去年我换电脑的时候,因为博客使用hexo
搭建的,所以源代码也就都遗留在了本地,每次发布的时候只提交generator
之后剩余的静态资源文件。
但是换完电脑忘记拷贝源代码了,所以给自己埋的坑就是原来写的博客源文件全部遗失。不过没关系,正好我有重头开始的准备。
这不,Github Action
出现了,从根本上解决了我的痛点。
认知储备
什么是Github Actions
?
直接点击传送门,看看阮一峰大佬的Github Actions 入门教程;
git
公钥、私钥的理解
git
的公钥与私钥好比钥匙与锁的关系,一个公钥对应一个私钥。
如何生成?
$ ssh-keygen -t rsa -C 'your email'
会有两个文件,一个文件是xxx.pub
是公钥,xxx
是私钥与之对应。
具体解释,参见 服务器上的 Git - 生成 SSH 公钥
怎么理解Hexo
博客自动部署?
简单来讲就是借助Github Actions
所提供的虚拟机环境,读取博客源仓库
所携带的私钥,写入虚拟机环境的~/.ssh/id_rsa
,保证正常push
可以有权限进行。而对应的公钥则是保留在目标仓库里面。
其实核心操作还是Hexo
提供的deploy commond
;
参见hexo官方文档-部署当执行
hexo deploy
时,Hexo
会将public
目录中的文件和目录推送至_config.yml
中指定的远端仓库和分支中,并且完全覆盖该分支下的已有内容。
开始部署
文章假设你已经准备好了两个仓库blog(应该设置为私有仓库,毕竟一些隐私密码都会存在这里)
andxxx.github.io
。前者用于存放hexo博客源代码,后者用于自动部署的仓库。
绑定公钥与私钥,公钥
----->xxx.github.io
,私钥
----->blog
;
下图应该详细阐述了怎么绑定公钥与私钥~
编写Github Actions workflow file
name: Deploy Blog
on: [push] # 当有新push时运行
jobs:
build-and-deploy: # 创建job
runs-on: ubuntu-latest # 在最新版的Ubuntu系统下运行
steps:
- name: Checkout # 将仓库内master分支的内容下载到工作目录
uses: actions/checkout@v1 # 脚本来自 https://github.com/actions/checkout
- name: Use Node.js 10.x # 配置Node环境
uses: actions/setup-node@v1 # 配置脚本来自 https://github.com/actions/setup-node
with:
node-version: "10.x"
- name: Setup Hexo Env
env:
ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_KEY }} # 拿到仓库配置的私钥:HEXO_DEPLOY_KEY
run: |
# set up private key for push code
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa # 配置秘钥
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
# set git config
git config --global user.name "your name"
git config --global user.email "your email"
# install dependencies
npm i -g hexo-cli # 安装hexo
npm i
- name: Hexo Deploy
run: |
# deploy and automatic push code
hexo generate && hexo deploy # 执行部署程序
温馨提示: 别懵了啊,这个文件是在blog
仓库下建立的。
The End
最后,来看看我们的成果吧~
有没有视觉疲劳呢?来放松一下吧~
我是书生,一个穷书生~ 博客地址:bigdreamer.cc GitHub地址: github.com/bigbigDream…