80 lines
2.2 KiB
YAML
80 lines
2.2 KiB
YAML
name: Build with PlatformIO
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
push:
|
|
paths:
|
|
- "src/**"
|
|
- "examples/**"
|
|
- ".github/workflows/platformio.yml"
|
|
- "platformio.ini"
|
|
|
|
jobs:
|
|
platformio-build:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
example: ${{ fromJSON(needs.find-examples.outputs.examples) }}
|
|
needs: [find-examples]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/pip
|
|
~/.platformio/.cache
|
|
key: ${{ runner.os }}-pio
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.9"
|
|
- name: Install PlatformIO Core
|
|
run: pip install --upgrade platformio
|
|
|
|
- name: Install MadgwickAHRS library
|
|
run: pio pkg install --library "arduino-libraries/Madgwick@^1.2.0" -g
|
|
|
|
- name: Install esp8266-oled-ssd1306 library
|
|
run: pio pkg install --library "thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.4.0" -g
|
|
|
|
- name: Install Commander library
|
|
run: pio pkg install --library "creativerobotics/Commander @ ^4.3.0" -g
|
|
|
|
- name: Install SdFat
|
|
run: pio pkg install --library "adafruit/SdFat - Adafruit Fork @ ^2.2.3" -g
|
|
|
|
- name: Run PlatformIO
|
|
run: pio ci --lib="." --board=esp32-s3-devkitm-1 --board=nrf52840_dk_adafruit
|
|
env:
|
|
PLATFORMIO_CI_SRC: ${{ matrix.example }}
|
|
|
|
find-examples:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
examples: ${{ steps.find.outputs.examples }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Create Python script
|
|
run: |
|
|
cat << 'EOF' > find_examples.py
|
|
import os
|
|
import json
|
|
|
|
examples_dir = 'examples'
|
|
ino_folders = []
|
|
|
|
for root, dirs, files in os.walk(examples_dir):
|
|
for file in files:
|
|
if file.endswith('.ino'):
|
|
ino_folders.append(root)
|
|
break
|
|
|
|
unique_folders = sorted(set(ino_folders))
|
|
print(json.dumps(unique_folders))
|
|
EOF
|
|
- name: Run Python script
|
|
id: find
|
|
run: |
|
|
result=$(python find_examples.py)
|
|
echo "::set-output name=examples::$result" |