Github Action自动化部署Hugo
教你如何使用Github Action自动化部署Hugo静态页面
每次用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填写私钥文件的内容
- 确定
Pages Repositorie
- 进入"Settings/Deploy keys”
- 点击"Add deploy key”
- Title填写"Public of ACTIONS_DEPLOY_KEY”
- Key填写.pub文件(公钥)的内容
- 勾选"Allow write access”
- 确定
Add Action
在源码仓库的”.github/workflows"下已经有"gh-pages.yml"用于生成Pages
如果没有,请完整阅读"Create Action”。
Create Action
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就会自动启动,然后初始化环境、编译、部署,实现完全的自动化。而你,只需要在提交文章几分钟后,刷新一下页面。
评论
还沒有留言。