{"id":27872,"library":"idf-ci","title":"idf-ci","description":"Python library for CI/CD of ESP-IDF projects. Currently at version 1.1.0, released with a monthly cadence. Provides tools to automate building, testing, and deployment for ESP-IDF firmware.","status":"active","version":"1.1.0","language":"python","source_language":"en","source_url":"https://github.com/espressif/idf-ci.git","tags":["esp-idf","ci","cd","esp32","iot"],"install":[{"cmd":"pip install idf-ci","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Class is named IDFBuild, not IDFBuilder.","wrong":"from idf_ci import IDFBuilder","symbol":"IDFBuild","correct":"from idf_ci import IDFBuild"},{"note":"Flash is directly importable from idf_ci, not from a submodule.","wrong":"from idf_ci.flash import Flash","symbol":"Flash","correct":"from idf_ci import Flash"}],"quickstart":{"code":"from idf_ci import IDFBuild, Flash\nimport os\n\n# Build the project\nbuilder = IDFBuild(project_dir='./my_project', build_dir='./build')\nbuilder.run()\n\n# Flash the firmware\nflash = Flash(port=os.environ.get('ESP_PORT', '/dev/ttyUSB0'))\nflash.run(binary='./build/app.bin')","lang":"python","description":"Build an ESP-IDF project and flash it to a device."},"warnings":[{"fix":"Run `. $HOME/esp/esp-idf/export.sh` before executing scripts.","message":"The library requires the ESP-IDF environment to be sourced prior to use. Running commands without sourcing will result in missing toolchain errors.","severity":"gotcha","affected_versions":"all"},{"fix":"Replace imports from `idf_ci.Builder` to `idf_ci.IDFBuild`.","message":"In version 1.0.0, the `IDFBuild` class was renamed from `Builder`. Existing code using `Builder` will break.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Ensure you are using a UART serial connection. For JTAG, use esptool.py directly.","message":"The `Flash` class only supports serial ports; it does not support JTAG or other interfaces.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Upgrade idf-ci: pip install --upgrade idf-ci, or use `from idf_ci import Builder` for old versions.","cause":"Using an older version (<1.0.0) where the class was named Builder.","error":"ImportError: cannot import name 'IDFBuild' from 'idf_ci'"},{"fix":"Source the environment: `. $HOME/esp/esp-idf/export.sh`","cause":"ESP-IDF environment not sourced.","error":"FileNotFoundError: [Errno 2] No such file or directory: 'idf.py'"},{"fix":"Add user to dialout group: sudo usermod -a -G dialout $USER and log out/in.","cause":"Insufficient permissions to access the serial port.","error":"PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB0'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}