Commit Graph
17 Commits
Author SHA1 Message Date
Ben MeadorsandGitHub d9150e8dc7 ci: warn and skip the pio check job on transient network failures (#11145)
* ci: warn and skip the pio check job on transient network failures

The `check` matrix job intermittently fails before it analyses anything:
`pio check` has to fetch the platform package first, and that download gets
reset mid-flight by the CDN often enough to be a nuisance. Three of the last
~200 CI runs died this way, all identical and all ~1s into the run:

    Checking station-g3 > cppcheck (board: station-g3; platform:
    https://github.com/pioarduino/platform-espressif32/.../platform-espressif32.zip)
    requests.exceptions.ConnectionError: ('Connection aborted.',
        ConnectionResetError(104, 'Connection reset by peer'))

cppcheck never ran, so there is no signal at all - just a red X someone has to
re-run by hand.

`pio check` exits 1 for both a dead socket and a real defect, so only the output
can tell them apart. check-all.sh now tees the run and classifies the failure:

  * cppcheck reported something (summary table or a `file:line: [severity]`
    defect line) -> real, propagate the exit status. This is checked first, so
    no amount of network noise elsewhere in the log can mask a genuine defect.
  * transport-level error and nothing else -> log a ::warning:: annotation
    naming the board and the underlying error, and exit 0 under CI (exit 2
    locally, so a local run never quietly reports itself clean).
  * anything else -> propagate the exit status.

404 / 403 / UnknownPackageError are deliberately not treated as transient: a
missing or forbidden package is a reproducible break from a bad pin in a .ini,
not weather.

No workflow change is needed - gh-action-firmware's entrypoint runs
/workspace/bin/check-all.sh for MT_TARGET=check, so the whole fix lives in this
repo and applies to local runs too.

Verified by replaying the captured CI logs through the script with a stubbed
`pio`: the station-g3 connection-reset log skips with a warning under CI and
exits 2 locally, the rak11200 `Total 1 0 0` defect log still fails, that same
defect log with the reset traceback appended still fails, and a 404 still fails.

* ci: pass board names to pio as an argument array

Addresses CodeRabbit review feedback on the previous commit (and the SC2086 the
line has carried since it was written): BOARDS was a space-joined string and
$CHECK was expanded unquoted, so a board override containing whitespace or a
glob character could turn into extra pio arguments.

BOARDS and CHECK are arrays now, and pio is invoked with "${CHECK[@]}", so board
names reach it as literal arguments. The two skip messages use "${BOARDS[*]}" -
a bare "${BOARDS}" would have quietly named only the first board.

shellcheck -x is clean on the file. Re-verified with a stubbed pio that records
its argv: 'tb*' and 'tbeam extra' each arrive as one literal argument, the
default list still expands to 15 -e pairs, a two-board skip names both boards,
and all six classification cases (network/CI, network/local, real defects,
defects with a reset traceback appended, 404, clean pass) are unchanged.
2026-07-23 06:25:18 -05:00
Thomas Göttgens 58496e56d2 fail cppcheck on low already. Code quality for the win. 2026-02-24 22:45:38 +01:00
Jonathan Bennett 8a8a7cdefc cppcheck-supress to ignore intentional error 2025-06-15 16:37:19 -05:00
Ben Meadors 9784758c7b Remove heltec-v1 2024-02-21 10:03:45 -06:00
13c8dca6b4 [BOARD]: CanaryOne (#3150)
* compiling w/o e-ink display

* pinout changes

* progress getting LoRa and LCD working

* fix for bootloader, gps pins

* add canary to build matrix

* merge with main

* fix build by excluding BellModem in RadioLib

* fixes for GPS

* Fix LED_BLUE and GPS RX/TX pins

* Variant changes for merge

* make GPS baud rate configurable

* fix debug config

* Canary v1.2 changes

* Fixes for GPS

* pass trunk check

* bump protobufs to master

* update build flags to use CANARYONE enum

* use canaryone throughout for consistency.

* #define 0 is still defined

* add back .vscode/extensions.json

* bump protobufs

* revert manual change to generated file

---------

Co-authored-by: Steven Osborn <steven@lolsborn.com>
2024-02-10 17:55:32 -06:00
Ben Meadors 3d6fb13f9a Stop failing on low severity styling issues 2023-08-12 06:43:13 -05:00
Thomas Göttgens ab3446faed Back out changes to non-source files 2023-01-21 21:23:24 +01:00
Thomas Göttgens 51b2c431d9 trunk roundhouse kick 2023-01-21 21:23:24 +01:00
213d9512f1 WIP: unify the RAK targets into one firmware (#1350)
* First steps to unify GPS Lib for RAK 1910 and RAK 12500

* Technicalities. Out with the old and build the new.

* Adapt Matrix

* We use 0.4.5 now

* While we're at it, yank the RAK815, it's EOL

* Satisfy CI - for now

* - yank UBX library, talk to GPS chip with NMEA only.
- more autodetect going on, this time for the Eink Display.

TODO: actually do something with the scan findings.

* i swear this works on windows! :-)

* these are only there to make CI happy

* don't update eink display if not detected.

* Replace Oberon Crypt Library with modified Adafruit Library. This elimintaes the need for the sdk-nfxlib submodule.

* - Revert auto screen selection (incomplete)
- Revert nrF crypto engine (needs more work)
- add separate defines for not-auto-selecting screen lib.

* Define 2 new variants for RAK - with or without epaper

* Update variants

Co-authored-by: Sacha Weatherstone <sachaw100@hotmail.com>
Co-authored-by: Ben Meadors <thebentern@tuta.io>
2022-04-25 15:13:41 +10:00
b7aa1397c7 Add DIY nRF82540 PCA10059 4.2inch NiceRF 868 (#1354)
* Update build-all.sh

* Update configuration.h

* Update EInkDisplay2.cpp

* Create platformio.ini

* Create variant.cpp

* Create variant.h

* Update platformio.ini

* Update check-all.sh

* Create nordic_pca10059.json

* Update variant.h

* Update EInkDisplay2.cpp

* Update configuration.h

* Update platformio.ini

* Update EInkDisplay2.cpp

* Update variant.h

* Update EInkDisplay2.cpp

* Update configuration.h

* Update EInkDisplay2.cpp

* Update variant.h

* Update nordic_pca10059.json

* Update platformio.ini

* Update platformio.ini

* Update platformio.ini

* Update platformio.ini

* Update variant.h

* Update variant.h

* Update variant.h

* Update variant.h

* Update variant.h

* Update variant.h

* Update variant.h

* Update configuration.h

* Update EInkDisplay2.cpp

* Update variant.h

* Update variant.h

* Update platformio.ini

* Update configuration.h

* Update configuration.h

* Update platformio.ini

* Update platformio.ini

* Update configuration.h

* Update platformio.ini

* Update configuration.h

* Update platformio.ini

* Update configuration.h

* Update configuration.h

* Update platformio.ini

* Update configuration.h

Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2022-04-05 11:46:07 -05:00
d79dc631f1 Fixed RAK11200 configuration and added to build-all (#1192)
* Fixed RAK11200 configuration and added to build-all 

Co-authored-by: Mike Kinney <mike.kinney@gmail.com>
2022-02-10 20:21:36 -06:00
Thomas GöttgensandGitHub ed2de3b885 Fixed typo 2022-01-28 08:43:48 +01:00
Thomas GöttgensandGitHub af249da1a3 accept one or more environment definitions
This is a non breaking change. Up till now you could either specify ONE board to check or run with default settings hich would check a sensible set. With this change you can provide a space-separated list of boards to check, this facilitates parallel CI executions better.
2022-01-27 09:18:31 +01:00
Mike Kinney 3d718f45d5 fail the build if we have any cppcheck warnings 2022-01-24 21:35:24 +00:00
Mike Kinney 6883bc7afc fix more warnings; add to CI; suppress some warnings 2022-01-24 19:58:07 +00:00
Mike Kinney caaa235c5d more cppcheck warnings fixes 2022-01-24 17:24:40 +00:00
Mike Kinney b3210f6c2c fix some cppcheck warnings 2022-01-24 07:00:14 +00:00