From dbd11012d9fa16b10542641c22ce76fb96c350d6 Mon Sep 17 00:00:00 2001 From: JuliDi Date: Thu, 10 Sep 2026 15:46:58 +0200 Subject: [PATCH 1/3] feat(ci): add automatic export of pcb artifacts using KiBot --- .github/workflows/pcb.yaml | 118 ++++++++++++++++ .gitignore | 5 + README.md | 2 + _config.yml | 24 ++++ docs/ci.md | 42 ++++++ downloads.md | 21 +++ hardware/README.md | 4 + hardware/config.kibot.yaml | 127 ++++++++++++++++++ .../ese-rust-board-2026-09-05_155518.zip | Bin 0 -> 36139 bytes .../ese-rust-board/ese-rust-board.kicad_prl | 127 ++++++++++++++++++ 10 files changed, 470 insertions(+) create mode 100644 .github/workflows/pcb.yaml create mode 100644 _config.yml create mode 100644 docs/ci.md create mode 100644 downloads.md create mode 100644 hardware/config.kibot.yaml create mode 100644 hardware/ese-rust-board/ese-rust-board-backups/ese-rust-board-2026-09-05_155518.zip create mode 100644 hardware/ese-rust-board/ese-rust-board.kicad_prl diff --git a/.github/workflows/pcb.yaml b/.github/workflows/pcb.yaml new file mode 100644 index 0000000..79f3569 --- /dev/null +++ b/.github/workflows/pcb.yaml @@ -0,0 +1,118 @@ +name: PCB exports and GitHub Pages + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: pcb-pages-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + pcb: + runs-on: ubuntu-latest + container: ghcr.io/systemscape/kicad_and_pandoc:10 + env: + PCB: hardware/ese-rust-board/ese-rust-board + outputs: + available: ${{ steps.board.outputs.available }} + steps: + - uses: actions/checkout@v4 + + - name: Check board sources + id: board + shell: bash + run: | + files=("$PCB.kicad_pro" "$PCB.kicad_sch" "$PCB.kicad_pcb") + count=0 + for file in "${files[@]}"; do + if [[ -f "$file" ]]; then + count=$((count + 1)) + fi + done + if [[ "$count" == 0 ]]; then + echo 'available=false' >> "$GITHUB_OUTPUT" + echo 'No board sources yet; publishing documentation only.' >> "$GITHUB_STEP_SUMMARY" + elif [[ "$count" != 3 ]]; then + echo '::error::The board needs matching .kicad_pro, .kicad_sch and .kicad_pcb files.' + exit 1 + else + echo 'available=true' >> "$GITHUB_OUTPUT" + fi + + - name: Run ERC/DRC and generate exports + if: steps.board.outputs.available == 'true' + run: | + kibot -c hardware/config.kibot.yaml \ + -b "$PCB.kicad_pcb" -e "$PCB.kicad_sch" -d outputs + + - name: Package manufacturing files + if: steps.board.outputs.available == 'true' + run: | + python3 - <<'PY' + import shutil + shutil.make_archive('outputs/gerbers', 'zip', 'outputs/gerber') + PY + + - name: Upload PCB exports and check reports + if: ${{ !cancelled() && steps.board.outputs.available == 'true' }} + uses: actions/upload-artifact@v4 + with: + name: pcb-outputs + path: outputs/ + if-no-files-found: error + retention-days: 90 + + site: + needs: pcb + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Download PCB exports + if: needs.pcb.outputs.available == 'true' + uses: actions/download-artifact@v4 + with: + name: pcb-outputs + path: downloads/ + + - name: Configure Pages + if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' + uses: actions/configure-pages@v5 + + - name: Render Markdown with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./ + destination: ./_site + + - name: Upload site preview + uses: actions/upload-artifact@v4 + with: + name: site-preview + path: _site/ + if-no-files-found: error + + - name: Upload Pages artifact + if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' + uses: actions/upload-pages-artifact@v3 + + deploy: + if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' + needs: site + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 6b13d93..2a1be84 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,8 @@ fp-info-cache **/node_modules/ .github/site/dist/ artifact/ +# Generated PCB exports and GitHub Pages build +/outputs/ +/downloads/ +/_site/ +/.jekyll-cache/ diff --git a/README.md b/README.md index 995c256..d041d7f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Embedded Rust zum Anfassen: Hackathon auf dem exklusiven ESE 2026 Rust Devboard +[Hardware](hardware/README.md) · [PCB-Downloads](https://systemscape.github.io/ese-2026-rust-hackathon/downloads/) · [CI](docs/ci.md) + ## Worum geht es? Rust ist auch in der Embedded-Entwicklung auf dem Vormarsch. Aber wie funktioniert “dieses Rust” auf echter Hardware? Wie schreibe ich einen Sensor-Treiber? Wie steuere ich ein Display an? Und wie sieht “Fearless Concurrency” in der Praxis aus? diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..29599e2 --- /dev/null +++ b/_config.yml @@ -0,0 +1,24 @@ +title: ESE 2026 Rust Hackathon +description: Embedded Rust zum Anfassen +url: https://systemscape.github.io +baseurl: /ese-2026-rust-hackathon +theme: jekyll-theme-cayman +plugins: + - jekyll-relative-links + - jekyll-readme-index +readme_index: + remove_originals: true +relative_links: + enabled: true + collections: true +defaults: + - scope: + path: "" + values: + layout: default +exclude: + - LICENSE + - hardware/config.kibot.yaml + - hardware/ese-rust-board + - outputs + - target diff --git a/docs/ci.md b/docs/ci.md new file mode 100644 index 0000000..41d99fb --- /dev/null +++ b/docs/ci.md @@ -0,0 +1,42 @@ +--- +title: Hardware CI +--- + +# Hardware CI + +The [workflow](https://github.com/Systemscape/ese-2026-rust-hackathon/blob/main/.github/workflows/pcb.yaml) builds on pull requests, pushes to +`main`, and manual runs. It uses the same KiCad 10 / KiBot container as the OnMCU +hardware repository, with one board and one complete +[KiBot config](https://github.com/Systemscape/ese-2026-rust-hackathon/blob/main/hardware/config.kibot.yaml). + +Add the board's matching `.kicad_pro`, `.kicad_sch` and `.kicad_pcb` files at +`hardware/ese-rust-board/ese-rust-board.*`. Commit any referenced sheets, custom +libraries, library tables and 3D models too, using project-relative paths. +If the board moves, update `PCB` in the workflow and the exclusion in `_config.yml`. +When all three sources are absent, CI publishes documentation only; a partially +added board fails the build. + +KiBot runs ERC and DRC, then generates schematic and PCB PDFs, a CSV BOM, +interactive BOM, Gerbers and drills, pick-and-place files, PCB drawings, SVGs, +STEP, 3D-printable stencils and netlists. Errors fail the build and block +deployment. Available check reports and partial exports are uploaded even on +failure. The `pcb-outputs` artifact is retained for 90 days; `site-preview` +contains the rendered site for review on pull requests. + +GitHub Pages uses Jekyll to render the README files and other Markdown. The +downloads page lists the generated files automatically. Only successful runs +on `main` deploy the public site; pull requests do not deploy. + +In repository **Settings → Pages → Build and deployment**, set **Source** to +**GitHub Actions** before the first deployment. No additional secrets are needed. +The workflow follows GitHub's [Jekyll build](https://github.com/actions/jekyll-build-pages) +and [Pages deployment](https://github.com/actions/deploy-pages) actions. + +To generate the same PCB exports locally with KiCad 10 and KiBot installed: + +```sh +kibot -c hardware/config.kibot.yaml \ + -b hardware/ese-rust-board/ese-rust-board.kicad_pcb \ + -e hardware/ese-rust-board/ese-rust-board.kicad_sch -d outputs +python3 -c "import shutil; shutil.make_archive('outputs/gerbers', 'zip', 'outputs/gerber')" +``` diff --git a/downloads.md b/downloads.md new file mode 100644 index 0000000..0ecfdaf --- /dev/null +++ b/downloads.md @@ -0,0 +1,21 @@ +--- +title: PCB downloads +permalink: /downloads/ +--- + +# PCB downloads + +[Hackathon](./README.md) · [Hardware](./hardware/README.md) + +{% assign exports = site.static_files | where_exp: "file", "file.path contains '/downloads/'" | sort: 'path' %} +{% if exports.size > 0 %} +Exports from commit `{{ site.github.build_revision }}`. + +The Gerber ZIP includes copper, mask, silkscreen, paste, board outline and drill files. + +{% for file in exports %} +- [{{ file.path | remove_first: '/downloads/' }}]({{ file.path | relative_url }}) +{% endfor %} +{% else %} +PCB downloads will appear here once the KiCad board sources are added and pass ERC/DRC. +{% endif %} diff --git a/hardware/README.md b/hardware/README.md index 4198a1f..e6c9ead 100644 --- a/hardware/README.md +++ b/hardware/README.md @@ -1,3 +1,7 @@ +# ESE Rust Devboard + +[Hackathon](../README.md) · [PCB downloads](https://systemscape.github.io/ese-2026-rust-hackathon/downloads/) · [Hardware CI](../docs/ci.md) + ## MCU Foundation - 2x Raspberry Pi RP2354B (SC1512-A4) https://mou.sr/4yLfwo5 ca. 0.80 € - 1x as debugger using https://github.com/raspberrypi/debugprobe or https://github.com/probe-rs/rusty-probe-firmware diff --git a/hardware/config.kibot.yaml b/hardware/config.kibot.yaml new file mode 100644 index 0000000..282ef9c --- /dev/null +++ b/hardware/config.kibot.yaml @@ -0,0 +1,127 @@ +# Single-board exports, adapted from the OnMCU hardware CI. +kibot: + version: 1 +preflight: + erc: + dir: reports + drc: + dir: reports +global: + output: '%f-%i.%x' +outputs: +- name: print_sch + comment: Print schematic (PDF) + type: pdf_sch_print + dir: pdf +- name: print_top + comment: Print Top + type: pcb_print + dir: pdf + options: + format: PDF + output: '%f-pcb-top.%x' + pages: + - layers: + - layer: F.Paste + - layer: F.SilkS + - layer: F.Mask + - layer: F.CrtYd + - layer: Edge.Cuts +- name: print_bottom + comment: Print Bottom + type: pcb_print + dir: pdf + options: + format: PDF + output: '%f-pcb-bottom.%x' + pages: + - layers: + - layer: B.Paste + - layer: B.SilkS + - layer: B.Mask + - layer: B.CrtYd + - layer: Edge.Cuts +- name: interactive_bom + comment: Generates an interactive web page useful to identify the position of the + components in the PCB. + type: ibom + options: + blacklist: DNF*,DNP* + checkboxes: Sourced,Placed,Soldered + name_format: '%f_ibom' + dark_mode: true + dir: ibom +- name: bom_csv + comment: Bill of Materials in CSV format + type: bom + options: + format: CSV + csv: + separator: ; + dir: bom +- name: gerbers + comment: Gerbers for the board house + type: gerber + dir: gerber + options: + exclude_edge_layer: true + exclude_pads_from_silkscreen: true + use_aux_axis_as_origin: false + plot_sheet_reference: false + plot_footprint_refs: true + plot_footprint_values: true + force_plot_invisible_refs_vals: false + tent_vias: true + line_width: 0.1 + subtract_mask_from_silk: false + use_protel_extensions: false + gerber_precision: 4.6 + create_gerber_job_file: true + use_gerber_x2_attributes: true + use_gerber_net_attributes: true + layers: all +- name: drills + comment: Excellon drill files, packaged with Gerbers + type: excellon + dir: gerber + options: + use_aux_axis_as_origin: false +- name: position + comment: Pick and place file + type: position + dir: pickplace + options: + format: ASCII + units: millimeters + separate_files_for_front_and_back: true + only_smd: true +- name: 3dstep + comment: 3D model (step) + type: step + dir: step +- name: stencil_3d + comment: 3d-printable stencil + type: stencil_3d + dir: stencils +- name: pcbdraw + comment: pcbdraw file + type: pcbdraw + dir: pcbdraw + options: + format: svg +- name: svg + comment: SVG files + type: svg + dir: svg +- name: netlist + comment: Schematic Netlist + type: netlist + options: + format: kicadxml + dir: netlist +- name: netlist_kicad + comment: KiCad Format Netlist + type: netlist + options: + format: classic + dir: netlist diff --git a/hardware/ese-rust-board/ese-rust-board-backups/ese-rust-board-2026-09-05_155518.zip b/hardware/ese-rust-board/ese-rust-board-backups/ese-rust-board-2026-09-05_155518.zip new file mode 100644 index 0000000000000000000000000000000000000000..a6545828cb6c96a2552301b7e2cce324eb119e2b GIT binary patch literal 36139 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 a!2g|3 Date: Wed, 9 Sep 2026 18:45:37 +0200 Subject: [PATCH 2/3] make paths relative --- README.md | 2 +- hardware/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d041d7f..cbf4a6f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Embedded Rust zum Anfassen: Hackathon auf dem exklusiven ESE 2026 Rust Devboard -[Hardware](hardware/README.md) · [PCB-Downloads](https://systemscape.github.io/ese-2026-rust-hackathon/downloads/) · [CI](docs/ci.md) +[Hardware](hardware/README.md) · [PCB-Downloads](downloads.md) · [CI](docs/ci.md) ## Worum geht es? diff --git a/hardware/README.md b/hardware/README.md index e6c9ead..07d5677 100644 --- a/hardware/README.md +++ b/hardware/README.md @@ -1,6 +1,6 @@ # ESE Rust Devboard -[Hackathon](../README.md) · [PCB downloads](https://systemscape.github.io/ese-2026-rust-hackathon/downloads/) · [Hardware CI](../docs/ci.md) +[Hackathon](../README.md) · [PCB downloads](../downloads.md) · [Hardware CI](../docs/ci.md) ## MCU Foundation - 2x Raspberry Pi RP2354B (SC1512-A4) https://mou.sr/4yLfwo5 ca. 0.80 € From 9bd46acb1f01d4eb797f65eb705414fabc9b0052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Schulz-Andres?= Date: Thu, 10 Sep 2026 11:33:51 +0200 Subject: [PATCH 3/3] chore: delete KiCad artifacts --- .../ese-rust-board-2026-09-05_155518.zip | Bin 36139 -> 0 bytes .../ese-rust-board/ese-rust-board.kicad_prl | 127 ------------------ 2 files changed, 127 deletions(-) delete mode 100644 hardware/ese-rust-board/ese-rust-board-backups/ese-rust-board-2026-09-05_155518.zip delete mode 100644 hardware/ese-rust-board/ese-rust-board.kicad_prl diff --git a/hardware/ese-rust-board/ese-rust-board-backups/ese-rust-board-2026-09-05_155518.zip b/hardware/ese-rust-board/ese-rust-board-backups/ese-rust-board-2026-09-05_155518.zip deleted file mode 100644 index a6545828cb6c96a2552301b7e2cce324eb119e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36139 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 a!2g|3