Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions .github/sync.yml

This file was deleted.

79 changes: 5 additions & 74 deletions .github/workflows/create-debug-docs.yaml
Original file line number Diff line number Diff line change
@@ -1,80 +1,11 @@
name: Create Production Data For Beta Version
name: Create Debug Docs
on:
workflow_dispatch:
push:
branches:
- 'main'

branches: [main]
permissions:
contents: write

jobs:
export-ecad:
name: Export ECAD
runs-on: ubuntu-24.04

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Update the PCBs with the BETA and git hash
run: |
export COMMIT=$(git rev-parse --short HEAD)
echo "COMMIT = ${COMMIT}"
sed -i "s/<<HASH>>/BETA-${COMMIT}/g" *.kicad_*

- name: Generate Export Files
uses: INTI-CMNB/KiBot@v2_k9
with:
config: production.kibot.yaml
dir: output
schema: main.kicad_sch
board: main.kicad_pcb
verbose: 0

- name: Upload Export Files as Artifacts
uses: actions/upload-artifact@v4
with:
name: production
path: output
if-no-files-found: error


collect-and-provide:
runs-on: ubuntu-24.04
needs: export-ecad
steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1'
bundler-cache: true
cache-version: 0

- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
with:
generator_config_file: doc

- name: Build with Jekyll
run: cd doc && bundle exec jekyll build
env:
JEKYLL_ENV: production

- uses: actions/download-artifact@v5
with:
name: production
path: doc/_site

- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
folder: doc/_site
target-folder: ${{ env.DEPLOY_PATH }}
clean: true
build:
uses: OE5XRX/HW-Module-CI/.github/workflows/create-debug-docs.yaml@main
secrets: inherit
56 changes: 4 additions & 52 deletions .github/workflows/create-release-docs.yaml
Original file line number Diff line number Diff line change
@@ -1,57 +1,9 @@
name: Create Production Data For Release Version
name: Create Release Docs
on:
workflow_dispatch:
release:
types: [published]

jobs:
export-ecad:
name: Export ECAD
runs-on: ubuntu-24.04

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Update the PCBs with the BETA and git hash
run: |
export COMMIT=$(git rev-parse --short HEAD)
echo "COMMIT = ${COMMIT}"
sed -i "s/<<HASH>>/${GITHUB_REF_NAME}-${COMMIT}/g" *.kicad_*

- name: Generate Export Files
uses: INTI-CMNB/KiBot@v2_k9
with:
config: production.kibot.yaml
dir: output
schema: main.kicad_sch
board: main.kicad_pcb
verbose: 0

