适合照着 上篇文章 做结果想复用 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

安装 Hexo,创建一个新文件夹并 建站

安装 hexo-deployer-git

修改 _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 需修改 urlroot,并且在 source 文件夹下添加 CNAME 文件,包含 custom domain。

结束

是的,完工了。在此之后,每当 blog-source repo 产生了新的 commit,GitHub Actions 都会自动 deploy 到 blog repo,再由 GitHub Pages 生成页面,剩下要做的事就只有在本地或网页对 blog-source repo 提交新增或修改。

至于更换 NexT 主题、添加新文章或页面等就属于如何玩 Hexo 的事了,我就不讲了(

我都有 Typecho 了,还要啥 Hexo

Snipaste_2020-03-10_17-14-28.png

参考链接

标签: none

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

添加新评论