name: Arduino Library CI on: push: paths-ignore: - "**/**.md" - "LICENSE" - "keywords.txt" - "library.json" - "library.properties" - "portal" - "docs/*" pull_request: paths-ignore: - "**/**.md" - "LICENSE" - "keywords.txt" - "library.json" - "library.properties" - "portal" - "docs/*" jobs: arduino: name: Arduino - ${{ matrix.name }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - name: ESP8266 core: esp8266:esp8266 board: esp8266:esp8266:huzzah index_url: https://arduino.esp8266.com/stable/package_esp8266com_index.json - name: ESP32 core: esp32:esp32 board: esp32:esp32:esp32 index_url: https://espressif.github.io/arduino-esp32/package_esp32_index.json - name: ESP32 (Dev Branch) core: esp32:esp32 board: esp32:esp32:esp32 index_url: https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json - name: Pico W | RP2040+W core: rp2040:rp2040 board: rp2040:rp2040:rpipicow index_url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json - name: Pico 2W | RP2350+W core: rp2040:rp2040 board: rp2040:rp2040:rpipico2w index_url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json steps: - name: Checkout uses: actions/checkout@v4 - name: Arduino Lint uses: arduino/arduino-lint-action@v1 with: library-manager: update - name: Install arduino-cli run: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh - name: Update core index run: arduino-cli core update-index --additional-urls "${{ matrix.index_url }}" - name: Install core run: arduino-cli core install --additional-urls "${{ matrix.index_url }}" ${{ matrix.core }} - name: Install AsyncTCP (ESP32) if: ${{ matrix.core == 'esp32:esp32' }} run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/ESP32Async/AsyncTCP#v3.3.7 - name: Install ESPAsyncTCP (ESP8266) if: ${{ matrix.core == 'esp8266:esp8266' }} run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/ESP32Async/ESPAsyncTCP#v2.0.0 - name: Install RPAsyncTCP (RP2040) if: ${{ matrix.core == 'rp2040:rp2040' }} run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/ayushsharma82/RPAsyncTCP#v1.3.2 - name: Install ESPAsyncWebServer run: ARDUINO_LIBRARY_ENABLE_UNSAFE_INSTALL=true arduino-cli lib install --git-url https://github.com/ESP32Async/ESPAsyncWebServer#v3.7.3 - name: Build Demo run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/Demo/Demo.ino" - name: Build Demo_AP run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/Demo_AP/Demo_AP.ino" - name: Build HighPerf run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/HighPerf/HighPerf.ino" - name: Build Logging run: arduino-cli compile --library . --warnings none -b ${{ matrix.board }} "examples/Logging/Logging.ino" platformio: name: PlatformIO - ${{ matrix.name }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - name: ESP8266 (Huzzah) env: ci-esp8266 board: huzzah - name: ESP8266 (D1 Mini) env: ci-esp8266 board: d1_mini - name: ESP32 (Arduino Core v2) env: ci-esp32-arduino-2 board: esp32dev - name: ESP32 env: ci-esp32 board: esp32dev - name: ESP32-S2 env: ci-esp32 board: esp32-s2-saola-1 - name: ESP32-S3 env: ci-esp32 board: esp32-s3-devkitc-1 - name: ESP32-C3 env: ci-esp32 board: esp32-c3-devkitc-02 - name: ESP32-C6 env: ci-esp32 board: esp32-c6-devkitc-1 - name: Pico W | RP2040+W env: ci-rp2040 board: rpipicow - name: Pico 2W | RP2350+W env: ci-rp2350 board: rpipico2w steps: - uses: actions/checkout@v4 - name: Set up cache uses: actions/cache@v4 with: key: ${{ runner.os }}-pio path: | ~/.platformio ~/.cache/pip - name: Setup Python uses: actions/setup-python@v5 with: python-version: "3.x" - name: Setup PlatformIO run: | python -m pip install --upgrade pip pip install --upgrade platformio - run: PLATFORMIO_SRC_DIR=examples/Demo PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_SRC_DIR=examples/Demo_AP PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_SRC_DIR=examples/HighPerf PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_SRC_DIR=examples/Logging PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_BUILD_FLAGS="-DWSL_HIGH_PERF" PLATFORMIO_SRC_DIR="examples/Demo" PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_BUILD_FLAGS="-DWSL_HIGH_PERF" PLATFORMIO_SRC_DIR="examples/Demo_AP" PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_BUILD_FLAGS="-DWSL_HIGH_PERF" PLATFORMIO_SRC_DIR="examples/Logging" PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }} - run: PLATFORMIO_BUILD_FLAGS="-DWSL_HIGH_PERF" PLATFORMIO_SRC_DIR="examples/HighPerf" PIO_BOARD=${{ matrix.board }} pio run -e ${{ matrix.env }}