ZachVec GitHub Pages
ZachVec GitHub Pages
Site: https://zachvec.github.io/
Jekyll blog (minima theme) at root. Project documentation generated by mdBook + Doxygen, deployed via GitHub Actions.
Directory structure
/
├── _config.yml # Jekyll config (minima theme, plugins)
├── index.md # Blog home
├── _posts/ # Blog posts (YYYY-MM-DD-title.md)
├── docs/index.md # Documentation portal (/docs/)
├── projects/ # Built docs (gitignored, deployed via Actions artifact)
├── _docsrc/<project>/ # Git submodules pointing to project repos
├── .github/workflows/
│ └── build-docs.yml # CI: builds mdBook + Doxygen from submodules
└── Gemfile # github-pages gem for local preview
Adding a new project’s documentation
- Push the project to GitHub with a
docs/directory containing:docs/book.toml— mdBook configdocs/src/SUMMARY.md— table of contentsdocs/src/*.md— chapter filesdocs/Doxyfile— Doxygen config (optional, for C++ API docs)
- Add it as a submodule:
git submodule add git@github.com:ZachVec/<project>.git _docsrc/<project> -
Update
.github/workflows/build-docs.ymlto build the new project. Add a new set of steps following the ccjieba pattern: update submodule, mdbook build, doxygen (optional), copy toprojects/<project>/. -
Add a link in
docs/index.md. - In the project’s own repo, add
.github/workflows/docs-trigger.yml:name: Trigger Docs Rebuild on: push: branches: [master] paths: ['docs/**'] jobs: trigger: runs-on: ubuntu-latest steps: - uses: peter-evans/repository-dispatch@v3 with: token: $ repository: ZachVec/ZachVec.github.io event-type: docs-updatedRequires
PAGES_REPO_TOKENsecret in the project repo (PAT withreposcope).
Manual CI trigger
gh workflow run build-docs.yml --repo ZachVec/ZachVec.github.io
CI builds Jekyll blog + mdBook + Doxygen into a single artifact, then deploys via deploy-pages. The projects/ directory is gitignored — no build artifacts in the repo.
Local preview
cd /home/zach/pages
jekyll build && jekyll serve # blog at http://localhost:4000
mdbook build _docsrc/ccjieba/docs # preview mdBook output
(cd _docsrc/ccjieba/docs && doxygen Doxyfile) # preview Doxygen output
Blog posts
Create _posts/YYYY-MM-DD-slug.md with front matter:
---
layout: post
title: "Title"
date: YYYY-MM-DD
categories: category
---
Push to deploy. No CI needed — GitHub Pages auto-builds Jekyll.