用 GitHub Pages + GitHub Actions 部署 Hexo [增强版]
适合照着 上篇文章 做结果想复用 GitHub Pages 网址搞多个事情而不愿意让 Hexo 独占的朋友。
本篇将会把上篇内容大量贴过来以便偷懒
目录
开始
GitHub
别跟我说还没 注册 GitHub
设置 Git,我们需要整三个 repo。
Public repo
创建 blog
,地址为 username.github.io/blog
,用于 Hexo 页面。
创建 username.github.io
,地址为 username.github.io/blog
,用途随意。
其他要做 GitHub Pages 的 repo 网页地址就会是 username.github.io/repo
,可以随便开,没有影响。
Private repo
创建 blog-source
用于存储 Hexo 源码。
将 blog-source
clone 到本地。
Hexo
修改 _config.yml
内的以下部分,将 url 和 root 匹配 Hexo 网页地址。repo 指向 blog
,使用 SSH url,可在 repo 页面 Clone or download -> Use SSH 查看。
_config.yml
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://username.github.io/blog
root: /blog/
deploy:
type: git
repo: [email protected]:username/blog.git
branch: master
将文件夹内所有文件移至 blog-source
文件夹,git add *
& git commit -m init
& git push
提交上传。
GitHub Actions
在当前目录生成一个 ssh 密钥对。请勿在 repo 文件夹生成并上传到 GitHub
ssh-keygen -f ./hexo-deploy
在 blog
repo settings 添加 Depoly keys,Title 为 HEXO_DEPLOY_PUB
,Key 为 hexo-deploy.pub
文件内的内容,勾选 Allow write access。
在 blog-source
repo settings 添加 Secrets。
Name | Value |
---|---|
GIT_EMAIL | 填写 Git 邮箱(执行 git config user.email 查看) |
GIT_USER | 填写 Git 用户名(执行 git config user.name 查看) |
HEXO_DEPLOY_PRI | 填写 hexo-deploy 文件内的内容 |
添加完毕后可以删除密钥文件。
在 blog-source
repo 文件夹内创建 .github/workflows/actions.yml
。(需要手动新建 .github 和 workflows 文件夹)
actions.yml
name: Deploy Hexo
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x]
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Configuration environment
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
GIT_USER: ${{secrets.GIT_USER}}
GIT_EMAIL: ${{secrets.GIT_EMAIL}}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "$GIT_USER"
git config --global user.email "$GIT_EMAIL"
- name: Install dependencies
run: |
npm i -g hexo-cli
npm i
- name: Deploy hexo
run: |
hexo g -d
提交上传。编译完成后记得去 blog
repo settings 开启 GitHub Pages。
GitHub Pages 与 Cloudflare
如果有 custom domain 需求,并且域名使用 Cloudflare 托管,可先添加 CNAME 记录指向 username.github.io
,在 https://github.com/username/repo/settings/pages
填入 custom domain 并保存。无需勾选 Enforce HTTPS
,验证通过后在 Cloudflare 开启 Proxied
即可。
Hexo 需修改 url
和 root
,并且在 source
文件夹下添加 CNAME
文件,包含 custom domain。
结束
是的,完工了。在此之后,每当 blog-source
repo 产生了新的 commit,GitHub Actions 都会自动 deploy 到 blog
repo,再由 GitHub Pages 生成页面,剩下要做的事就只有在本地或网页对 blog-source
repo 提交新增或修改。
至于更换 NexT 主题、添加新文章或页面等就属于如何玩 Hexo 的事了,我就不讲了(
我都有 Typecho 了,还要啥 Hexo
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。