目录

使用 github actions 自动部署博客

!!! 时间太长,方法可能有所不同了

以我的博客(liutao-me.github.io)为例,自动部署通常有两种:

  • 源码在 master 分支,部署后的在 gh-pages 分支
  • 源码在仓库 A(可以是私有的),部署后在仓库 B (名称通常为 liutao-me.github.io)

第一种部署会方便一些。

第一种

  1. 本机生成公钥和私钥
1
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
  1. Deploy keys 设置

仓库的 Settings -> Deploy keys -> Add deploy key, Title 填 ACTIONS_DEPLOY_KEY , Key 填写上方生成的 gh-pages.pub 的内容

  1. Secrets 设置

仓库的 Settings -> Secrets -> Add a new secret, Name 填 ACTIONS_DEPLOY_KEY , Value 填写上方生成的 gh-pages 的内容

  1. 配置文件

新建文件 .github/workflows/gh-pages.yml ,填入以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
name: github pages

on:
  push:
    branches:
    - master

jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@master
      # with:
      #   submodules: true

    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2.2.3
      with:
        hugo-version: '0.58.3'

    - name: Build
      run: hugo --minify

    - name: Deploy
      uses: peaceiris/actions-gh-pages@v2.5.0
      env:
        ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        PUBLISH_BRANCH: gh-pages
        PUBLISH_DIR: ./public

此代码来自官方网站 https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-repository-type---project

  1. 没了!!!

第二种

基本同第一种。需要注意的地方有两点: 第一,公钥和私钥的配置地方不一样了。

1
When you use ACTIONS_DEPLOY_KEY, set your private key to the repository which includes this action and set your public key to your external repository.

第二,配置文件要改一下,见后文。

具体步骤如下:

  1. 本机生成公钥和私钥
1
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
  1. Deploy keys 设置

仓库 B (名称通常为 liutao-me.github.io) 的 Settings -> Deploy keys -> Add deploy key, Title 填 ACTIONS_DEPLOY_KEY , Key 填写上方生成的 gh-pages.pub 的内容

  1. Secrets 设置

仓库 A 的 Settings -> Secrets -> Add a new secret, Name 填 ACTIONS_DEPLOY_KEY , Value 填写上方生成的 gh-pages 的内容

  1. 配置文件

新建文件 .github/workflows/gh-pages.yml ,填入以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
name: github pages

on:
  push:
    branches:
    - master

jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@master
      # with:
      #   submodules: true

    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2.2.2
      with:
        hugo-version: '0.58.3'
        # extended: true

    - name: Build
      run: hugo --minify

    - name: Deploy
      uses: peaceiris/actions-gh-pages@v2.5.0
      env:
        ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        EXTERNAL_REPOSITORY: liutao-me/liutao-me.github.io
        PUBLISH_BRANCH: master
        PUBLISH_DIR: ./public

此段代码比第一种方法多了一个 EXTERNAL_REPOSITORY: liutao-me/liutao-me.github.io ,同时改了一下 PUBLISH_BRANCH: master (根据你自己的情况而定) 参见 https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-deploy-to-external-repository

  1. 没了!!!

总结

两种方法只需选其一。