用 GitHub Pages + GitHub Actions 部署 Hexo
适合不想注册 Travis CI,只用 GitHub 帐户就能解决问题的朋友(比如我
本文有 增强版 啦!不想让 Hexo 独占 GitHub Pages 的朋友快去看看(
目录
开始
GitHub
别跟我说还没 注册 GitHub
设置 Git,然后在 GitHub 上创建两个 repo。一个 Public repo 用作 GitHub Pages,一个 Private repo 用作存储 Hexo。
将 Private repo clone 到本地。
Hexo
修改 _config.yml
内的以下部分,将 url 和 root 匹配 GitHub Pages 地址。repo 指向 Public repo,使用 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
root: /
deploy:
type: git
repo: [email protected]:username/username.github.io.git
branch: master
将文件夹内所有文件移至 Private repo 文件夹,git add *
& git commit -m init
& git push
提交上传。
GitHub Actions
在当前目录生成一个 ssh 密钥对。请勿在 repo 文件夹生成并上传到 GitHub
ssh-keygen -f ./hexo-deploy
在 Public repo settings 添加 Depoly keys,Title 为 HEXO_DEPLOY_PUB
,Key 为 hexo-deploy.pub
文件内的内容,勾选 Allow write access。
在 Private repo settings 添加 Secrets。
Name | Value |
---|---|
GIT_EMAIL | 填写 Git 邮箱(执行 git config user.email 查看) |
GIT_USER | 填写 Git 用户名(执行 git config user.name 查看) |
HEXO_DEPLOY_PRI | 填写 hexo-deploy 文件内的内容 |
添加完毕后可以删除密钥文件。
在 Private 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
提交上传。
结束
是的,完工了。在此之后,每当 Private repo 产生了新的 commit,GitHub Actions 都会自动 deploy 到 Public repo,再由 GitHub Pages 生成页面,剩下要做的事就只有在本地或网页对 Private repo 提交新增或修改。
至于更换 NexT 主题、添加新文章或页面等就属于如何玩 Hexo 的事了,我就不讲了(
听说有人需要这个,就趁机把两个月前闲着没事搞的事情拿出来水一篇 blog
我都有 Typecho 了,还要啥 Hexo
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
好文明。