- name: copy doc files to output folder
run: sudo cp doc/* output/

- name: Upload Export Files as Artifacts
uses: actions/upload-artifact@v4
with:
name: production
path: output
if-no-files-found: error

# - name: Generate Parts on InvenTree Server
# env:
# INVENTREE_API_TOKEN: ${{ secrets.INVENTREE_API_TOKEN }}
# INVENTREE_API_HOST: ${{ secrets.INVENTREE_API_HOST }}
# run: |
# pip install -r scripts/requirements.txt
# python3 scripts/bom-export.py --csv_file output/*-bom.csv --name "${{ github.event.repository.name }}" --version "${{ github.ref_name }}" --pcb_image output/*-3D_top-without.png --assembly_image output/*-3D_top-with.png

- name: Deploy 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
token: ${{ secrets.DEPLOY_GH_TOKEN }}
repository-name: OE5XRX/OE5XRX.github.io
branch: main
folder: output
target-folder: docs/remote-station/hardware/${{ github.event.repository.name }}
clean: true
build:
uses: OE5XRX/HW-Module-CI/.github/workflows/create-release-docs.yaml@main
secrets: inherit
27 changes: 6 additions & 21 deletions .github/workflows/kibot-check.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,11 @@
name: Kibot check
name: KiBot Check
on:
workflow_dispatch:
pull_request:
branches:
- 'main'
branches: [main]
push:
branches:
- 'main'

branches: [main]
jobs:
kibot_check:
name: Check with Kibot
runs-on: ubuntu-24.04

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: check KiCad files
uses: INTI-CMNB/KiBot@v2_k9
with:
config: test.kibot.yaml
dir: output
schema: main.kicad_sch
verbose: 0
check:
uses: OE5XRX/HW-Module-CI/.github/workflows/kibot-check.yaml@main
secrets: inherit
18 changes: 0 additions & 18 deletions .github/workflows/sync.yaml

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@ Thumbs.db
# Python cache (if scripts are used)
__pycache__/
*.pyc

# Generated by HW-Module-CI at runtime (must never be committed)
doc/_data/project.yml
8 changes: 0 additions & 8 deletions Gemfile

This file was deleted.

80 changes: 32 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,41 @@
# HW-Module-Template

## Description

This repository is a template for hardware modules using KiCad, designed for clean, maintainable development with CI/CD pipelines generating and publishing production data automatically.

## Features
* Structured KiCad project (schematic, PCB)
* Clean repository: no production data stored
* GitHub Actions CI/CD pipeline:
* Generates Gerber, BOM, and assembly files
* Uploads artifacts to GitHub Releases
* Open Hardware license ready (CERN-OHL-S)

## Repository Structure

```
HW-Module-Template/
├── .github/workflows/ # CI/CD pipeline scripts
├── doc/ # Documentation exports
├── symbols/ # Local symbol library (if needed)
├── footprints/ # Local footprint library (if needed)
├── 3d-models/ # STEP/WRL files (optional)
├── main.kicad_pro # KiCad main project file
├── main.kicad_sch # KiCad main schematic file
├── main.kicad_pcb # KiCad main pcb file
├── *.kicad_sch # other KiCad schematic files
├── LICENSE
└── README.md
```

## Usage
1. Click “Use this template” on GitHub.
2. Clone your repository locally and open in KiCad.
3. fix the missing names in the readme and add documentation in the `doc/index.md` file.
4. Work on your schematic and PCB as usual (create a new project (main-file must be called `main.kicad_*`) or copy a new one into the folder structure).
5. Push your changes.
6. CI/CD will automatically generate production files.
7. If there is a release defined, CI/CD will create a documentation on the main webpage.
GitHub "Use this template" scaffold for new hardware module repositories under OE5XRX. New modules cloned from this template start pre-wired to the shared CI infrastructure at [`OE5XRX/HW-Module-CI`](https://github.com/OE5XRX/HW-Module-CI).

## License
## Quickstart for new modules

1. Click **"Use this template"** on GitHub to create a new module repo (e.g., `HW-Module-Acme`).
2. Clone the new repo locally.
3. Replace `LICENSE` if your license differs from CERN-OHL-S 2.0.
4. Create your KiCad project at the repo root. The `.kicad_pro`, `.kicad_sch`, and `.kicad_pcb` can be named anything — the shared CI auto-detects the basename. Convention: name them after the module (e.g., `Acme.kicad_pro`).
5. Fill in `doc/index.md`:
- Replace `<NAME>` with the module's display name (e.g., `Acme`).
- Update `nav_order` to position it correctly on the hardware overview page.
- Replace `Some Text` with the module description, voltage tables, etc.
- Output paths already use `{{ site.data.project.name }}` — leave those as-is; CI fills in the auto-detected KiCad basename at build time.
6. Commit and push. On the first push to `main`, CI auto-runs:
- `KiBot Check` — ERC + DRC preflight
- `Create Debug Docs` — publishes preview to the repo's `gh-pages` branch
7. On the first GitHub release: `Create Release Docs` deploys versioned docs to `OE5XRX.github.io` and pushes BOM to InvenTree.

## What this template provides

This project is licensed under [CERN-OHL-S-2.0](https://choosealicense.com/licenses/cern-ohl-s-2.0/).
- `.github/workflows/` — 3 thin wrappers that `uses: HW-Module-CI@main`
- `doc/index.md` — Jekyll page scaffold (replace `<NAME>` + content)
- `3d-models/`, `symbols/`, `footprints/` — empty subdirs for optional KiCad libraries
- `LICENSE` — CERN-OHL-S 2.0
- `README.md` — this file (overwrite for your module)

## Badges
## What's intentionally NOT in this template

KiBot configs, Python scripts (BOM export, InvenTree sync, stencil PNG), Jekyll config, Gemfile, doc assets (favicon, logo) — all of these live in [`OE5XRX/HW-Module-CI`](https://github.com/OE5XRX/HW-Module-CI) and are pulled in at CI-runtime. Do not copy them here.

## License

![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/OE5XRX/<your-repo>/kibot-check.yaml?branch=main)<br>
![GitHub Release](https://img.shields.io/github/v/release/OE5XRX/<your-repo>)<br>
![License: CERN-OHL-S](https://img.shields.io/badge/license-CERN--OHL--S--2.0-blue)<br>
![KiCad Supported](https://img.shields.io/badge/KiCad-supported-blue)<br>
![Project Type](https://img.shields.io/badge/type-hardware-red)<br>
[CERN-OHL-S-2.0](https://choosealicense.com/licenses/cern-ohl-s-2.0/) by default; replace `LICENSE` if your module needs a different license.

## Contact

OE5XRX Amateur Radio Club<br>
🌐 https://oe5xrx.org<br>
✉️ info@oe5xrx.org<br>
OE5XRX Amateur Radio Club
🌐 https://oe5xrx.org
✉️ info@oe5xrx.org
Binary file removed doc/Icon.png
Binary file not shown.
16 changes: 0 additions & 16 deletions doc/_config.yml

This file was deleted.

Binary file removed doc/favicon.ico
Binary file not shown.
16 changes: 8 additions & 8 deletions doc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ parent: Hardware
<table>
<tr><th>Top</th><th>Bottom</th></tr>
<tr>
<td><img src="main-3D_top.png?dummy={{ site.data['hash'] }}" alt="top" /></td>
<td><img src="main-3D_bottom.png?dummy={{ site.data['hash'] }}" alt="bottom" /></td>
<td><img src="{{ site.data.project.name }}-3D_top.png?dummy={{ site.data['hash'] }}" alt="top" /></td>
<td><img src="{{ site.data.project.name }}-3D_bottom.png?dummy={{ site.data['hash'] }}" alt="bottom" /></td>
</tr>
</table>

Some Text

## Daten

- [Schaltplan](main-schematic.pdf)
- [BOM](main-bom.html)
- [iBOM](main-ibom.html)
- [JLCPCB fabrication & stencil](JLCPCB/main-_JLCPCB_compress.zip)
- [JLCPCB Bom](JLCPCB/main_bom_jlc.csv)
- [JLCPCB Pick&Place](JLCPCB/main_cpl_jlc.csv)
- [Schaltplan]({{ site.data.project.name }}-schematic.pdf)
- [BOM]({{ site.data.project.name }}-bom.html)
- [iBOM]({{ site.data.project.name }}-ibom.html)
- [JLCPCB fabrication & stencil](JLCPCB/{{ site.data.project.name }}-_JLCPCB_compress.zip)
- [JLCPCB Bom](JLCPCB/{{ site.data.project.name }}_bom_jlc.csv)
- [JLCPCB Pick&Place](JLCPCB/{{ site.data.project.name }}_cpl_jlc.csv)
Loading
Loading