J. Nick Koston
587179143f
Rename BENCHMARK_BINARY to BUILD_BINARY for generic use
2026-03-17 01:43:58 -10:00
J. Nick Koston
b87b4102e0
Fix binary path extraction and defer benchmark compile error
...
- Use BENCHMARK_BINARY= marker for reliable binary path extraction
instead of fragile tail -1 (PlatformIO can print warnings after path)
- Fix Scheduler_Defer: defer() is protected on Component, use
set_timeout(delay=0) directly on Scheduler instead
2026-03-17 01:42:37 -10:00
J. Nick Koston
dd52c91290
Add inner iteration loops to amortize CodSpeed instrumentation overhead
...
Sub-microsecond benchmarks are dominated by the ~60ns per-iteration
valgrind start/stop cost in CodSpeed simulation mode. Add kInnerIterations
(1000) inner loops to all fast benchmarks so the actual work dominates.
Move DoNotOptimize calls outside inner loops to prevent artificial overhead.
Also address review feedback:
- Use tokenless CodSpeed (public repo, no CODSPEED_TOKEN needed)
- Fix warning message to show component-specific path
- Fix stray ". :" in error message
- Verify pinned SHA on re-runs to prevent stale checkouts
2026-03-16 23:32:49 -10:00
J. Nick Koston
5b073ca520
Fix stale comment in main.cpp, simplify CI binary extraction
2026-03-16 22:48:39 -10:00
J. Nick Koston
6b88820400
Remove debug logging now that CodSpeed is working
2026-03-16 21:59:36 -10:00
J. Nick Koston
baafecd0b2
Enable CodSpeed debug logging to diagnose 0 benchmarks issue
2026-03-16 21:50:04 -10:00
J. Nick Koston
637180a628
Fix review issues: boolean comparison, missing trigger, constants
...
- Fix benchmarks CI condition: 'true' not 'True' (jq outputs lowercase)
- Add script/setup_codspeed_lib.py to benchmark infrastructure triggers
- Extract BENCHMARK_INFRASTRUCTURE_FILES and BENCHMARKS_COMPONENTS_PATH
as top-level constants in determine-jobs.py
- Fix extra_include_dirs docstring
2026-03-16 21:30:00 -10:00
J. Nick Koston
f13513239d
Fix CodSpeed instrumentation with PlatformIO
...
- Use CodSpeed's codspeed-cpp fork with proper instrumentation for
simulation mode benchmark detection
- setup_codspeed_lib.py creates a flat PlatformIO-compatible library
by combining google_benchmark sources, codspeed core, and
instrument-hooks into a single library directory
- Renames .cc to .cpp (PlatformIO doesn't compile .cc by default)
- Adds all required defines: CODSPEED_ENABLED, CODSPEED_SIMULATION,
CODSPEED_VERSION, CODSPEED_ROOT_DIR, CODSPEED_MODE_DISPLAY
- Output JSON config consumed by cpp_benchmark.py via env var
2026-03-16 21:21:44 -10:00
J. Nick Koston
ff39fcbb94
Move CodSpeed library setup to Python script
...
Extract inline shell from CI workflow into script/setup_codspeed_lib.py.
Pins codspeed-cpp to a specific commit SHA for reproducibility.
2026-03-16 21:02:39 -10:00
J. Nick Koston
5cd2f58582
Use CodSpeed's codspeed-cpp fork for simulation mode
...
- Clone CodSpeed's codspeed-cpp repo (pinned to SHA) in CI
- Create PlatformIO-compatible library.json combining google_benchmark
and codspeed core sources for proper instrumentation
- Pass library path via BENCHMARK_LIB env var to cpp_benchmark.py
- Use simulation mode for reproducible CPU instruction counting
- Locally, vanilla google/benchmark is used (no CodSpeed instrumentation)
2026-03-16 21:01:31 -10:00
J. Nick Koston
9c148da76a
Add core benchmarks dir, fix core pseudo-component, use simulation mode
...
- Move scheduler/loop/helpers benchmarks to tests/benchmarks/components/core/
- Add random_float and random_uint32 benchmarks (from ol.yaml)
- Fix core pseudo-component crash: skip components where get_component()
returns None when adding dependencies to config
- Use CodSpeed simulation mode (CPU instruction counting) for reproducible
CI results instead of walltime
2026-03-16 20:49:48 -10:00
J. Nick Koston
d9cab03c09
Move benchmarks into ci.yml with determine-jobs integration
...
- Add should_run_benchmarks() to determine-jobs.py that checks if
directly changed components have benchmark files (no dependency
expansion - changing sensor won't trigger api benchmarks)
- Move benchmark job from separate workflow into ci.yml
- Pin CodSpeed action to full commit SHA
- Delete separate ci-benchmarks.yml
2026-03-16 20:44:37 -10:00
J. Nick Koston and Copilot Autofix powered by AI
5e3c44d48f
[rp2040] Add CI check for boards.py freshness ( #14754 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-03-13 13:28:55 -10:00
J. Nick Koston
56f7b3e61b
[ci] Only run integration tests for changed components ( #14776 )
2026-03-13 13:20:35 -10:00
dependabot[bot]
a060f175ad
Bump actions/download-artifact from 8.0.0 to 8.0.1 ( #14705 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-11 09:28:46 -10:00
dependabot[bot]
edd63e3d2d
Bump actions/download-artifact from 7.0.0 to 8.0.0 ( #14327 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 14:43:10 -05:00
J. Nick Koston
317dd5b2da
[ci] Skip memory impact target branch build when tests don't exist ( #14316 )
2026-02-27 08:42:08 -10:00
dependabot[bot]
07406c96e1
Bump actions/upload-artifact from 6.0.0 to 7.0.0 ( #14326 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 21:35:15 -10:00
Jonathan Swoboda and Claude Opus 4.6
db6aea8969
Allow Python 3.14 ( #13945 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 22:11:48 -05:00
dependabot[bot]
cd43f8474e
Bump actions/cache from 5.0.2 to 5.0.3 ( #13621 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-29 14:35:32 -06:00
dependabot[bot]
04e102f344
Bump actions/setup-python from 6.1.0 to 6.2.0 ( #13454 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-22 11:16:27 -10:00
dependabot[bot]
bb67b1ca1e
Bump actions/checkout from 6.0.1 to 6.0.2 ( #13452 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-22 11:16:15 -10:00
dependabot[bot]
bc78f80f77
Bump actions/cache from 5.0.1 to 5.0.2 ( #13276 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-16 09:36:29 -10:00
dependabot[bot]
2b40af3459
Bump actions/cache from 4.3.0 to 5.0.1 ( #12450 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 13:16:29 -06:00
dependabot[bot]
b3e967a233
Bump actions/download-artifact from 6.0.0 to 7.0.0 ( #12449 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 13:15:41 -06:00
dependabot[bot]
26a08e3ae3
Bump actions/upload-artifact from 5.0.0 to 6.0.0 ( #12452 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-12 13:15:28 -06:00
dependabot[bot]
1f0a27b181
Bump codecov/codecov-action from 5.5.1 to 5.5.2 ( #12408 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-10 22:34:24 +01:00
J. Nick Koston
5919355d18
[ci] Allow memory impact target branch build to fail without blocking CI ( #12381 )
2025-12-10 00:26:24 +01:00
Jesse Hills
8caaf53ef0
[CI] Update renamed action repo ( #12290 )
2025-12-05 12:53:13 +13:00
dependabot[bot]
708496c101
Bump actions/checkout from 6.0.0 to 6.0.1 ( #12259 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 13:45:38 -06:00
dependabot[bot]
70df4ecaa9
Bump actions/setup-python from 6.0.0 to 6.1.0 ( #12106 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 13:35:40 -06:00
dependabot[bot]
01addeae08
Bump actions/checkout from 5.0.1 to 6.0.0 ( #12022 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 13:11:41 -06:00
dependabot[bot]
23f85162d0
Bump actions/checkout from 5.0.0 to 5.0.1 ( #11957 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-17 15:39:01 -06:00
J. Nick Koston
060bb4159f
[ci] Cache component dependency graph for up to 3.4x faster determine-jobs ( #11648 )
2025-11-04 17:38:57 +13:00
J. Nick Koston
08aae39ea4
[ci] Consolidate component splitting into determine-jobs ( #11614 )
2025-10-30 14:27:28 +13:00
J. Nick Koston
03fd114371
[ci] Restore parallel execution for clang-tidy split mode ( #11613 )
2025-10-30 14:26:37 +13:00
dependabot[bot]
7549ca4d39
Bump actions/download-artifact from 5.0.0 to 6.0.0 ( #11521 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-29 00:20:13 -05:00
dependabot[bot]
33e7a2101b
Bump actions/upload-artifact from 4.6.2 to 5.0.0 ( #11520 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-29 00:20:05 -05:00
J. Nick Koston
78d780105b
[ci] Change upper Python version being tested to 3.13 ( #11587 )
2025-10-28 19:24:37 -05:00
ae50a09b4e
C++ components unit test framework ( #9284 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2025-10-21 22:21:22 +00:00
J. Nick Koston and Copilot
ffb0e854b6
[ci] Optimize clang-tidy for small PRs by avoiding unnecessary job spitting ( #11402 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-10-21 10:24:46 +13:00
dependabot[bot]
426511e78d
Bump actions/download-artifact from 4.3.0 to 5.0.0 ( #11419 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 11:11:15 -10:00
862bbb7fe1
[ci] Fix memory impact analysis failing on fork PRs ( #11380 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-19 13:09:09 -10:00
a0922bc8b0
[ci] Add automated memory impact analysis for pull requests ( #11242 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2025-10-20 07:43:38 +13:00
J. Nick Koston and Jesse Hills
14d76e9e4e
[ci] Merge components with different buses to reduce CI time ( #11251 )
...
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2025-10-16 16:36:03 +13:00
J. Nick Koston
7f8ca5ddef
[ci] Add Python 3.14 testing and streamline version matrix ( #11238 )
2025-10-14 19:49:48 -10:00
J. Nick Koston
1b0ca3360e
[ci] Group all PR builds, isolate direct changes for full validation on dev ( #11193 )
2025-10-14 19:49:14 -10:00
J. Nick Koston
cad747c672
[ci] Dynamic runner allocation: 8 for releases, 4 for dev ( #11191 )
2025-10-13 07:25:35 +13:00
J. Nick Koston
3afa73b449
[ci] Filter out components without tests from CI test jobs ( #11134 followup) ( #11178 )
2025-10-11 18:27:18 -05:00
J. Nick Koston
dcf2697a2a
Group component tests to reduce CI time ( #11134 )
2025-10-12 07:21:45 +13:00