網站佈署
你可以使用 GitHub Pages 來佈署 Zensical 網站,並透過 GitHub Actions 來實現自動佈署。
沒有 gh-deploy
Zensical 不提供 mkdocs gh-deploy 這類指令。請改用 GitHub Actions 建置,或把 site/ 上傳到任何靜態空間。
測試執行
可以先手動測試:
如果 zensical serve 能正常顯示網站,代表設定沒問題。
Note
執行過 zensical build 或 zensical serve 之後,資料夾內會出現一個叫做 site/ 的資料夾,裡面包含網站所有檔案。手動拷貝 site/ 的所有內容到網站空間內,也是一種佈署方式。
本機建置
輸出目錄預設為 site/。
若使用本專案的 uv 工作流程:
啟用 GitHub Actions 自動佈署
在你的 GitHub 專案內 建立(本專案已有 .github/workflows/ci.yaml):
內容可參考:
name: ci
on:
push:
branches:
- master
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Set up uv
uses: astral-sh/setup-uv@v6
with:
python-version-file: ".python-version"
enable-cache: true
- name: Install dependencies
run: uv sync --frozen
- name: Build site
run: uv run zensical build --clean
- name: Configure GitHub Pages
uses: actions/configure-pages@v5
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v4
with:
path: site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
📌 這個 GitHub Actions 會在 main 分支有變更時,自動建置並佈署。
若沒用 uv,也可以改成 pip install zensical 再執行 zensical build --clean。
啟用 GitHub Pages
- 打開 GitHub 倉庫 → 設定(Settings)
- 找到 Pages
- Source 選 GitHub Actions
- 推送後網站網址會類似:
記得在 zensical.toml 設定正確的 site_url,搜尋與 instant navigation 才會正常。
官方範例的做法
用 zensical new 建立專案時,會自動產生 .github/workflows/docs.yml。它在 main(或 master)分支有推送時,安裝 Zensical、執行 zensical build --clean,再把 site/ 上傳並佈署到 GitHub Pages。官方目前不建議在 CI 使用快取,因為快取機制之後會為了效能而調整。
想在連結壞掉時阻止佈署,把建置指令改成 zensical build --clean --strict,見 連結驗證。
佈署到 GitLab Pages
如果程式碼託管在 GitLab,可以用 GitLab CI 佈署到 GitLab Pages。在儲存庫根目錄建立 .gitlab-ci.yml:
pages:
stage: deploy
image: python:latest
script:
- pip install zensical
- zensical build --clean
pages:
publish: site
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
預設分支有新的提交時,就會自動建置並佈署,網站網址是 <username>.gitlab.io/<repository>。
GitLab Pages 設定
GitLab Pages 預設會使用帶有隨機字串的網域。正式佈署時,請在 GitLab Pages 設定取消勾選 Use unique domain。若要公開網站,也要到 Settings > General > Visibility 設定 Pages 的可見度。
其他託管平台
官方沒辦法涵蓋所有的託管服務,社群提供了這些指南:
- Azure Static Web Apps(搭配 GitHub Actions)
- Azure Static Web Apps(搭配 Azure DevOps)
- Read the Docs
因為 Zensical 輸出的是純靜態的 site/ 資料夾,所以任何能託管靜態檔案的服務(Netlify、Vercel、自架的 nginx 等)都可以使用。
總結
| 步驟 | 指令 / 設定 | 說明 |
|---|---|---|
| 手動測試 | zensical serve |
確保網站顯示正常 |
| 手動建置 | zensical build --clean |
產生 site/ |
| 設定 GitHub Actions | .github/workflows/ci.yaml |
自動佈署 |
| 啟用 GitHub Pages | Source = GitHub Actions | 讓網站正式上線 |