主要原理就是通過 GitHub Action 來監聽 issue 的相關事件,然後讀取 issue 中的內容創建檔案提交到 git 上,最後直接部署。這樣就能隨時編輯並展示了。
具體可以看 add event to myb log 這個倉庫,
以及使用方式。
接下來介紹如何開發一個 GitHub Action:
1. 克隆官方提供的範本#
官方主要對 TypeScript 的支援比較好,提供了一系列的工具包,沒辦法只能用 TypeScript 來進行開發,
2. 定義想要在執行時使用者輸入的參數#
通過編輯 action.yml
這個檔案來定義想要在執行時定義的參數,例如 GITHUB_TOKEN
:
name: 'add event to my blog'
description: 'add event to my blog'
author: 'fzdwx'
branding:
icon: 'archive'
color: 'white'
inputs: # 在這個 key 下面添加自定義參數
token:
required: true
description: 'the repo PAT or GITHUB_TOKEN'
runs:
using: 'node16'
main: 'dist/index.js'
參數有三個屬性:
required: 是否必須
description: 描述
default: 默認值
3. 實現想要的功能#
詳細可以查看我的主要程式碼。我的程式碼主要做了以下事情:
- 根據當前 issue number 獲取該 issue 的內容。
- 根據預定義的模板,創建檔案內容。
- 提交到git上。
4. 發布到 Marketplace#
需要勾選 Publish this Action to the GitHub Marketplace,可能需要 2FA 認證,找一個 GitHub 支援的驗證器(我用的是 Authy,防止後面忘記了)就可以了。
成功 release 後就能在其他專案中使用了。