move common settings into a single section #106
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: ${{ matrix.template }} ${{ matrix.environment.name }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# we have 4 templates, which we want to build for 4 different boards | |
template: [basic, basic-osc, ble-advertising, libmapper-osc] | |
environment: | |
- name: Xiao | |
board: seeed_xiao_esp32c3 | |
extra_flags: "" | |
- name: tinypico | |
board: tinypico | |
extra_flags: "-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue" | |
- name: m5stick-c | |
board: m5stick-c | |
extra_flags: "-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue" | |
- name: ESP32-C3 | |
board: esp32-c3-devkitc-02 | |
extra_flags: "-DBOARD_HAS_PSRAM" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cache/pip | |
~/.platformio/.cache | |
key: ${{ runner.os }}-pio | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Install PlatformIO Core | |
run: pip install --upgrade platformio | |
# The boards and templates each have different requirements, so the platformio.ini file is different for each. | |
# The platformio.ini files that are in each template may select only one board to be built -- so here we generate | |
# a temporary platformio.ini file for each template/board combination to ensure the pipeline tests them all. | |
- name: Create Temporary platformio.ini | |
run: | | |
echo "[platformio]" > ./${{ matrix.template }}/platformioTemp.ini | |
echo "[env:${{ matrix.environment.name }}]" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "platform = espressif32" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "board = ${{ matrix.environment.board }}" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "framework = arduino" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "board_build.partitions = min_spiffs_no_OTA.csv" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "monitor_speed = 115200" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "monitor_echo = yes" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "monitor_filters = default,esp32_exception_decoder" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "build_flags = -std=gnu++2a ${{ matrix.environment.extra_flags }}" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo "build_unflags = -std=gnu++11 -std=gnu++14 -std=gnu++17" >> ./${{ matrix.template }}/platformioTemp.ini | |
# Define dependencies for each template | |
echo "lib_deps =" >> ./${{ matrix.template }}/platformioTemp.ini | |
if [[ "${{ matrix.template }}" == "basic" ]]; then | |
echo " https://github.com/Puara/puara-module.git" >> ./${{ matrix.template }}/platformioTemp.ini | |
elif [[ "${{ matrix.template }}" == "basic-osc" ]]; then | |
echo " https://github.com/Puara/puara-module.git" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo " https://github.com/cnmat/OSC#3.5.8" >> ./${{ matrix.template }}/platformioTemp.ini | |
elif [[ "${{ matrix.template }}" == "ble-advertising" ]]; then | |
echo " https://github.com/Puara/puara-gestures.git" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo " https://github.com/Puara/puara-module.git" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo " arduino-libraries/ArduinoBLE" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo " johboh/nlohmann-json@^3.11.3" >> ./${{ matrix.template }}/platformioTemp.ini | |
elif [[ "${{ matrix.template }}" == "libmapper-osc" ]]; then | |
echo " https://github.com/Puara/puara-gestures.git" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo " https://github.com/mathiasbredholt/libmapper-arduino.git#v0.3" >> ./${{ matrix.template }}/platformioTemp.ini | |
echo " https://github.com/Puara/puara-module.git" >> ./${{ matrix.template }}/platformioTemp.ini | |
fi | |
# Build using the temporary platformio.ini file | |
- name: Build | |
run: | | |
cd ./${{ matrix.template }} | |
pio settings set force_verbose 1 | |
pio run --environment ${{ matrix.environment.name }} --project-conf platformioTemp.ini | |
- name: Simulate and test each template on a ESP32-C3 board with Wokwi | |
if: ${{ matrix.environment.name == 'ESP32-C3' }} | |
uses: wokwi/wokwi-ci-action@v1 | |
with: | |
token: ${{ secrets.WOKWI_CLI_TOKEN }} | |
path: ./${{ matrix.template }}/ # directory with wokwi.toml, relative to repo's root | |
timeout: 30000 | |
expect_text: 'Puara Start Done!' |