summaryrefslogtreecommitdiff
path: root/.github/workflows/build_util.yml
AgeCommit message (Collapse)Author
2026-07-17hil: controller-aware scheduling of flash and usbtest concurrencyhathach
Full-fleet profiling (HIL_PROFILE=1 instrumentation, included) showed each uPD720201 controller's serialized usbtest battery chain dominates wall time, and a board whose marginal device port bounces during concurrent batteries can wedge or kill the controller ("xHCI host not responding to stop endpoint command"). Every such death traced to mimxrt1015's port (its old "kills the uPD720201" reputation) - it is removed from the config until recabled; mimxrt1064's enum-retry stalls were a loose device cable (re-seated). nrf54lm20dk moves to boards-skip until its failing J-Link probe is replugged. With the hardware fixed both cards run width-4 batteries plus full flash churn clean, so scheduling stays simple: two symmetric knobs, flashes and batteries budgeted per controller. - schedule_boards(): dispatch boards round-robin across host controllers from a persisted hint cache (~/.cache/tinyusb-hil/ctrl_cache.json), learned and merge-on-write refreshed each run (concurrent HIL jobs keep each other's entries). Only the cached PCI address is consumed - dispatch order and first-flash budgeting, never battery serialization (batteries resolve live or fail closed to an all-slot permit). - HIL_FLASH_PARALLEL (8) and HIL_USBTEST_PARALLEL (4) are budgeted per controller via lock slots assigned on first sight. - re-runs: a failed run writes <report dir>/<config>.failed with the exact re-run spec (--accumulate -b <failed board> -bt <board>:<its failed tests>) instead of the inverted --skip-board list of everything that passed; --skip-board is gone, --flasher/--exclude-flasher scope a config across CI jobs by flasher type (no board names hardcoded in workflows), and -a/--accumulate merges a re-run into the existing report. The spec is stamped with GITHUB_RUN_ID and cleared on fresh runs, so a retry can never consume a spec left behind by a different run's dead or skipped attempt. - CI: esp-idf firmware builds move out of hil-build into hil-build-esp, and the esptool-flashed boards run in their own hil-tinyusb-esp job, so the main hil-tinyusb run starts as soon as the fast toolchains finish instead of waiting on the slow esp-idf build (an esp toolchain flake previously skipped the whole rig run). Artifacts are namespaced per toolchain so the esp job downloads only esp-idf binaries. - HIL_PROFILE=1: timestamped log lines, per-flash durations, permit-wait logging, uid->controller map dump for analysis. - hil_report: per-variant test duration as a dedicated trailing column, recorded only by full runs. Validated on the ci rig (fixed seeds 20260716/777, full fleet at 8/4): 738s/780s walls with only known-flake failures and no controller deaths, vs 1134-1211s serialized-battery baseline.
2026-06-10Merge pull request #3690 from hathach/claude/board-test-idle-parkHa Thach
hil: park boards with idle board_test instead of erasing flash
2026-03-18Update several actions to latest versionhathach
2026-03-12chore(workflows): update GitHub Actions dependencies and improve membrowse ↵hathach
error handling update AGENTS.md with metrics compare
2026-02-12change membrowse target to board/target and remove redundant ↵hathach
continue-on-error directive fix defsym can be followed by = or ,
2026-02-12refactor build scripts to support multiple build targets and improve ↵hathach
argument handling
2026-02-12clean uphathach
2026-02-12fix cihathach
2026-02-12membrowse upload continue on errorhathach
2026-02-11make membrowse command more visiblehathach
2026-02-11correct membrowse upload stephathach
2026-02-11add build target argument to improve flexibility of build scripts and workflowshathach
membrowse-upload upload with --identical if elf file does not exist
2026-02-11fetch depth 0 if membrowse-uploadhathach
2026-02-11remove `membrowse-targets.json` as it is no longer requiredhathach
2026-02-10add membrowse-upload target and use it in ci after buildhathach
2026-01-24restructure targets fileMichael Rogov Papernov
2026-01-16Integrate MemBrowseMichael Rogov Papernov
2025-12-13upload metrics.json and metrics compare to release page (#3409)Ha Thach
* upload metrics.json and metrics compare to release page * Adjust workflow comment handling for forks
2025-12-05Run CI build with fixed set of boards (#3389)Ha Thach
* run cmake ci build on github with a fixed set of board to keep the size stable * Size Difference Report contain major >1% and minor <1& table
2025-12-04fine tune ci to build more with circleci (#3386)Ha Thach
* fine tune ci to build more with circleci * skip make for arm-iar, esp-idf * skip make + clang for circleci since llvm-objcopy got killed due to memory issue.
2025-12-03upload metrics.json and aggregate code metrics, post metrics commenthathach
fine tune ci matrix run
2025-12-03upload metrics.json and aggregate code metrics, fine tune ci matrix runhathach
2025-12-03upload metrics.json, test cihathach
2025-11-03fix alert using input in gh action. fix some conversion inthathach
2025-04-17- run arm-iar using github actionhathach
- add skip_ci.txt to family folder to skip boards in ci run
2025-01-16update esp-idf to 5.3.2hathach
2024-09-30bump up idf to 5.3.1hathach
2024-09-30Migrate hil vm (#2822)Ha Thach
* migrate hil to new x64 VM instead of rpi * re-enable hil for s3
2024-08-21update circle ci to build make (#2769)Ha Thach
* update build.py script to work with circleci * build make with circle ci * build vm for esp only * nrf imxrt with large resource * nrf imxrt with large resource * remove 2 of nrf boards
2024-08-11fix spi_set_format() -Wnull-dereference when compiling with -Oshathach
2024-08-09Update ci toolchain (#2758)Ha Thach
* move toolchain url to its setup action
2024-05-13Ci tweak3 (#2643)Ha Thach
- enable --one-per-family to build 1 board per family, also skip family if board specified in -b also present - minimize ci run for push event - only build one board per family - skip hil test on both pi4 and hfp - full build will be runn for PR event - IAR always build 1 board per family regardless of event - update build.py to optimize make - remove all setup python since we don't really need it
2024-05-10More ci tweak (#2636)Ha Thach
* change concurrency group to ${{ github.workflow }}-${{ github.ref }} * use argparse for build.py hil_test.py, remove the need to install click * move ci win/mac to build_cmake.yml * rename build_family.yml to build_util.yml * build_util.yml support esp32 * integrate build-espressif into build.yml * build.py support make with --board option * add get_deps action * update hil test to reuse action