基于 Github Pages 的 hexo 博客搭建

CListery ARE YOU OK?

先决条件

网站源码库

  • 私有仓库,存放你手写的博客源代码,简称 库1

主题库

  • 私有仓库,存放你自定义的主题代码,将其作为 git submodule 添加到 库1,简称 库2

Github Pages 库(xxx.github.io)

  • 公共库,存放通过前两个仓库生成的网站页面,简称 库3

配置

给公共库配置部署密钥

用于 库1库2 的代码编译后自动部署到 库3

生成密钥

1
ssh-keygen -t ed25519 -C "clistery.github.io" # 这里的名字取什么都行

上传密钥到 库3

  • 打开 库3 -> Settings -> Security -> Deploy keys -> 将刚才生成的公钥填到这里面

配置 PAT(Personal Access Token)

用于 Workflow 自动部署是可以对库进行读写

  1. 点击 Github 右上角头像 -> Settings -> Developer settings -> Personal access tokens -> Tokens(classic) -> Generate new token (classic)
  2. Note 可以随意填写,最好自己看见能懂就行
  3. Expiration 过期时间,可以选择不过期
  4. Select scopes 中勾选 workflowwrite:packages
  5. Generate token
  6. 然后把生成的 token(ghp_xxxxx) 保存下来备用

创建 Workflow

让 库1 & 库2 生成的代码能自动发布到 库3

  • 打开 库1 -> Action -> New workflow -> Simple workflow -> Configure
    (或者直接在 库1 的根目录创建 .github/workflows/xxx.yml)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    name: Hexo Build & Deploy - Private to Public

    on:
    push:
    branches: [ main ]

    jobs:
    build:
    runs-on: ubuntu-latest

    steps:
    # 检出 库1 & 库2
    - name: Checkout
    uses: actions/[email protected]
    with:
    token: ${{ secrets.CHK_PAT }} # Personal Access Token,稍后我们会在 库1 中进行配置
    submodules: 'true' # 检出 submodule
    persist-credentials: false

    # 设置 node 环境
    - name: Prepare Node env
    uses: actions/setup-node@v3
    with:
    node-version: 16

    # 设置 hexo 环境并编译
    - name: Hexo
    run: |
    npm i -g hexo-cli
    npm i
    hexo clean && hexo g

    # 将生成的文件发布到 库3
    - name: Deploy
    uses: JamesIves/[email protected]
    with:
    ssh-key: ${{ secrets.DEPLOY_KEY }} # 部署密钥的私钥,稍后我们会在 库1 中进行配置
    repository-name: clistery/clistery.github.io # 库3的名字,格式为 user/repository
    branch: main # 发布到库3的 main 分支
    folder: public # 库3的类型,公共库
    single-commit: true
    commit-message: "Deploy by source"

配置 Workflows 变量

  • 打开 库1 -> Settings -> Security -> Secrets -> Actions

  • 配置 CHK_PAT

    1. 点击 New repository secret
    2. Name 输入 CHK_PAT
    3. Secret 输入 配置 PAT(Personal Access Token) 时生成的 token
    4. Add secret
  • 配置 DEPLOY_KEY

    1. 点击 New repository secret
    2. Name 输入 DEPLOY_KEY
    3. Secret 输入 生成密钥 时生成的私钥
    4. Add secret

最后

现在一切配置妥当之后,你就可以向 库1库2 中推送代码,workflow 就会自动将代码部署到 库3 中,不出意外的话就可以在 xxx.github.io 中看到更新了

  • 标题: 基于 Github Pages 的 hexo 博客搭建
  • 作者: CListery
  • 创建于 : 2022-10-19 16:33:05
  • 更新于 : 2024-11-15 15:53:32
  • 链接: http://clistery.github.io/2022/10/19/blog/hexo-setup/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论