idf-ci
A tool designed to streamline CI/CD for ESP-IDF projects, with support for both GitLab CI/CD and GitHub Actions.
Installation
pip install -U idf-ci
Key Features
-
Sensible Defaults
Easy setup with default settings for idf-build-apps and pytest-embedded.
-
Build Management
Build ESP-IDF apps for multiple targets (ESP32, ESP32-S2, ESP32-C3, etc.) with parallel builds and smart filtering based on changed files or test needs.
-
Test Management
Run
pytestwith ESP-IDF configs, including target-specific test discovery and marker filtering. -
GitLab CI/CD Integration
Full pipeline support with artifacts, S3 uploads, and auto-generated jobs for builds and tests.
-
GitHub Actions Integration
Generate test matrix from project settings.
Basic Usage
Initialize Configuration Files
# Create .idf_ci.toml with default idf-ci settings
idf-ci init
# Create .idf_build_apps.toml with default build settings
idf-ci build init
# Create pytest.ini with default test settings
idf-ci test init
Build Apps
# Build all apps
idf-ci build run
# Build apps for a specific target
idf-ci build run -t esp32
# Build only test-related apps
idf-ci build run --only-test-related
# Preview what would be built (dry run)
idf-ci build run --dry-run
Run Tests
We provide a pytest plugin that works with pytest-embedded to run tests with sensible defaults.
# Only collect tests that would run
pytest --collect-only
# Run tests for the esp32 target
pytest --target esp32
Documentation
For detailed usage and configuration options, please refer to the documentation.
Release files for idf-ci 1.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| idf_ci-1.2.3.tar.gz | 78.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| idf_ci-1.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 148.3 kB
Release files / idf_ci-1.2.3.tar.gz
| Download URL | idf_ci-1.2.3.tar.gz |
|---|---|
| Size | 78.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7444c0c865b35afa58bdf8f341e6b8341fd51bf91271b78c7a0ca1fadffbfe93
|
|
BLAKE2b-256 checksum How to use checksums |
3e176dfcc73183bd3dd1529bcc1fb8e9e781bf95b26d6fd1e4f0e896822f6f74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / idf_ci-1.2.3-py3-none-any.whl
| Download URL | idf_ci-1.2.3-py3-none-any.whl |
|---|---|
| Size | 70.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e9c6d0bc0290406588e6e3bfbcee7cf8f88c6942b4ef9f8c4d79ffb96ced01a
|
|
BLAKE2b-256 checksum How to use checksums |
9a22c8fe1fce44f132d72732be18c7c8ad3ceba09fa283208d2525105cf81098
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log