# Use the latest 2.1 version of CircleCI pipeline process engine. # See: https://circleci.com/docs/configuration-reference version: 2.1 parameters: run_build: type: boolean default: false environment: type: string default: "m5stack-atom" build_flags: type: string default: "" config: type: string default: "{}" orbs: python: circleci/python@1.4.0 # Define a job to be invoked later in a workflow. # See: https://circleci.com/docs/configuration-reference/#jobs jobs: pio-build: executor: python/default # Add steps to the job # See: https://circleci.com/docs/configuration-reference/#steps environment: PLATFORMIO_BUILD_FLAGS: << pipeline.parameters.build_flags >> steps: - checkout - run: name: "platformio install" command: "pip install --upgrade platformio" - run: name: "build" command: "pio run -e << pipeline.parameters.environment >>" - run: name: "save config" working_directory: ".pio/build/<< pipeline.parameters.environment >>" command: "echo '<< pipeline.parameters.config >>' > config.json" - run: name: "save build config" working_directory: ".pio/build/<< pipeline.parameters.environment >>" command: "echo 'PLATFORMIO_BUILD_FLAGS=\"<< pipeline.parameters.config >>\" pio run -e << pipeline.parameters.environment >> ' > buildconfig.txt" - run: name: "rename" command: "mv .pio/build/<< pipeline.parameters.environment >>/firmware.bin .pio/build/<< pipeline.parameters.environment >>/<< pipeline.parameters.environment >>-update.bin" - run: name: "compress" working_directory: ".pio/build/<< pipeline.parameters.environment >>" command: "zip << pipeline.parameters.environment >>.zip << pipeline.parameters.environment >>-*.bin config.json buildconfig.txt" - store_artifacts: path: .pio/build/<< pipeline.parameters.environment >>/<< pipeline.parameters.environment >>.zip destination: << pipeline.parameters.environment >>.zip # Orchestrate jobs using workflows # See: https://circleci.com/docs/configuration-reference/#workflows workflows: build-workflow: when: << pipeline.parameters.run_build >> jobs: - pio-build