Repository navigation
Build CI (migrate-api-v2 branch) #175
This file contains hidden or 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
| # SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2026 | |
| # | |
| # SPDX-License-Identifier: MIT | |
| name: Build CI (migrate-api-v2 branch) | |
| on: | |
| push: | |
| branches: | |
| - migrate-api-v2 | |
| pull_request: | |
| # 'edited' covers PRs retargeted to migrate-api-v2 after opening | |
| types: [opened, synchronize, reopened, edited] | |
| branches: | |
| - migrate-api-v2 | |
| # Manual runs, and the target for the nightly cron dispatcher | |
| # (nightly-migrate-api-v2.yml, which must live on the default branch -- | |
| # GitHub only fires `schedule` crons from there, so it dispatches this | |
| # workflow on the migrate-api-v2 ref instead). | |
| workflow_dispatch: | |
| jobs: | |
| # Mirrors `build-esp32sx-esptool` in the v1 workflow (build-clang-doxy.yml on | |
| # main): builds each example, converts the demo to UF2, then assembles a | |
| # from-blank-flash combined.bin (tinyuf2 bootloader + partition table + | |
| # boot_app0 + app) using the board's definition.json from Wippersnapper_Boards. | |
| build-esp32sx-esptool: | |
| name: 🏗️ESP32-Sx | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: | |
| [ | |
| "funhouse_noota", | |
| "magtag", | |
| "metroesp32s2", | |
| "feather_esp32s2", | |
| "feather_esp32s2_tft", | |
| "feather_esp32s2_reverse_tft", | |
| "feather_esp32s3_4mbflash_2mbpsram", | |
| "feather_esp32s3_tft", | |
| "feather_esp32s3_reverse_tft", | |
| "qtpy_esp32s2", | |
| "qtpy_esp32s3_n4r2", | |
| "lilygo_t_display_s3", | |
| ] | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Checkout Board Definitions | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/Wippersnapper_Boards | |
| ref: api-v2 | |
| path: ws-boards | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| git clone --quiet https://github.com/adafruit/Adafruit_HX8357_Library.git /home/runner/Arduino/libraries/Adafruit_HX8357_Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 | |
| git clone --quiet https://github.com/adafruit/Adafruit_STMPE610.git /home/runner/Arduino/libraries/Adafruit_STMPE610 | |
| git clone --quiet https://github.com/adafruit/Adafruit-ST7735-Library.git /home/runner/Arduino/libraries/Adafruit-ST7735-Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_TouchScreen.git /home/runner/Arduino/libraries/Adafruit_TouchScreen | |
| git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino | |
| - name: Install Dependencies (esptool) | |
| run: | | |
| pip3 install esptool | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: Build for ESP32-SX | |
| run: | | |
| python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: list files (tree) | |
| run: | | |
| tree | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bin | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.elf wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.elf | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.map wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.map | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.bootloader.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bootloader.bin | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.merged.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.merged_auto.bin | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.partitions.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.partitions.bin | |
| - name: Get Board Flash Parameters | |
| id: get_board_json | |
| run: | | |
| board_name=${{ matrix.arduino-platform }} | |
| # Remove '_noota' suffix if present | |
| board_name=${board_name%_noota} | |
| # Remove 'wippersnapper_' prefix if present | |
| board_name=${board_name#wippersnapper_} | |
| # Remove 'espressif_' prefix if present | |
| board_name=${board_name#espressif_} | |
| content=$(cat ws-boards/boards/${board_name//_/-}/definition.json) | |
| { | |
| echo 'boardJson<<EOF' | |
| echo $content | |
| echo EOF | |
| } >> "$GITHUB_OUTPUT" | |
| - name: fetch tinyuf2 combined.bin | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| BOARD_NAME="${{fromJson(steps.get_board_json.outputs.boardJson).bootloaderBoardName}}" | |
| set +e | |
| for attempt in 1 2 3; do | |
| echo "Attempt $attempt: Fetching tinyuf2 release info for board $BOARD_NAME" | |
| API_RESPONSE=$(gh release view --repo adafruit/tinyuf2 --json assets) | |
| if [ $? -ne 0 ]; then | |
| echo "Attempt $attempt: curl failed to fetch release info." | |
| if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); continue; fi | |
| fi | |
| DOWNLOAD_URL=$(echo "$API_RESPONSE" | jq -r '.assets[] | select(.url | contains("tinyuf2-'$BOARD_NAME'-") and endswith(".zip")) | .url // empty'); JQ_EXIT=$? | |
| if [ $JQ_EXIT -ne 0 ] || [ -z "$DOWNLOAD_URL" ]; then | |
| echo "Attempt $attempt: jq failed or no matching zip found." | |
| if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); continue; fi | |
| fi | |
| echo "Attempt $attempt: Downloading $DOWNLOAD_URL" | |
| wget "$DOWNLOAD_URL" -O tinyuf2.zip | |
| if [ $? -eq 0 ]; then | |
| unzip -o tinyuf2.zip -d . | |
| if [ $? -ne 0 ]; then | |
| echo "Attempt $attempt: unzip failed" | |
| if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); continue; fi | |
| fi | |
| break | |
| else | |
| echo "Attempt $attempt: wget failed to download $DOWNLOAD_URL" | |
| if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); fi | |
| fi | |
| done | |
| set -e | |
| - name: move partition and bootloader files for tinyuf2 (to match flash_args) | |
| run: | | |
| # Copy files where they're expected to make flash_args happy | |
| mkdir bootloader | |
| cp bootloader.bin bootloader/bootloader.bin | |
| mkdir partition_table | |
| cp partition-table.bin partition_table/partition-table.bin | |
| - name: Create new_flash_args file from flash_args with added app bin + output file | |
| run: | | |
| # Create new_flash_args with esptool parameters first and output file | |
| echo "--flash-mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}}" > new_flash_args | |
| echo "--flash-freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}}" >> new_flash_args | |
| echo "--flash-size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}}" >> new_flash_args | |
| echo "-o wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.combined.bin" >> new_flash_args | |
| # Append flash_args content (from the tinyuf2 release zip) to | |
| # new_flash_args, skipping the first line | |
| tail -n +2 flash_args >> new_flash_args | |
| # Append main app to flash_args file | |
| echo "0x10000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bin" >> new_flash_args | |
| - name: Check boot_app0 file existence (esp32sx built from core, not-source) | |
| id: check_files | |
| uses: andstor/file-existence-action@v3 | |
| with: | |
| files: "/home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin" | |
| - name: list arduino esp32 core files | |
| if: steps.check_files.outputs.files_exists == 'true' | |
| run: | | |
| ls /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions | |
| - name: list arduino esp32 bsp core files | |
| if: steps.check_files.outputs.files_exists == 'false' | |
| run: | | |
| ls /home/runner/Arduino/hardware/espressif/esp32/tools/partitions | |
| - name: boot_app0 file from arduino-cli core | |
| if: steps.check_files.outputs.files_exists == 'true' | |
| run: cp /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin | |
| - name: boot_app0 file from esp32 source bsp | |
| if: steps.check_files.outputs.files_exists == 'false' | |
| run: cp /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin | |
| - name: Copy boot_app0 file to ota_data_initial.bin (overwrite tinyuf2 boot preference) | |
| run: cp wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin ota_data_initial.bin | |
| - name: Create combined binary using Esptool merge-bin | |
| run: | | |
| echo ${{ steps.get_board_json.outputs.boardJson }} | |
| python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge-bin @new_flash_args | |
| - name: Zip build artifacts | |
| run: | | |
| zip -r wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.* | |
| - name: Upload build artifacts zip | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}-zip | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.zip | |
| - name: Rename UF2 build artifact to reflect the platform name | |
| run: | | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| - name: Upload build artifact UF2 file | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}-uf2 | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| # UF2-only boards not yet migrated to the esptool/combined.bin flow above | |
| # (mirrors the rump `build-esp32sx` job in the v1 workflow). | |
| build-esp32sx: | |
| name: 🏗️ESP32-Sx | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: | |
| [ | |
| "metro_esp32s3", | |
| "feather_esp32s3", | |
| "qtpy_esp32s3", | |
| ] | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| git clone --quiet https://github.com/adafruit/Adafruit_HX8357_Library.git /home/runner/Arduino/libraries/Adafruit_HX8357_Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 | |
| git clone --quiet https://github.com/adafruit/Adafruit_STMPE610.git /home/runner/Arduino/libraries/Adafruit_STMPE610 | |
| git clone --quiet https://github.com/adafruit/Adafruit-ST7735-Library.git /home/runner/Arduino/libraries/Adafruit-ST7735-Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_TouchScreen.git /home/runner/Arduino/libraries/Adafruit_TouchScreen | |
| git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: Build for ESP32-SX | |
| run: | | |
| python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: list files (tree) | |
| run: | | |
| tree | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/*/build/*/Wippersnapper_demo.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| mv examples/*/build/*/Wippersnapper_demo.ino.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bin | |
| - name: upload build artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bin | |
| build-esp32: | |
| name: 🏗️ESP32/Cx | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: | |
| [ | |
| "wippersnapper_feather_esp32", | |
| "qtpy_esp32", | |
| "feather_esp32_v2", | |
| "itsybitsy_esp32", | |
| "wippersnapper_qtpy_esp32c3", | |
| "wippersnapper_feather_esp32c6" | |
| ] | |
| include: | |
| - offset: "0x1000" | |
| - offset: "0x0" | |
| arduino-platform: "wippersnapper_qtpy_esp32c3" | |
| - offset: "0x0" | |
| arduino-platform: "wippersnapper_feather_esp32c6" | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Checkout Board Definitions | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/Wippersnapper_Boards | |
| ref: api-v2 | |
| path: ws-boards | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: Install Dependencies | |
| run: | | |
| pip install esptool==4.6 | |
| - name: build ESP32 platforms | |
| run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: Check artifacts | |
| run: | | |
| ls examples/Wippersnapper_demo/build/* | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bin | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.elf wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.elf | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.map wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.map | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.bootloader.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bootloader.bin | |
| mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.partitions.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.partitions.bin | |
| - name: Check boot_app0 file existence (esp32 built from core, not-source) | |
| id: check_files | |
| uses: andstor/file-existence-action@v3 | |
| with: | |
| files: "/home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin" | |
| - name: boot_app0 file from arduino-cli core | |
| if: steps.check_files.outputs.files_exists == 'true' | |
| run: mv /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.boot_app0.bin | |
| - name: boot_app0 file from esp32 source bsp | |
| if: steps.check_files.outputs.files_exists == 'false' | |
| run: mv /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.boot_app0.bin | |
| - name: Get Board Flash Parameters | |
| id: get_board_json | |
| run: | | |
| board_name=${{ matrix.arduino-platform }} | |
| # Remove '_noota' suffix if present | |
| board_name=${board_name%_noota} | |
| # Remove 'wippersnapper_' prefix if present | |
| board_name=${board_name#wippersnapper_} | |
| content=$(cat ws-boards/boards/${board_name//_/-}/definition.json) | |
| { | |
| echo 'boardJson<<EOF' | |
| echo $content | |
| echo EOF | |
| } >> "$GITHUB_OUTPUT" | |
| - name: Create combined binary using Esptool merge_bin | |
| run: | | |
| echo ${{ steps.get_board_json.outputs.boardJson }} | |
| echo ${{ fromJson(steps.get_board_json.outputs.boardJson) }} | |
| python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge_bin \ | |
| --flash_mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \ | |
| --flash_freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \ | |
| --flash_size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \ | |
| -o wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.combined.bin \ | |
| ${{ matrix.offset }} wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bootloader.bin \ | |
| 0x8000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.partitions.bin \ | |
| 0xe000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.boot_app0.bin \ | |
| 0x10000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bin | |
| - name: Zip build artifacts | |
| run: | | |
| zip -r wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.* | |
| - name: upload build artifacts zip | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip | |
| build-samd: | |
| name: 🏗️SAMD | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: | |
| [ | |
| "pyportal_tinyusb", | |
| "pyportal_titano_tinyusb", | |
| "metro_m4_airliftlite_tinyusb", | |
| ] | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| # manually install Adafruit WiFiNINA library fork | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/adafruit/WiFiNINA.git /home/runner/Arduino/libraries/WiFiNINA | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: build SAMD platforms | |
| run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/*/build/*/Wippersnapper_demo.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| mv examples/*/build/*/Wippersnapper_demo.ino.hex wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.hex | |
| - name: upload build artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.hex | |
| build-rp2040: | |
| name: 🏗️RP2040 | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: ["picow_rp2040_tinyusb", "picow_rp2350_tinyusb"] | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| # manually install OneWireNG/TempControlLib for OneWireNg (RP2040 Supported OneWire w/backwards compat.) | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/brentru/Adafruit_SPIFlash.git /home/runner/Arduino/libraries/Adafruit_SPIFlash | |
| git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: build RP2040 platforms | |
| run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/*/build/*/Wippersnapper_demo.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| - name: upload build artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| build-esp8266: | |
| name: 🏗️ESP8266 | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: ["feather_esp8266"] | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| - name: Install extra Arduino library | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: build ESP8266 platforms | |
| run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: list build artifacts | |
| run: | | |
| ls | |
| ls examples/* | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/*/build/*/Wippersnapper_demo.ino.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bin | |
| mv examples/*/build/*/Wippersnapper_demo.ino.elf wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.elf | |
| mv examples/*/build/*/Wippersnapper_demo.ino.map wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.map | |
| - name: Zip build artifacts | |
| run: | | |
| zip -r wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.* | |
| - name: upload build artifacts zip | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip | |
| build-esp32sx-dev: | |
| name: 🏗️ESP32-Sx(DEV) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: | |
| [ | |
| "feather_esp32s2_debug", | |
| "feather_esp32s2_tft_debug", | |
| "feather_esp32s3_debug", | |
| "feather_esp32s3_4mbflash_2mbpsram_debug", | |
| "feather_esp32s3_tft_debug", | |
| "wippersnapper_feather_esp32s3_reverse_tft_debug", | |
| "metroesp32s2_debug", | |
| "metro_esp32s3_debug", | |
| ] | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| git clone --quiet https://github.com/adafruit/Adafruit_HX8357_Library.git /home/runner/Arduino/libraries/Adafruit_HX8357_Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341 | |
| git clone --quiet https://github.com/adafruit/Adafruit_STMPE610.git /home/runner/Arduino/libraries/Adafruit_STMPE610 | |
| git clone --quiet https://github.com/adafruit/Adafruit-ST7735-Library.git /home/runner/Arduino/libraries/Adafruit-ST7735-Library | |
| git clone --quiet https://github.com/adafruit/Adafruit_TouchScreen.git /home/runner/Arduino/libraries/Adafruit_TouchScreen | |
| git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: Build for ESP32-SX | |
| run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: list | |
| run: | | |
| ls | |
| ls -R examples/*/build/ | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/*/build/*/wippersnapper_debug.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| mv examples/*/build/*/wippersnapper_debug.ino.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bin | |
| - name: upload build artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-dev-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2 | |
| wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bin | |
| build-esp32-dev: | |
| name: 🏗️ESP32/Cx(DEV) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arduino-platform: | |
| [ | |
| "wippersnapper_feather_esp32c6_debug", | |
| ] | |
| include: | |
| - offset: "0x1000" | |
| - offset: "0x0" | |
| arduino-platform: "wippersnapper_feather_esp32c6_debug" | |
| steps: | |
| - uses: actions/setup-python@v7 | |
| with: | |
| python-version: "3.x" | |
| - uses: actions/checkout@v7 | |
| - name: Get WipperSnapper version | |
| run: | | |
| git fetch --prune --unshallow --tags | |
| git describe --dirty --tags | |
| echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags) | |
| - uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/ci-arduino | |
| ref: ci-wippersnapper | |
| path: ci | |
| - name: Checkout Board Definitions | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: adafruit/Wippersnapper_Boards | |
| ref: api-v2 | |
| path: ws-boards | |
| - name: Install CI-Arduino | |
| run: bash ci/actions_install.sh | |
| - name: Install extra Arduino libraries | |
| run: | | |
| git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library | |
| git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg | |
| - name: Download stable Nanopb | |
| id: download-nanopb | |
| continue-on-error: true | |
| run: | | |
| wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz | |
| - if: ${{ failure() || steps.download-nanopb.outcome != 'success' }} | |
| name: Restore cached nanopb | |
| id: cache-nanopb-restore | |
| uses: actions/cache/restore@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - if: ${{ steps.download-nanopb.outcome == 'success' }} | |
| name: Save nanopb to cache | |
| id: cache-nanopb-save | |
| uses: actions/cache/save@v6 | |
| env: | |
| cache-name: cache-node-modules | |
| with: | |
| path: ./nanopb-0.4.8.tar.gz | |
| key: nanopb-0.4.8.tar.gz | |
| - name: Install stable Nanopb | |
| run: | | |
| tar -xf nanopb-0.4.8.tar.gz | |
| # Copy files to WipperSnapper's src/nanopb directory | |
| cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb | |
| mv nanopb/pb.h src/nanopb/nanopb.pb.h | |
| - name: Install Dependencies | |
| run: | | |
| pip3 install esptool | |
| - name: build ESP32 platforms | |
| run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000 | |
| - name: Check artifacts | |
| run: | | |
| ls examples/wippersnapper_debug/build/* | |
| - name: Rename build artifacts to reflect the platform name | |
| run: | | |
| mv examples/wippersnapper_debug/build/*/wippersnapper_debug.ino.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bin | |
| mv examples/wippersnapper_debug/build/*/wippersnapper_debug.ino.elf wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.elf | |
| mv examples/wippersnapper_debug/build/*/wippersnapper_debug.ino.map wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.map | |
| mv examples/wippersnapper_debug/build/*/wippersnapper_debug.ino.bootloader.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bootloader.bin | |
| mv examples/wippersnapper_debug/build/*/wippersnapper_debug.ino.partitions.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.partitions.bin | |
| - name: Check boot_app0 file existence (esp32 built from core, not-source) | |
| id: check_files | |
| uses: andstor/file-existence-action@v3 | |
| with: | |
| files: "/home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin" | |
| - name: boot_app0 file from arduino-cli core | |
| if: steps.check_files.outputs.files_exists == 'true' | |
| run: mv /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.boot_app0.bin | |
| - name: boot_app0 file from esp32 source bsp | |
| if: steps.check_files.outputs.files_exists == 'false' | |
| run: mv /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.boot_app0.bin | |
| - name: Get Board Flash Parameters | |
| id: get_board_json | |
| run: | | |
| board_name=${{ matrix.arduino-platform }} | |
| # Remove '_noota' suffix if present | |
| board_name=${board_name%_noota} | |
| # Remove '_debug' suffix if present | |
| board_name=${board_name%_debug} | |
| # Remove 'wippersnapper_' prefix if present | |
| board_name=${board_name#wippersnapper_} | |
| content=$(cat ws-boards/boards/${board_name//_/-}/definition.json) | |
| { | |
| echo 'boardJson<<EOF' | |
| echo $content | |
| echo EOF | |
| } >> "$GITHUB_OUTPUT" | |
| - name: Create combined binary using Esptool merge_bin | |
| run: | | |
| echo ${{ steps.get_board_json.outputs.boardJson }} | |
| echo ${{ fromJson(steps.get_board_json.outputs.boardJson) }} | |
| python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge_bin \ | |
| --flash_mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \ | |
| --flash_freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \ | |
| --flash_size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \ | |
| -o wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.combined.bin \ | |
| ${{ matrix.offset }} wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bootloader.bin \ | |
| 0x8000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.partitions.bin \ | |
| 0xe000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.boot_app0.bin \ | |
| 0x10000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bin | |
| - name: Zip build artifacts | |
| run: | | |
| zip -r wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.* | |
| - name: upload build artifacts zip | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: build-files-dev-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }} | |
| path: | | |
| wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip | |
| membrowse: | |
| # Wait for every release and development build group before reporting. | |
| needs: | |
| - build-esp32sx-esptool | |
| - build-esp32sx | |
| - build-esp32 | |
| - build-samd | |
| - build-rp2040 | |
| - build-esp8266 | |
| - build-esp32sx-dev | |
| - build-esp32-dev | |
| if: >- | |
| github.event_name == 'pull_request' || | |
| (github.event_name == 'push' && github.ref == 'refs/heads/migrate-api-v2') | |
| uses: ./.github/workflows/membrowse-report.yml | |
| secrets: | |
| MEMBROWSE_API_KEY: ${{ secrets.MEMBROWSE_API_KEY }} |