We now have a reusable CI/CD pipeline for KiCad boards that builds with KiBot, generates a Markdown index, and deploys to GitHub Pages—all centralized in FEASTorg/slice-infra. First trials complete and working at: FEASTorg/Slice_DCMT and FEASTorg/Slice_TEMP.
What has shipped?
- Reusable workflows in
slice-infra:kibot-ci.yml– runs ERC/DRC and fabricates artifacts.publish-kibot.yml– resolves artifacts (incl. iBOM variants), writesdocs/kibot/index.md, commits.deploy-pages.yml– stages selected outputs and deploys Jekyll site.
- Example Pages:
- Slice_DCMT:
https://feastorg.github.io/Slice_DCMT/kibot/ - Slice_TEMP:
https://feastorg.github.io/Slice_TEMP/kibot/
- Slice_DCMT:
How to consume (in a slice repo)
Create .github/workflows/docs-pipeline.yml:
name: Docs Pipeline
on:
push:
branches: [main]
paths:
- "hardware/**"
- "docs/**"
- ".github/workflows/**"
workflow_dispatch:
jobs:
kibot:
uses: FEASTorg/slice-infra/.github/workflows/kibot-ci.yml@main
gen-kibot-index:
uses: FEASTorg/slice-infra/.github/workflows/publish-kibot.yml@main
needs: [kibot]
with:
kibot_run_id: $
deploy-pages:
uses: FEASTorg/slice-infra/.github/workflows/deploy-pages.yml@main
needs: [gen-kibot-index]
with:
kibot_run_id: $
commit_sha: $
Required files in the slice repo
-
hardware/config.kibot.yaml(your KiBot recipe). -
hardware/Makefile(KiBot Make commands) -
docs/_config.yml(Jekyll). -
docs/kibot/config.kibot.site.yml(e.g.):
project_name: "Slice Foo"
artifacts:
- Schematic.pdf
- PCB.pdf
- kibot.log
- BoM/*.html # picks up bom + ibom
images:
- board_top.png
- board_bottom.png
-
docs/kibot/index_template.mdto customize the index. -
The standard documentation files in
docs/including:architecture.mdchangelog.mdtesting.mdindex.md
Notes
- iBOM filenames vary; the publisher handles
*_iBoM.html/*ibom.htmland case differences. - We generate Markdown only and let Jekyll render—no
.nojekyllneeded. - Pages deploy stages only the configured artifact patterns into
docs/kibot/.
Next
Rolling this out to the rest of the slices is now a copy-paste of the workflow and a small config.kibot.site.yml…stay tuned!