When github.event.head_commit.message contains shell metacharacters (backticks, $(…), etc.) the literal-interpolation form spliced the raw text into bash and triggered command substitution. Caught by the keeb pipeline on Gitea — a commit message with backticks crashed extract_version in 3 seconds and the whole fab graph cascade-skipped. Pattern matches the upload-bom env: COMMIT_MESSAGE indirection used further down the same file. Also routed github.sha the same way so the fallback branch doesn't accidentally re-introduce the same class of bug. Mirror this verbatim into hfsdesign/kicad-ci on Gitea after pushing.
Dependencies
Setup
- From an empty directory:
kimelon config --init --remote <REMOTE_URL>; if git is already setup and pointing to the remote then drop--remote - Create a kicad project, based off of a template found in this directory
- Lock the file you want to edit, see Locking
- Start editing
Updating
kimelon config
Locking
All kicad files are read-only by default, the file will need to be locked to your ssh key/gitlab account for it to be writable.
This can be done using kimelon lock <type> <filter>.
See kimelon lock --help for more info.
Once you are done editing the lock can be released using kimelon unlock <type> <filter>.
See kimelon unlock --help for more info.
Lock/unlock can't be done if there are any branches apart from dev & main.
CI
The following will be produced on any commit to dev & main branches or any commit on branch that has an active MR with said branches:
- DRC & ERC
- Step files
The following will be produced only on commits to main or commits on dev if it has an active MR with main:
- JLCPCB compatible gerbers
- PDFs of Schematic & PCB
- BOM
Panels
Kikit is used to generate panels by placing a json file in your kicad project root folder.
The templates in this repository all contain a default panel file with the following features:
- single board
- full frame, no tabs/gap between PCB and frame, vcuts
- Mounting hole + fiducial in each corner
See examples of panel types/options here
See syntax of json file here