Skip to content

KiCad checks run on our server, not GitHub Actions

kicad-check on the Plex server (~/.local/bin/kicad-check) is the only ERC/DRC check for the KiCad library. No GitHub Actions workflow. GitHub (EmbeddedEra/KiCad) stays as storage: the off-site copy and the remote the Mac and Windows laptop clone from.

  • Gate: ~/kicad-lib/.git/hooks/pre-push runs kicad-check whenever master is pushed and refuses the push on any error (about 2 minutes). Merge into master on the server, then push. The hook is not versioned; it lives only in the server clone, which is where merges happen.
  • Weekly: kicad-check.timer (Sunday 05:30) still runs it across every project and saves the result for the audit.
  • Board projects too: builds run on the server, never in GitHub Actions. Hellen boards use hellen-create-board (EmbeddedEra/KiCad scripting/hellen/) (first: rusefi-sti-2004, 2026-10-13); the upstream GitHub workflows are deleted from our forks.
  • One copy of the rules. The KiCad version and the fragment exemptions live in kicad-check alone.
  • Hierarchical schematics are checked from the root. A .kicad_sch named as another sheet's Sheetfile is skipped; the root ERC covers it (2026-10-16, the template split into sheets: alone, each sub-sheet failed on ${Project_Name} with no project to resolve it).

Why: the GitHub copy (.github/scripts/kicad_checks.py) drifted from kicad-check, and the drift was the entire cause of CI being red from 2026-10-08 (21 invalid_outline errors on design blocks that kicad-check already exempted). Master had no branch protection, so the red check blocked nothing. A second copy of the same rules costs upkeep and gives a wrong answer whenever it lags.

Related: KiCad, kicad-own-libraries-only, SOP-008, SOP-021.