Hugo Future Imperfect Slim

L-Lawliet's Blog

记录游戏开发的点点滴滴

Github Action自动化部署Hugo

教你如何使用Github Action自动化部署Hugo静态页面

Lawliet

1 分钟

Colourful

每次用Hugo写完Blog,都要重新编译,然后提交到对应的仓库,重复并且繁琐。所以,这里就教大家如何使用Github的自动化构建工具-Action,自动编译部署到Github Pages上。

由于本文只是教如何使用Github Action,因此,Hugo的调试和部署,不额外拓展。

Repositorie

创建两个仓库用于后续Action使用

Source Repositorie

  • 创建一个{xxxxx}.github.source

P.S.{xxxxx}为自己的域名。

  • Source仓库,是用来放置Hugo源码的。

Page Repositorie

  • 创建一个{xxxxx}.github.io

P.S.{xxxxx}为自己的域名。如果使用Github Pages的域名,请与Github账号名一致

  • Page仓库用于放置生成后的Html页面

Github Action

使用Action自动化部署到Pages

Create ssh-keygen

// 使用命令生成公钥和密钥
// {email}为你的邮箱地址
// 注意:不要输入密码,直接回车即可,因为有密码的话,Action运行时会卡在输入密码的步骤
ssh-keygen -t rsa -b 4096 -C "{email}"

这样,本地就会产生一个公钥和一个密钥

记住,一定要生成4096以上,不然后续Action时无法正常连接Pages仓库

Source Repositorie

  • 进入"Settings/secrets/Actions”
  • 点击"New repository secret”
  • Title填写"ACTIONS_DEPLOY_KEY”
  • Value填写私钥文件的内容
  • 确定

secret

Pages Repositorie

  • 进入"Settings/Deploy keys”
  • 点击"Add deploy key”
  • Title填写"Public of ACTIONS_DEPLOY_KEY”
  • Key填写.pub文件(公钥)的内容
  • 勾选"Allow write access”
  • 确定

deploy key

Add Action

在源码仓库的”.github/workflows"下已经有"gh-pages.yml"用于生成Pages

如果没有,请完整阅读"Create Action”。

Create Action

参考actions-hugo

name: github pages

on:
  push:
    branches:
      - master  # Set a branch to deploy

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: '0.74.2'
          extended: true

      - name: Setup Node
        uses: actions/setup-node@v1
        with:
          node-version: '12.x'

      - name: Cache dependencies
        uses: actions/cache@v1
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - run: npm ci

      - name: Build
        run: hugo --minify

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        with:
          deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
          external_repository: 
          publish_dir: ./public
          publish_branch: master  # deploying 
          cname: 

Change Action

  • hugo-version为Hugo版本,尽量改成与自己调试的环境一直版本
  • 修改deploy_key为"${{ secrets.ACTIONS_DEPLOY_KEY }}”

ACTIONS_DEPLOY_KEY为刚才添加的密钥

  • 修改external_repository为放置Pages的Repositorie地址
  • 修改publish_branch为Page仓库的主干,例如master或者main
  • 增加cname为你的域名,用于域名解析。P.S.如果没有,则注释或者删除此行

Deploy

当你在Source Repositorie提交修改时,“github pages”这个action就会自动启动,然后初始化环境、编译、部署,实现完全的自动化。而你,只需要在提交文章几分钟后,刷新一下页面。

deploy

说些什么

评论

还沒有留言。

最新文章

Colourful

HLSL

分类

关于

记录游戏开发的点点滴滴