platformio ci


platformio ci [OPTIONS] [SRC]
pio ci [OPTIONS] [SRC]


platformio ci command is conceived of as “hot key” for building project with arbitrary source code structure. In a nutshell, using SRC and platformio ci --lib contents PlatformIO initializes via platformio init new project in platformio ci --build-dir with the build environments (using platformio ci --board or platformio ci --project-conf) and processes them via platformio run command.

platformio ci command accepts multiple SRC arguments, platformio ci --lib and platformio ci --exclude options which can be a path to directory, file or Glob Pattern. Also, you can omit SRC argument and set path (multiple paths are allowed denoting with :) to PLATFORMIO_CI_SRC Environment variable

For more details as for integration with the popular Continuous Integration Systems please follow to Continuous Integration page.


platformio ci command is useful for library developers. It allows to build different examples without creating own project per them. Also, is possible to upload firmware to the target device. In this case, you need to pass additional option --project-option="targets=upload". What is more, you can specify custom upload port using --project-option="upload_port=<port>" option. See platformio ci --project-option for details.


-l, --lib

Source code which will be copied to <BUILD_DIR>/lib directly.

If platformio ci --lib is a path to file (not to directory), then PlatformIO will create temporary directory within <BUILD_DIR>/lib and copy the rest files into it.


Exclude directories and/-or files from platformio ci --build-dir. The path must be relative to PlatformIO project within platformio ci --build-dir.

For example, exclude from project src directory:

  • examples folder
  • *.h files from foo folder
platformio ci --exclude=src/examples --exclude=src/foo/*.h [SRC]
-b, --board

Build project with automatically pre-generated environments based on board settings.

For more details please look into platformio init --board.


Path to directory where PlatformIO will initialise new project. By default it’s temporary directory within your operation system.


This directory will be removed at the end of build process. If you want to keep it, please use platformio ci --keep-build-dir.


Don’t remove platformio ci --build-dir after build process.

-P, --project-conf

Buid project using pre-configured Project Configuration File platformio.ini.

-O, --project-option

Pass additional options from Project Configuration File platformio.ini to platformio init command. Use multiple --project-option options to pass multiple options to platformio init command. For example, automatically install dependent libraries platformio ci --project-option="lib_deps=ArduinoJSON" or ignore specific library platformio ci --project-option="lib_ignore=SomeLib".

-v, --verbose

Shows detailed information when processing environments.

This option can be set globally using force_verbose setting or by environment variable PLATFORMIO_SETTING_FORCE_VERBOSE.


For the others examples please follow to Continuous Integration page.