使用 GitHub Actions 完成 Hexo 博客的自动生成与部署

虽然现在博客已经迁移到 WordPress 上,但是每次还是会在本地通过 hexo new xxx 来生成一份本地文件。

而我的 Hexo 原始文件是按照

使用hexo,如果换了电脑怎么更新博客? – CrazyMilk的回答 – 知乎 https://www.zhihu.com/question/21193762/answer/79109280

这种方式来进行备份的。因为更换了新的电脑,把仓库 clone 下来的时候因为网络的问题 npm install 总是失败,并且在本地写文章然后 push 然后再执行Hexo 相关的指令相对来说比较复杂。所以就想到把 Hexo 的生成和部署让某些东西自动完成,在本地只需要负责写作就好。

使用 GitHub Actions 在 push 的时候自动生成和部署hexo静态页面

首先要为仓库生成一个 Deploy Key

ssh-keygen -t rsa -b 4096 -C "[email protected]"

然后在这一步输入这对 Key 的文件名,如果直接回车会覆盖掉自己的 Key

Generating public/private rsa key pair.
Enter file in which to save the key (/home/yourname/.ssh/id_rsa):

接下来去仓库的setting里面

在 Deploy keys 这里把刚刚生成的密钥对中的公钥添加进去

然后在 Secrets 里把刚刚生成的密钥对中的私钥添加进去,名字可以随意取,在 GitHub Actions 中以 ${{secrets.YOUR_NAME}}引用

Screenshot from 2019-12-25 11-55-21.png

创建一个 GitHub Actions WorkFlow

在目录下创建 .github/workflow/your-action-name.yml

name: deploy hexo

on:
push:
  branches:
    - hexo

jobs:
generate-and-deploy:
  runs-on: [ubuntu-latest]
  steps:
    - name: checkout
      uses: actions/[email protected]
      with:
        ref: hexo
         
    - name: setup node env
      uses: actions/[email protected]
      with:
        node-version: "10.x"

    - name: setup ssh ang git env
      env:
        PRIVATE_KEY: ${{secrets.HEXO_DEPLOY_KEY}}
      run: |
        mkdir -p ~/.ssh/
        echo "$PRIVATE_KEY" > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        # set git infomation
        git config --global user.name 'your name'
        git config --global user.email 'your email'
        npm install & npm install -g hexo-cli
        npm install hexo-renderer-scss --save
         
    - name: gengration and deploy
      run: hexo g -d
     

具体的用法可以查看官方文档

on:
push:
  branches:
    - hexo

表示在 hexo 分支 push 触发。jobs 表示执行任务,一个 jobs 可以包含多个 steps

      - name: checkout
      uses: actions/[email protected]
      with:
        ref: hexo
    - name: setup node env
      uses: actions/[email protected]
      with:
        node-version: "10.x"

使用 checkout 获取 hexo 分支的源码 ,并设置 node 环境

     - name: setup ssh ang git env
      env:
        PRIVATE_KEY: ${{secrets.HEXO_DEPLOY_KEY}}
      run: |
        mkdir -p ~/.ssh/
        echo "$PRIVATE_KEY" > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        # set git infomation
        git config --global user.name 'your name'
        git config --global user.email 'your email'
        npm install & npm install -g hexo-cli
        npm install hexo-renderer-scss --save
         
    - name: gengration and deploy
      run: hexo g -d

然后就很常规的写入 ssh key 然后安装相应的东西,最后调用 hexo 的命令进行生成和部署

查看执行情况

可以去项目仓库的 actions 查看每个 workflow 的执行情况

发表评论

电子邮件地址不会被公开。 必填项已用*标注