Hardware CI/CD
Git workflows, automated builds, and renders for CAD, PCB, and 3D-printable hardware.
Hardware-as-code (see Programmatic CAD) made it sane to commit CAD/PCB sources to git. The next step is treating them like software: PR previews of rendered parts, automated DRC, BOM diffs, generated G-code artifacts. Tooling is younger than software CI but the pieces exist in 2026.
Git-friendly source formats
- ★ STEP (AP242) — text-ish ASCII; diffable in principle, ugly in practice. The default mechanical interchange format.
- ★
.kicad_pcb/.kicad_sch(KiCad 7+/8+) — newline-delimited s-expressions; very git-friendly diffs. - CadQuery / Build123d / OpenSCAD source — pure text, perfect diffs.
.ato(Atopile) /tscircuitJSX — text, diffable, type-checkable..f3d/.SLDPRT/.ipt/.prt(Fusion / SolidWorks / Inventor / Creo) — binary; commit STEP exports alongside.- 3MF — zipped XML; viewable as a project artifact, not great as the source of truth.
CI for code-CAD
- ★ GitHub Actions + CadQuery / Build123d — run a script in CI, output STL / STEP / 3MF on every PR. The standard 2026 hobby pipeline.
- ★ GitHub Actions + OpenSCAD CLI —
openscad -o out.stl input.scadin a workflow. Trivial and rock-solid. - GitLab CI / Forgejo Actions — same pattern, different host.
- build-cad-on-ci community templates — composite actions for KiCad, FreeCAD, OpenSCAD, CadQuery on GitHub Marketplace.
PCB / EE CI
- ★ KiBot — open source; declarative YAML pipeline for KiCad — generate gerbers, BOM, 3D renders, fabrication outputs in CI. The de-facto KiCad CI tool.
- kicad-cli (built into KiCad 8+) — official CLI for export, ERC, DRC; KiBot wraps it but you can also use it directly.
- InteractiveHtmlBom (iBOM) — generates a clickable HTML BOM for assembly; commonly run in CI.
- kicad-action / setup-kicad GitHub Actions — drop-in installers for KiCad in workflows.
- Atopile CI —
ato buildin GitHub Actions outputs KiCad project artifacts.
Diff & review for hardware
- ★ KiCad 8+ schematic & PCB diff — built-in visual diff between any two revs / branches.
- kicad-diff.py — older Python tool for visual KiCad diffs in CI.
- Plotty / FlatCAM — gerber visualizers, useful for fab-output review.
- STEP diff (visual) — no great FOSS option in 2026; common workaround is to render PNGs of two STEPs in CI and post-comment on the PR.
- OpenSCAD
if-diff— community macro to render before/after.
Artifact hosting for PRs
- GitHub Releases / Artifacts — attach STL, STEP, 3MF, gerber zip per build.
- Cloudflare Pages / Netlify per-PR previews — host static viewer pages (e.g.,
model-viewerfor STEP/glTF) for PR review. - Manyfold / Fishtank (self-hosted) — push artifacts to a private model library (see Model Libraries).
- OSHWLab, EasyEDA, Flux.ai sharing pages — hosted PCB design preview links (Flux is paid pro tier).
DRC / ERC / lint for hardware
- ★ kicad-cli erc / drc — official lint, runnable in CI.
- freerouting — open-source autorouter; sometimes part of CI when iterating on layouts.
- KLC checker (KiCad Library Checker) — checks symbol/footprint compliance against KiCad library conventions.
- Atopile checks — type-checking + electrical-rule checks at compile time.
Project / multi-board builds
- Make / just / Taskfile / Nx — orchestrate multi-board, multi-part builds. Many hardware repos use a top-level
justfileto invoke FreeCAD, OpenSCAD, KiCad, and CadQuery in one command. - Reproducible builds via Nix / devcontainer — pinning FreeCAD / KiCad / OpenSCAD versions matters; community Nix flakes exist for all three.
Documentation as part of CI
- ★ Render galleries with
model-viewer(see 3D / WebGL) — embed glTF / GLB exports in your README or docs site. - Docusaurus / Fumadocs / mdBook + auto-generated screenshots — common for assembly-instruction docs.
- Bill-of-materials generation — CadQuery and KiCad both produce BOMs in CI; commit the diff into PRs.
Pick this if…
- CadQuery / OpenSCAD project, want per-PR STL artifacts: GitHub Actions + slicer CLI.
- KiCad project, want gerbers + BOM on every push: KiBot.
- Atopile project:
ato buildin CI; commit outputs to a separate branch. - Want PR review with rendered images: screenshot step + bot comment, or per-PR static-site preview.
- Need DRC/ERC blocking on PRs: kicad-cli (KiCad) + KLC checker for libraries.
- Reproducibility matters: Nix flake or pinned devcontainer.