1
0
Fork
You've already forked grow-fleet
0

Bootstrap grow fleet firmware CI #1

Merged
stackdrift merged 3 commits from feat/bootstrap-firmware-ci into main 2026年06月14日 04:14:41 +02:00

Summary

  • Moves the real ESPHome device configs into stackdrift/grow-fleet for atlas-hydro-kit, atoms3u-sensor-rig, and m5stack-airq.
  • Adds a fleet.yaml manifest with package names, release eligibility, local assets, and the pinned stackdrift/esphome-components dependency.
  • Adds Forgejo Actions CI for PR impacted-device compiles, main all-device compiles, and tag-based firmware packaging/publishing.
  • Adds release packaging helpers that produce .ota.bin, .factory.bin, and .manifest.json files for Forgejo generic packages.

Notes

  • Refs stackdrift/esphome-components#16.
  • The migrated Atlas config uses μS⁄cm for the EC calibration labels, matching stackdrift/esphome-components#14's config fix direction.
  • VPD precision from stackdrift/esphome-components#15 is still reusable component code and is not closed by this fleet bootstrap.
  • The external component source needs path: . because the current esphome-components repo keeps component directories at repo root rather than under components/.

Validation

  • python3 -m py_compile scripts/*.py
  • python3 scripts/list_devices.py --matrix
  • python3 scripts/impacted_devices.py --path fleet.yaml
  • YAML parse for fleet.yaml and .forgejo/workflows/firmware.yml
  • git diff --check HEAD
  • docker run --rm --entrypoint python3 --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD:/config" -w /config ghcr.io/esphome/esphome:2026.5 scripts/compile_devices.py --all
  • Packaged all three devices with scripts/package_device.py --version v0.0.0-test inside the same ESPHome container image.
  • Codeberg Actions PR run #4742150 succeeded: pr_prepare plus pr_compile for atlas-hydro-kit, atoms3u-sensor-rig, and m5stack-airq.

Follow-up

After this PR lands, tag releases as firmware/<device>/vX.Y.Z to publish immutable firmware packages. Site-local OTA pull/deploy remains intentionally out of scope.

## Summary - Moves the real ESPHome device configs into `stackdrift/grow-fleet` for `atlas-hydro-kit`, `atoms3u-sensor-rig`, and `m5stack-airq`. - Adds a `fleet.yaml` manifest with package names, release eligibility, local assets, and the pinned `stackdrift/esphome-components` dependency. - Adds Forgejo Actions CI for PR impacted-device compiles, `main` all-device compiles, and tag-based firmware packaging/publishing. - Adds release packaging helpers that produce `.ota.bin`, `.factory.bin`, and `.manifest.json` files for Forgejo generic packages. ## Notes - Refs stackdrift/esphome-components#16. - The migrated Atlas config uses `μS⁄cm` for the EC calibration labels, matching stackdrift/esphome-components#14's config fix direction. - VPD precision from stackdrift/esphome-components#15 is still reusable component code and is not closed by this fleet bootstrap. - The external component source needs `path: .` because the current `esphome-components` repo keeps component directories at repo root rather than under `components/`. ## Validation - `python3 -m py_compile scripts/*.py` - `python3 scripts/list_devices.py --matrix` - `python3 scripts/impacted_devices.py --path fleet.yaml` - YAML parse for `fleet.yaml` and `.forgejo/workflows/firmware.yml` - `git diff --check HEAD` - `docker run --rm --entrypoint python3 --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD:/config" -w /config ghcr.io/esphome/esphome:2026.5 scripts/compile_devices.py --all` - Packaged all three devices with `scripts/package_device.py --version v0.0.0-test` inside the same ESPHome container image. - Codeberg Actions PR run #4742150 succeeded: `pr_prepare` plus `pr_compile` for `atlas-hydro-kit`, `atoms3u-sensor-rig`, and `m5stack-airq`. ## Follow-up After this PR lands, tag releases as `firmware/<device>/vX.Y.Z` to publish immutable firmware packages. Site-local OTA pull/deploy remains intentionally out of scope.
ci: add ESPHome firmware build workflow
Some checks failed
firmware / pr_prepare (pull_request) Failing after 18s
firmware / main (pull_request) Has been skipped
firmware / release (pull_request) Has been skipped
firmware / dispatch (pull_request) Has been skipped
0d638b085e
ci: use shell checkout for firmware workflow
All checks were successful
firmware / pr_prepare (push) Has been skipped
firmware / main (push) Has been skipped
firmware / release (push) Has been skipped
firmware / dispatch (push) Has been skipped
firmware / pr_prepare (pull_request) Successful in 2s
firmware / main (pull_request) Has been skipped
firmware / release (pull_request) Has been skipped
firmware / dispatch (pull_request) Has been skipped
firmware / pr_compile (atlas-hydro-kit) (pull_request) Successful in 3m11s
firmware / pr_compile (atoms3u-sensor-rig) (pull_request) Successful in 3m4s
firmware / pr_compile (m5stack-airq) (pull_request) Successful in 3m9s
95f3ea6824
Sign in to join this conversation.
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
stackdrift/grow-fleet!1
Reference in a new issue
stackdrift/grow-fleet
No description provided.
Delete branch "feat/bootstrap-firmware-ci"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?