Hugo使用Github Action自动部署博客到Github Pages
github actions提供了免费的CI/CD功能,能够响应github repo的事件执行一系列自动化的操作。
hugo可以生成静态博客,但是没有像hexo那样内置部署到github的功能,但官方也提供了部署到github pages的文档。
hugo手动部署到github pages很简单:
- 使用
hugo
或hugo --minify
生成静态网页 - 将静态网页push到建好的github pages repo中,一般是
<username>/<username>.github.io
而设置github actions自动部署稍微麻烦点:
我将博客源码分开存放到一个private repo里,也可以将源码放到github pages repo中,但这样其他人能获取文章的源文件。分开存放这种情况需要获取一个personal_token
或者deploy_key
,这里选择personal_token
的方式,这种方式更简单,后者可以自行了解。
首先点击github头像在下拉栏里进入Setting-Developer Settings-Personal access tokens
选择Generate new token
在上方填入名字,并勾选repo里的所有选项:
还有admin:repo_hook
点击Generate token
生成token,并先复制保存该token。
然后执行以下几步:
在源码repo里新建一个github-actions分支:
git checkout -b github-actions
在repo根目录新建嵌套的两个文件夹
.github/workflows
在
workflows
里新建一个后缀为.yml
的配置文件,名字自取。写进去以下配置(从hugo官方文档修改而来):
|
|
将上面的内容commit并push到github之后,可以在源码repo的Actions一栏里看到上面的任务已经自动运行了,但是现在还没有添加上面生成的personal access token,源码repo是没有更改其他repo的权限的,所以任务会失败,但是说明github actions已经被引入到项目中,开始正常工作了。
接下来在源码repo中添加上面的personal access token:
进入repo的Settings-Secrets
一栏,选择New repository secret
在下面填入刚才生成的token,名字注意需要与上面yml文件里XXX相同
personal_token: ${{ secrets.XXX }}
添加token之后,进入github actions里点击刚才失败的任务,点击右上角Re-run jobs
这时应该能够成功运行该任务,这说明自动部署已经开始在工作了,只需要将github actions配置文件里的github-actions部分改成main,再将其与main分支合并即可,以后往main分支push新文章时github actions会自动生成静态博客并发布到github pages中。
|
|
参考资料: