一直使用 Hugo 来生成静态网站,并通过 Travis CI 来自动化部署到 GitHub Pages。今天偶然得知 travis-ci.org 将于五月底关闭,正好趁此机会用 GitHub Actions 来替换 Travis CI。
创建代码仓库
首先按照文档创建 GitHub Pages 站点。该仓库可见性必须是 Public。
另外创建一个仓库用来存放 Hugo 的源文件,名称随意,这里假设仓库名叫 pages-hugo-source
。建议将仓库可见性设置成 Private 以保护好你的源代码。
创建完毕后你的账户下将存在以下两个代码仓库:
https://github.com/<YourName>/<YourName>.github.io
(公开的)https://github.com/<YourName>/pages-hugo-source
(私有的)
创建 Workflow 配置
在 pages-hugo-source
仓库下新建 .github/workflows/hugo.yml
文件。内容如下:
name: Generate Site
on:
push:
branches:
- master
jobs:
build-deploy:
runs-on: ubuntu-18.04
steps:
- name: Check out source
uses: actions/checkout@v2
- name: Setup hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: "latest" # 可以修改为你使用的 Hugo 版本
extended: true # 设置是否需要 extended 版本
- name: Build
run: hugo --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{ secrets.DEPLOY_TOKEN }} # 另外还支持 github_token 和 personal_token
external_repository: <YourName>/<YourName>.github.io` # 修改为你的 GitHub Pages 仓库
publish_dir: ./public
keep_files: false
publish_branch: master
# 如果使用自定义域名,还需要添加下面一行配置
# cname: www.fournoas.com
该配置用到了两个第三方 Actions,分别是 Hugo setup 和 GitHub Pages action。前者用于安装 Hugo,后者用于部署静态站点。
设置 SSH Key
GitHub Pages action 支持三种身份验证方式:
- deploy_key
- github_token
- personal_token
此处使用 deploy_key 方式。
执行命令创建 SSH Key:
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
# You will get 2 files:
# gh-pages.pub (public key)
# gh-pages (private key)
如果在 Windows 系统下运行该命令,要将命令中的 $(git config user.email)
替换成你的邮箱地址。
访问如下地址设置 Public key:
https://github.com/<YourName>/<YourName>.github.io/settings/keys/new
表单中的 Title
随意填写,将刚才生成的 gh-pages.pub
文件内容填入 Key
中,勾选 Allow write access
,点击 Add key
按钮保存。
访问如下地址设置 Private key:
https://github.com/<YourName>/pages-hugo-source/settings/secrets/actions/new
表单中的 Name
填入 DEPLOY_TOKEN
,将刚才生成的 gh-pages
文件内容填入 Value
中,点击 Add secret
按钮保存。
执行 GitHub Actions
将 pages-hugo-source
仓库的代码提交并推送到 GitHub,会自动触发 GitHub Actions 执行。可以访问如下网址来查看 Workflows 是否执行成功:
https://github.com/<YourName>/pages-hugo-source/actions
等待 workflow 执行完毕,静态站点就算是发布成功了。
转自:https://www.fournoas.com/posts/deploy-hugo-site-using-github-actions/
没有评论:
发表评论