Skip to content

Commit 9c0a960

Browse files
committed
Simplify CI around qualified runtimes
1 parent 9348d9b commit 9c0a960

5 files changed

Lines changed: 48 additions & 273 deletions

File tree

.github/workflows/ci.yml

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,19 @@ permissions:
1010

1111
jobs:
1212
python:
13-
name: Python ${{ matrix.python }}
13+
name: Python 3.11
1414
runs-on: ubuntu-24.04
15-
strategy:
16-
fail-fast: false
17-
matrix:
18-
python: ["3.11", "3.13"]
1915
steps:
2016
- uses: actions/checkout@v4
2117
- uses: astral-sh/setup-uv@v5
2218
with:
2319
enable-cache: true
24-
- run: uv python install ${{ matrix.python }}
25-
- run: uv sync --project pi --frozen --python ${{ matrix.python }}
20+
- run: uv python install 3.11
21+
- run: uv sync --project pi --frozen --python 3.11
2622
- run: uv run --project pi --frozen ruff check pi tools stm32/scripts
2723
- run: uv run --project pi --frozen ruff format --check pi tools stm32/scripts
24+
- run: uv run --project pi --frozen mypy pi/src/beamcontrol
2825
- run: uv run --project pi --frozen pytest pi/tests tools/tests --cov=beamcontrol
29-
- name: Type check (Python 3.11)
30-
if: matrix.python == '3.11'
31-
run: uv run --project pi --frozen mypy pi/src/beamcontrol
3226

3327
c-host-tests:
3428
name: Native firmware unit tests
@@ -46,12 +40,8 @@ jobs:
4640
- run: make protocol-check
4741

4842
firmware:
49-
name: Firmware node ${{ matrix.node }}
43+
name: Firmware nodes 1-3
5044
runs-on: ubuntu-24.04
51-
strategy:
52-
fail-fast: false
53-
matrix:
54-
node: [1, 2, 3]
5545
steps:
5646
- uses: actions/checkout@v4
5747
- uses: actions/cache@v4
@@ -64,10 +54,13 @@ jobs:
6454
run: make toolchain libopencm3
6555
- name: Build libopencm3
6656
run: make libopencm3-build
67-
- name: Build firmware
68-
run: make firmware NODE=${{ matrix.node }}
69-
- name: Show size
70-
run: make firmware-size NODE=${{ matrix.node }}
57+
- name: Build firmware images
58+
run: make firmware-all
59+
- name: Show image sizes
60+
run: |
61+
for image in build/firmware/node-*/*.elf; do
62+
.tools/arm-gnu-toolchain/bin/arm-none-eabi-size "$image"
63+
done
7164
7265
deployment-bundle:
7366
name: Raspberry Pi 5 deployment bundle

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ make check # lint + all tests + firmware for nodes 1-3
3131
make distclean # remove all repository-local downloaded development state
3232
```
3333

34+
Each receiver board needs a unique compile-time CAN node ID from `1` to `30`.
35+
The Raspberry Pi controller is node `0`; release builds currently provide
36+
ready-to-flash receiver images for nodes `1`, `2`, and `3`.
37+
3438
Run `make help` for the complete command list. Linux is supported directly;
3539
Windows development uses WSL2. See
3640
[`docs/operations/developer-setup.md`](docs/operations/developer-setup.md).

docs/operations/developer-setup.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ only in repository-local, gitignored directories:
3333
- `stm32/.deps/` for libopencm3; and
3434
- `pi/.venv/` for the Python environment.
3535

36-
The host interpreter must be Python 3.10 or newer; `make setup` creates the
37-
project environment with Python 3.11. Setup does not use `sudo`, install OS
38-
packages, modify system Python, write to uv's normal per-user cache, or replace
39-
a system compiler.
36+
The bootstrap host interpreter must be Python 3.10 or newer. BeamControl itself
37+
supports Python 3.11 only, and `make setup` creates a Python 3.11 project
38+
environment. Setup does not use `sudo`, install OS packages, modify system
39+
Python, write to uv's normal per-user cache, or replace a system compiler.
4040

4141
To remove every downloaded development tool, dependency, environment, cache,
4242
and build output, run:

pi/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ name = "beamcontrol"
77
version = "0.1.0"
88
description = "uORocketry BeamControl CAN controller"
99
readme = "README.md"
10-
requires-python = ">=3.11"
10+
requires-python = ">=3.11,<3.12"
1111
dependencies = [
1212
"python-can>=4.4,<5",
1313
]

0 commit comments

Comments
 (0)