之前搞了一个 VuePress 的博客,也很长时间没怎么管了,其实偶尔还是会写一些东西的,但是都没有往上面放。其中有一个原因就是之前操作起来比较麻烦,要写完->提交->构建->更新,一套操作下拉非常费事。如果写完提交就不用管就会方便很多,如果只是想找个地方放一下,通过 GitHub 的 Actions 部署到 GitHub Pages 完全就够了。
# 配置 Pages
Github Pages (opens new window) 是通过 GitHub 托管和发布的公共网页。
目前有官方的中文文档 (opens new window),可以根据文档进行一些比较复杂的配置。
以下配置都是以 Github 用户名为 qccblog
,存储库名称为 qccblog.github.io
为例,实际使用根据对应的用户名和存储库名称进行调整。
打开存储库 https://github.com/qccblog/qccblog.github.io (opens new window),进入 Settings,选择 Pages,选择一个主题(后面随时可以改),选择主题之后会自动打开一个 index.md 文件,编辑完成提交后过一会,回到 Pages 设置页面就会看到一个提示说站点已经发布了。
注意:正常情况下,假定仓库名称为 demo
,那么配置 pages 后访问的地址就是 username.github.io/demo
。如果希望地址是 username.github.io
,那么就要以 username.github.io
作为存储库名称。
# 配置 Actions
首先需要在存储库下新建 .github/workflows/
文件夹,接着在 workflows
文件夹下新增 xxx.yml
文件,这个文件名随意,但是必须是 YAML
格式的文件(也可以直接在界面上通过 Actions 进行操作)。以 deploy.yml
为例:
name: Build and Deploy
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install and Build
run: |
npm install
npm run build
- name: Deploy
uses: JamesIves/github-pages-deploy-action@4.1.3
with:
BRANCH: gh-pages
FOLDER: docs/.vuepress/dist
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
上面这段配置就是告诉 Github Actions,当前 master 分支有 push 操作的时候执行 build-and-deploy 这个任务,这个任务就是在 ubuntu-latest 环境先把代码拉取下来;安装依赖再打包;生成的静态文件部署到 gh-pages 分支上。
上述的配置比较简单,如果最后作为 pages 的仓库和当前仓库是同一个使用上述配置就行了。
实际使用中可能会往存储库中存放一些相关的配置信息,比如 vssueConfig
之类不希望对外暴露的信息,那么存储库就不能设置为 public,但是 pages 对个人而言只有在 public 的时候才是免费使用的,Github也不支持按分支设置是否 public,所以需要另外开一个仓库作为 pages 的存储库,这种情况下下就涉及到跨库保存,不少文章都是使用 Github 的 Token 进行操作(比如 VuePress 文档中的部署 (opens new window) 部分),这边介绍一下怎么使用存储库的 Deploy keys 进行操作。
存储库为 qccblog/blog
,pages 库为 qccblog/qccblog.github.io
为例:
- 生成一对公私钥
ssh-keygen -t ed25519 -C "备注"
- 把生成的.pub 文件内容复制到
qccblog/blog
的 Settings -> Deploy keys 中 - 把私钥文件内容添加到
qccblog/qccblog.github.io
的 Settings -> Secrets -> Actions 中,指定名称为DEPLOY_TOKEN
。 - 配置
qccblog/blog
的 Actions
- name: Deploy
uses: JamesIves/github-pages-deploy-action@4.1.3
with:
BRANCH: gh-pages
FOLDER: public
repository-name: qccblog/qccblog.github.io
force: true
commit-message: Deploy
ssh-key: ${{ secrets.DEPLOY_TOKEN }}
2
3
4
5
6
7
8
9
其他部分和上述一致,给 Deploy 部分新增一些配置,指定提交的仓库,然后配置 ssh-key 进行提交即可。更多的配置可以参考 deploy-to-github-pages (opens new window)。
配置完成之后访问 https://qccblog.github.io (opens new window) 就可以看到效果了。