Docker-based development environment for embedded systems, providing containerized build environments for CI/CD workflows and local development.
| Image | Description | Documentation |
|---|---|---|
| esp-idf | ESP-IDF with QEMU, pytest, and testing tools for all ESP32 chips | README |
| esp-matter | ESP-Matter SDK for Matter protocol development on ESP32 | README |
| platformio | PlatformIO with ESP32 (all variants) + ESP-IDF + Unity testing | README |
# Pull image
docker pull ghcr.io/jethome-iot/jethome-dev-esp-idf:latest
# Build project
docker run --rm -v $(pwd):/workspace \
ghcr.io/jethome-iot/jethome-dev-esp-idf:latest \
idf.py build
# Interactive development
docker run -it --rm -v $(pwd):/workspace \
ghcr.io/jethome-iot/jethome-dev-esp-idf:latest# Pull image
docker pull ghcr.io/jethome-iot/jethome-dev-esp-matter:latest
# Build Matter project
docker run --rm -v $(pwd):/workspace \
ghcr.io/jethome-iot/jethome-dev-esp-matter:latest \
idf.py build
# Interactive development
docker run -it --rm -v $(pwd):/workspace \
ghcr.io/jethome-iot/jethome-dev-esp-matter:latest# Pull image
docker pull ghcr.io/jethome-iot/jethome-dev-platformio:latest
# Build project
docker run --rm -v $(pwd):/workspace \
ghcr.io/jethome-iot/jethome-dev-platformio:latest \
pio run
# Interactive development
docker run -it --rm -v $(pwd):/workspace \
ghcr.io/jethome-iot/jethome-dev-platformio:latest- Base: Official espressif/idf (Ubuntu LTS)
- ESP-IDF: All ESP32 toolchains included in base image
- QEMU: Xtensa and RISC-V emulation support (from base image)
- Supported Chips: ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4
- Additional Tools: jq (JSON processor), gcovr (code coverage)
- Testing: pytest, pytest-embedded frameworks for ESP-IDF and QEMU
- Base: jethome-dev-esp-idf (inherits all ESP-IDF tools)
- ESP-Matter: ConnectedHomeIP SDK included
- Matter Protocol: Support for Matter 1.0 and 1.1 (partial)
- Supported Chips: ESP32-C3, ESP32-C6, ESP32-S3, ESP32-H2 (full Matter support)
- Features: Matter device clusters, commissioning, OTA updates
- Examples: Light, switch, bridge, temperature sensor, door lock, fan, thermostat
- Note: Host tools (chip-tool, chip-cert) not included for minimal image size
- Base: Python slim (Debian)
- PlatformIO Core: Latest version
- Platforms: ESP32, Native
- Supported Chips: ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6
- Framework: ESP-IDF (toolchains download on first build)
- Testing: Unity (globally installed)
- Tools: git, cmake, clang-format, curl, wget, jq
- Python: protobuf, jinja2
The repository includes helper scripts in the scripts/ directory for local development:
Build Images Locally:
# Interactive mode - select image to build and run
./scripts/build.sh
# Build specific image (tagged as 'local')
./scripts/build.sh esp-idf
./scripts/build.sh platformio
# Build and run image interactively
./scripts/build.sh -r esp-idf
./scripts/build.sh --run platformio
# Build with custom tag
IMAGE_TAG=dev ./scripts/build.sh esp-idf
# Build all images
./scripts/build.sh allThe script builds images with the local tag by default to distinguish them from registry images. Use the -r or --run flag to automatically run the image in interactive mode after a successful build. You can customize the tag using the IMAGE_TAG environment variable.
Test Workflows with act:
# Interactive mode - select workflow to test
./scripts/test-workflow.sh
# Test specific workflow (dry-run)
./scripts/test-workflow.sh esp-idf
# Test all workflows
./scripts/test-workflow.sh all
# Actually run workflow (not dry-run)
./scripts/test-workflow.sh esp-idf --no-dryrunRequires act to be installed.
Test Workflows on GitHub Actions:
# Workflows are triggered automatically by pushing to dev or master branches
# Push to dev for testing (build-only, no push to GHCR)
git checkout dev
git push origin dev
# Monitor workflow progress
gh run list --workflow="π³ ESP-IDF Docker Image" --limit 5
gh run watch
# View logs
gh run view <run-id> --logRequires GitHub CLI to be installed.
cd images/platformio
docker build -t jethome-dev-platformio:local .Note: Locally built images use the local tag by default to distinguish them from registry images tagged with latest.
jethome-dev/
βββ .github/
β βββ workflows/ # GitHub Actions workflows
β βββ esp-idf.yml # ESP-IDF and ESP-Matter image workflows
β βββ platformio.yml # PlatformIO image workflow
βββ images/
β βββ esp-idf/ # ESP-IDF development image
β β βββ Dockerfile # Image definition
β β βββ README.md # Detailed documentation
β βββ esp-matter/ # ESP-Matter development image
β β βββ Dockerfile # Image definition
β β βββ README.md # Detailed documentation
β βββ platformio/ # PlatformIO development image
β βββ Dockerfile # Image definition
β βββ README.md # Detailed documentation
β βββ pio_project/ # Reference configuration
βββ scripts/
β βββ build.sh # Local image build helper
β βββ test-workflow.sh # Workflow testing with act
βββ LICENSE
βββ README.md
Images are published to GitHub Container Registry (GHCR):
- ESP-IDF:
ghcr.io/jethome-iot/jethome-dev-esp-idf - ESP-Matter:
ghcr.io/jethome-iot/jethome-dev-esp-matter - PlatformIO:
ghcr.io/jethome-iot/jethome-dev-platformio
See individual image documentation for available tags and usage examples.
- CI/CD: Automated firmware builds in GitHub Actions, GitLab CI
- Team Development: Consistent build environment across team
- Multi-platform: Build for all ESP32 variants from single container
- Testing: Native platform for unit tests with Unity framework
- β Reproducible builds across all machines
- β ESP32 and Native platforms pre-installed
- β Toolchains download automatically on first build
- β Minimal image size (Python slim base)
- β CI/CD optimized (no USB/serial dependencies)
- β Multiple ESP32 chip support in one image
MIT License - see LICENSE file for details.
Note: More development images may be added in the future.