Obsidian發佈到github.io
前言
前陣子弄好了Obsidian自動發佈到vercel,
成果也還不錯,但就是偶爾有點問題,
因為是免費用戶,所以會碰到無法更新。
有天一怒之下,就自己改成用github了。
正文
首先前面還是一樣160.Obsidian發佈網站,
步驟要先設定好從Obsidiant傳到你的github。
當你在Obsidian選擇publish時,會將內容傳到public_vercel 這個repository。
所以,接下來的流程是,在public_vercel 使用github action,
將obsidian的內容編譯成html,再轉到github的網站上面。
-
到github建立個人網頁
到github,建立一個自己使用者的子網域,
repository的名稱會是user.github.io
這種名稱,
只有user
這個字可以改。
建立完後,可以先弄個index.html到github裏面,
然後訪問剛剛建立的網址,
我建立的名稱為daimom.github.io
所以網址就是 daimom.github.ioref. github_page
-
將npm轉成pnpm
其實這一步也可以不做,
那就是寫github action的時候,不能用pnpm只能用npm,
程式應該也要小改一下,
但pnpm會比較快,我就順便改一改了。
到 public_vercel的資料夾底下,執行下面三行,參考從 npm 遷移到 pnpm,
有些步驟我測試是不需要,
重點是 pnpm import
,要將package-lock.json
轉成 pnpm-lock.yaml
。
# 刪除npm package
rm -rf node_modules
# 安裝pnpm
npm install -g pnpm
# 轉換相關檔案
pnpm import
完成後,上傳到github。
- 建立github action
資料夾結構如下
能改檔案名稱的只有build-site.yaml
以及install-pnpm
,
但後者要改的話,程式內容也需要改,不熟的話不建議更改。
build-site.yaml的程式如下
name: 'Build Sites'
on:
workflow_dispatch:
inputs:
deployment-version:
description: 指定版本
required: false
schedule:
- cron: '0 10 * * *'
jobs:
build-site-test:
runs-on: ubuntu-latest
steps:
# [Checkout]
- name: Checkout code repository
uses: actions/checkout@v4
with:
fetch-depth: 0
# [執行腳本] 構建 pnpm 及 Node 環境
- name: '[Macro] Prepare environment'
uses: ./.github/actions/install-pnpm
# [執行腳本] 構建html
- name: '[Macro] Build sites '
shell: bash
run: pnpm build
- name: Push to HTML Repository
run: |
git config --global user.email $
git config --global user.name "daimom"
git config --list
git clone https://$@github.com/daimom/daimom.github.io.git temp-html-repo
cp -r dist/. temp-html-repo/
cd temp-html-repo
git add .
git commit -m "Update from Build Repository"
git remote -v
git push origin main
install-pnpm/action.yaml的程式如下
name: 'prepare'
description: 'Prepare environment'
runs:
using: 'composite'
steps:
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
shell: bash
run: pnpm install
簡易說明
這邊的設定是每天的UTC 10:00 執行一次,
如果要自定時間的話,可以參考Crontab 中文線上 編輯器
測試的時候可以先把
schedule:
- cron: '0 10 * * *'
改成
push:
branches:
- 'main'
這樣只要推上去main就會觸發動作了(注意排版)。
ref. 以 GitHub Action 來發推文
或者是直接手動部署,
在public_vercel的github action選擇你的Action ,再選 Run workflow
程式裏面的 $
是要到repository裏面設定。
也可以直接輸入你的email,反正email這東西應該已經...。
但重點是底下的 $
,
這個一定要用secret隱藏,而且不能外流。
產生的方式,詳閱, 160.Obsidian發佈網站#建立github token
再來將產生的token,新增到sercret裏面。
ref.