点击任意处关闭

利用 GitHub Actions 自动部署 Hexo 博客


简介 GitHub Actions

GitHub Actions 是 GitHub 官方推出的持续集成/部署模块服务(CI / CD),只需一个配置文件即可自动开启服务,而且自带云环境运行。

概念解释
workflow持续集成一次运行的过程
job一个 workflow 由一个或多个 job 构成
step每个 job 由多个 step 构成,一步步完成
action每个 step 可以依次执行一个或多个 action

配置 hexo deploy

安装 hexo-deployer-git

$ npm install hexo-deployer-git --save

在 Hexo 的 _config.yml 中加入下方的内容,并做好配置。

deploy:
  type: git
  repository: https://<user-name>:<token>@github.com/<user-name>/<repository>
  branch: [branch]

创建仓库

在 GitHub 中创建一个代码仓库,随后将网站的源文件提交至该仓库中。

配置 SSH Key

打开 Git Bash 命令行窗口,检查是否已有 SSH Key。

$ cd ~/.ssh

如果提示没有的话,输入下方代码生成。

$ ssh-keygen -t rsa -C "example@email.com"

SSH Key 准备完毕后,首先复制秘钥

$ clip < ~/.ssh/id_rsa

然后在之前创建的源文件仓库 Settings>Secrets 中创建一个名为 SSH_PRIVATE 的 Secrets,并将 Value 设置为秘钥的值

接着复制公钥

$ clip < ~/.ssh/id_rsa.pub

网站仓库 Settings>Deploy Keys 中添加一个 Deploy Key,名称任意,并将 Key 设置为公钥的值

创建 workflow

在博客目录下创建 .github/workflows/xxx.yml 文件,文件名任意。

文件内容如下[1],可以根据自己的需要增减步骤。

name: Deploy                      # Actions 显示的名字,随意设置

on: [push]                        # 监听到 push 事件后触发

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Checkout              # 拉取当前执行 Actions 仓库的指定分支
      uses: actions/checkout@v2
      with:
        ref: master

    - name: Update Submodule      # 如果仓库有 submodule,在这里更新,没有则删掉此步骤
      run: |
        git submodule init
        git submodule update --remote

    - name: Setup Node            # 安装 Node 环境
      uses: actions/setup-node@v1
      with:
        node-version: "10.x"      # Node 版本

    - name: Hexo Generate         # 安装 Hexo 依赖并且生成静态文件
      run: |
        rm -f .yarnclean
        yarn --frozen-lockfile --ignore-engines --ignore-optional --non-interactive --silent --ignore-scripts --production=false
        rm -rf ./public
        yarn run hexo clean
        yarn run hexo generate

    - name: Hexo Deploy           # 部署步骤,这里以 hexo deploy 为例
      env:
        SSH_PRIVATE: ${{ secrets.SSH_PRIVATE }}
        GIT_NAME: yourname        # 在此处填写 GitHub 的用户名
        GIT_EMAIL: your@email.com # 在此处填写邮箱
      run: |
        mkdir -p ~/.ssh/
        echo "$SSH_PRIVATE" | tr -d '\r' > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        git config --global user.name "$GIT_NAME"
        git config --global user.email "$GIT_EMAIL"
        yarn run hexo deploy

文件中的 GIT_NAMEGIT_EMAIL 需要自行修改。Node 版本可以根据需要更改。
至此就已经配置好了。

使用

当我们提交修改后,GitHub 就会自动执行配置好的步骤,完成博客的部署。

自动化流程

参考


  1. https://hexo.fluid-dev.com/posts/actions-deploy/ ↩︎


Title
Subtitle
00:00 / 00:00
播放列表