改进了一下自动化发布博客的 CI,代码在下面。

如果想拿去用的话只需要修改 env 下的值就行了。

name: blog

on: [push]

# 各种信息在此处设置
env:
  # config.toml 里 theme 的值
  THEME_NAME: left
  # 主题的 github 链接
  THEME_REPO: https://github.com/batkiz/left.git
  # github username
  USER_NAME: batkiz
  # github email
  EMAIL: batkiz@outlook.com
  # GitHub token
  GH_TOKEN: ${{ secrets.GH_TOKEN }}

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      # 获取 repo 内文件
      - uses: actions/checkout@v2
      # 使用预编译的 Hugo 二进制文件
      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2.2.2
        with:
          hugo-version: "latest"
          extended: true

      # 新建站点
      - name: new site
        run: |
          hugo new site $HOME/blog

      # 获取主题
      - name: get theme
        run: |
          git clone --depth=1 $THEME_REPO $HOME/blog/themes/$THEME_NAME

      # 获取 $user.github.io 以保持 commit 记录
      - name: get username.github.io
        run: |
          git clone --no-checkout https://github.com/$USER_NAME/$USER_NAME.github.io.git $HOME/blog/public

      # 将内容文件复制进入站点内
      - name: copy in
        run: |
          rm -rf $HOME/blog/config.toml $HOME/blog/content/
          /bin/cp -rf config.toml $HOME/blog/config.toml
          /bin/cp -rf content/ $HOME/blog/content/

      # build
      - name: build
        run: |
          cd $HOME/blog
          HUGO_ENV=production hugo --gc --minify

      # 将生成出的站点推向 user.github.io
      # 由于使用了 actions/checkout@v2,所以不再需要设置 github token
      - name: publish
        run: |
          git config --global user.name $USER_NAME
          git config --global user.email $EMAIL
          cd $HOME/blog/public
          git add .
          git commit -m "Auto Update: `date +'%Y-%m-%d %H:%M:%S'`"
          git push "https://$USER:$GH_TOKEN@github.com/$USER_NAME/$USER_NAME.github.io.git" master:master

附赠本人用于存放 blog 内容仓库的gitignore

/archetypes/
/data/
/layouts/
/public/
/resources/
/static/
/themes/