Repository navigation
CI: fix masked failures, harden workflows, add Arduino compile checks - #44
Merged
Merged
Conversation
- Replace job-level continue-on-error (which reported failed matrix jobs as a green run) with fail-fast: false - Run on pushes to main and on pull requests, with superseded non-main runs cancelled - Add a 10-minute job timeout and a read-only token - Pin ubuntu-24.04 and bump checkout/setup-python to v7 - Test on Python 3.11 and 3.13 (3.10 is end-of-life) - Lint python-large-file-upload and python-softap-fix; pytest only runs for samples that contain tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Compiles esp32-dfu for the Adafruit Feather ESP32 with arduino-cli and builds arduino-note-array (Swan) with PlatformIO, against the latest cores and Notecard library. Runs only when those samples or the workflow change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Content is unchanged; GitHub and most tools treated the UTF-16/CRLF files as binary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The library ships Notecard.h; including notecard.h only worked on case-insensitive filesystems and failed to build on Linux. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
requirements.txt was a 2019 pip freeze of a whole Raspberry Pi system (135 packages). It no longer installs on Python 3.11 or 3.13 and accounted for 170 open Dependabot alerts, none of them in packages the sample uses. List only what it imports, at current versions: note-python 2.5.1, pyserial 3.5, python-periphery 2.4.3 and RPi.GPIO 0.7.1 (0.7.0 no longer builds with GCC 10+ or Python 3.13). note-python 2.x requires Python 3.10 or later; README updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixes CVE-2024-47081 and CVE-2026-25645. requests 2.33+ requires Python 3.10 or later; README updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tjvantoll
approved these changes
Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes a CI bug that hid failures and tightens the Python workflow. Also adds compile checks for the two Arduino samples, which had no CI before.
We looked at moving this repo to Namespace runners and decided not to. The repo is public, so GitHub-hosted runners are free. Jobs take 9–17 s, and CI runs about once a month, which is too rarely for Namespace's caching to help. It would also be the first public Blues repo on Namespace. Everything here stays on GitHub-hosted runners.
Changes
Python CI (
note-samples-python-ci.yml)continue-on-error: truereported failed jobs as a passing run. On 2026-05-19, 3 jobs in one run failed and the run still showed green. Replaced withfail-fast: false, so every sample still reports but failures now fail the run.mainpluspull_request. It used to run on every branch push and never on PRs from forks.concurrency(same pattern as blues.dev): cancels superseded runs, except onmain.timeout-minutes: 10. Passing jobs take ≤17 s; a hung python-dfu test once ran 5m41s, and GitHub's default limit is 6 h.permissions: contents: read. The repo's default workflow token has write access.ubuntu-latest→ubuntu-24.04.checkoutv5 → v7,setup-pythonv6 → v7. Neither major's breaking changes affect this workflow.3.10(end-of-life Oct 2026) → matrix3.11+3.13, matching Raspberry Pi OS Bookworm and Trixie. Verified locally on 3.10–3.14.python-large-file-uploadandpython-softap-fixare now linted. pytest is skipped for samples that have no test files.Arduino CI (new
note-samples-arduino-ci.yml, runs only when the Arduino samples or the workflow change)esp32-dfu:arduino/compile-sketchesforesp32:esp32:featheresp32, with the latest esp32 core and Notecard library.arduino-note-array:pio runwith the latest PlatformIO.Other
.github/dependabot.ymlkeeps action versions current, with minor and patch updates grouped into one PR.requirements.txtfiles re-encoded from UTF-16/CRLF to UTF-8. The content is unchanged.arduino-note-arrayincluded<notecard.h>, but the library shipsNotecard.h. The sample built on macOS, which ignores filename case, and failed on Linux. Fixed the include.Dependency security fixes (172 open Dependabot alerts → 0 once merged)
python-remote-commands-attn-rpi/requirements.txtwas a 2019pip freezeof an entire Raspberry Pi system: 131 packages, responsible for 170 of the 172 alerts. None of the vulnerable packages are used by the sample, and the file no longer installs on Python 3.11 or 3.13. Replaced it with the four packages the sample imports, at their latest versions:note-python==2.5.1,pyserial==3.5,python-periphery==2.4.3,RPi.GPIO==0.7.1. (RPi.GPIO0.7.0 doesn't build with GCC 10+ or on Python 3.13.)python-softap-fix:requests2.32.3 → 2.34.2, which fixes CVE-2024-47081 and CVE-2026-25645.Testing
actionlintpasses on both workflows.esp32-dfucompiles for the Feather ESP32 andarduino-note-arraybuilds with PlatformIO.esp32-dfuin about 1.5 min andarduino-note-arrayin about 1 min, built against Notecard library 1.8.5.attn.py(Initialize/Arm/Disarm/QueryTriggerSource) through note-python 2.5.1'sOpenSerial+Transactionover a pyserial loopback port. softap-fix downloaded and extracted all 7 SoftAP assets with requests 2.34.2. TheOpenI2C/OpenSerial/Transactionsignatures and thepython-peripheryI2C path match between note-python 1.4.4 and 2.5.1. No test was run on real Notecard hardware.🤖 Generated with Claude Code