SYYANI's BLOG

碎碎念

新博客指南

本博客采用GitHub仓库提供的Issue和Actions发布。

Github Issues 本身可以作为一个内容管理的工具,例如借助插件可以将其用于托管博客的评论,它支持Markdown语法,可以粘贴带图,操作上的open和close状态可以对应草稿和发布…非常酷!

image-20230126135808673

How?

这一整个流程,可以简化如下:

  1. 我有一个私有仓,syyani/blog,我在里面码字

  2. 我有一个公开仓,syyani/syyani.github.io,用来发布 GitHub Pages

  3. 在私有仓里,我做了一个 sync workflow。只要 Issues 有任何变化,就触发公开仓的另一个 deploy workflow

    image-20230126140107271

    私有仓yml配置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    name: Sync posts

    on:
    issues:
    workflow_dispatch:

    permissions:
    contents: read

    concurrency:
    group: sync
    cancel-in-progress: true

    jobs:
    sync:
    runs-on: ubuntu-latest
    steps:
    - name: Sync
    run: gh workflow run deploy.yml
    env:
    GH_REPO: SYYANI/SYYANI.github.io
    GH_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
  4. 公开仓的 deploy workflow 作用很简单,就是拉取私有仓的 Issues,生成 posts,然后生成最终 HTML,部署image-20230126140212014

    公开仓的 deploy workflow,大家自己也可以看到:deploy.yml。它的另一个关键是 sync.mjs 这个用来拉取 Issues 并生成 posts 的脚本。

    如果你想把这套流程用到你自己的博客,你需要开一个 Personal Access Token[^👇] 分别加到两个仓库的 Secrets 里(名称为 DEPLOY_TOKEN)。并且对应更改这两个 workflow 里的 GH_REPO 变量。

    [^👇]:首先进入GitHub的设置页面:依次是 Settling -Developer Settling - Personal access tokens - Token(classic) - Generate new token(classic) ,由于只是用来同步仓库,只用给repo权限即可。

Proudly powered by Hexo and Theme by Hacker
© 2024 SYYANI