背景
在玩 Hexo 博客的时候,每次提交写文章,发文章都要在本地先写完,在编译在发布。步骤可谓是极其繁琐,要没个耐心怕早早就弃坑了。幸好 Github 有一个能实现自动化的功能—— Github Action 。于是乎就有了下文—>
实现
Github 实现
基本准备
- 在 Github 上创建一个仓库,仓库命名随便(你找得到就行)。因为 Github 被微软收购的原因,个人用户现在也能建立私有仓库了,所以_–>。这个仓库是用来放你 Hexo 博客源码的
- 在本地用 ssh-keygen 命令生成一组公私秘钥。
- 进入源码仓库–>Settings–>Secrets里添加生成的私钥,名称为 ACTION_DEPLOY_KEY ;添加名称为 GIT_EMAIL 内容为你的 git 邮箱 ;添加 GIT_NAME 内容为你的 git 用户名。(跟下面代码要一致)
- 进入博客仓库–>Settings–>Deploy keys里添加生成的公钥,名称自己随便写,我用的是(ACTION_DEPLOY_KEY )
正式开始
- 如图所示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rw9H1vtB-1638444776099)(//cdn.jsdelivr.net/gh/Qj9901/CDN@0.0.3/blog/img/Github_action/Github-action.jpg)]
- 配置 Github Actions ,代码如下
name: 自动部署 Hexo
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- name: 开始运行
uses: actions/checkout@v1
- name: 设置 Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: 设置环境
env:
ACTION_DEPLOY_KEY: ${{ secrets.ACTION_DEPLOY_KEY }}
TZ: Asia/Shanghai
run: |
# set up private key for deploy
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" | tr -d '\r' > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
# set git infomation
git config --global user.name '${{secrets.GIT_NAME}}'
git config --global user.email '${{secrets.GIT_EMAIL}}'
- name: 安装 Hexo CI
run: |
export TZ='Asia/Shanghai'
npm install hexo-cli -g
- name: 缓存
uses: actions/cache@v1
id: cache-dependencies
with:
path: node_modules
key: ${{runner.OS}}-${{hashFiles('**/package-lock.json')}}
- name: 安装插件
if: steps.cache-dependencies.outputs.cache-hit != 'true'
run: |
npm install
- name: 部署博客
run: |
hexo clean && hexo g && hexo d
至此 Github 完成
Coding 实现
有了前面 Github 的实现,Coding 就简单了。
基本准备
- 按图所示,创建令牌 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-khZ5xM1d-1638444776101)(//cdn.jsdelivr.net/gh/Qj9901/CDN@0.0.3/blog/img/Github_action/coding.jpg)]
- 创建完后会有一个私人密钥,只出现一次,记得保存。
- 令牌创建完后就可以通过
https://令牌用户名:令牌密钥@你的仓库地址
来控制你的仓库了
正式开始
- 进入你的 Hexo 博客根配置文件中,将 Coding 的 deploy 换成
https://令牌用户名:令牌密钥@你的仓库地址
- 将你的 Hexo push到 GitHub 就实现双线部署了。
Ps:代码是从别处找到的,具体忘记在哪了。。。
写于 2020-03-16