Skip to content

WipperSnapper Build CI #1215

WipperSnapper Build CI

WipperSnapper Build CI #1215

# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2023
#
# SPDX-License-Identifier: MIT
name: WipperSnapper Build CI
on:
workflow_dispatch:
pull_request:
workflow_call:
secrets:
GH_REPO_TOKEN:
required: true
jobs:
# build-esp32sx-esptool:
# name: 🏗️ESP32-Sx(lvgl)
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# arduino-platform: ["funhouse_noota"]
# include:
# - offset: "0x1000"
# steps:
# - uses: actions/setup-python@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# with:
# repository: adafruit/ci-arduino
# ref: ci-wippersnapper
# path: ci
# - name: Checkout Board Definitions
# uses: actions/checkout@v4
# with:
# repository: adafruit/Wippersnapper_Boards
# 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/milesburton/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
# git clone --depth 1 --branch wippersnapper https://github.com/brentru/lvgl.git /home/runner/Arduino/libraries/lvgl
# git clone --depth 1 --branch development https://github.com/brentru/Adafruit_LvGL_Glue.git /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_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@v4
# 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@v4
# 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: List all files in Adafruit_LittlevGL_Glue_Library folder
# run: |
# ls /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library
# - name: Copy lv_conf.h file in Adafruit_LittlevGL_Glue_Library to the arduino library folder
# run: |
# cp /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library/lv_conf.h /home/runner/Arduino/libraries
# - name: Install Dependencies (esptool)
# run: |
# pip3 install esptool
# - name: Build for ESP32-SX (esptool)
# run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000
# - name: list files
# run: |
# ls -Rla examples/
# - 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.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_}
# content=$(cat ws-boards/boards/${board_name//_/-}/definition.json)
# {
# echo 'boardJson<<EOF'
# echo $content
# echo EOF
# } >> "$GITHUB_OUTPUT"
# - 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: mv /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: mv /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin
# - 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 }}.fatfs.${{ env.WS_VERSION }}.combined.bin \
# ${{ matrix.offset }} wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bootloader.bin \
# 0x8000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.partitions.bin \
# 0xe000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin \
# 0x10000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bin
# - 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@v4
# with:
# name: build-files-${{ matrix.arduino-platform }}-zip
# path: |
# wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.zip
# - 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 artifact UF2 file
# uses: actions/upload-artifact@v4
# with:
# name: build-files-${{ matrix.arduino-platform }}-uf2
# path: |
# wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2
# build-esp32sx:
# name: 🏗️ESP32-Sx
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# arduino-platform:
# [
# "magtag",
# "metroesp32s2",
# "metro_esp32s3",
# "feather_esp32s2",
# "feather_esp32s2_tft",
# "feather_esp32s2_reverse_tft",
# "feather_esp32s3",
# "feather_esp32s3_4mbflash_2mbpsram",
# "feather_esp32s3_tft",
# "qtpy_esp32s3",
# "qtpy_esp32s2",
# "feather_esp32s3_reverse_tft",
# "qtpy_esp32s3_n4r2",
# ]
# steps:
# - uses: actions/setup-python@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# 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/milesburton/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
# git clone --depth 1 --branch wippersnapper https://github.com/brentru/lvgl.git /home/runner/Arduino/libraries/lvgl
# git clone --depth 1 --branch development https://github.com/brentru/Adafruit_LvGL_Glue.git /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_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@v4
# 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@v4
# 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: List all files in Adafruit_LittlevGL_Glue_Library folder
# run: |
# ls /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library
# - name: Copy lv_conf.h file in Adafruit_LittlevGL_Glue_Library to the arduino library folder
# run: |
# cp /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library/lv_conf.h /home/runner/Arduino/libraries
# - 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@v4
# 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:
[
# "qtpy_esp32",
"sparklemotionmini_esp32"
# "feather_esp32_v2",
# "itsybitsy_esp32"
]
include:
- offset: "0x1000"
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- 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@v4
with:
repository: tyeth/ci-arduino
ref: sparkle-motion-wippersnapper
path: ci
- name: Checkout Board Definitions
uses: actions/checkout@v4
with:
repository: adafruit/Wippersnapper_Boards
ref: sparkle_motion_mini
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/milesburton/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@v4
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@v4
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@v4
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@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# 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/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
# git clone --quiet https://github.com/PaulStoffregen/OneWire.git /home/runner/Arduino/libraries/OneWire
# 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@v4
# 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@v4
# 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@v4
# 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@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# with:
# repository: tyeth/ci-arduino
# ref: sparkle-motion-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/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@v4
# 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@v4
# 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@v4
# 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@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# 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/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
# git clone --quiet https://github.com/PaulStoffregen/OneWire.git /home/runner/Arduino/libraries/OneWire
# - 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@v4
# 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@v4
# 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@v4
# 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@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# 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/milesburton/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
# git clone --depth 1 --branch wippersnapper https://github.com/brentru/lvgl.git /home/runner/Arduino/libraries/lvgl
# git clone --depth 1 --branch development https://github.com/brentru/Adafruit_LvGL_Glue.git /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_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@v4
# 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@v4
# 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: List all files in Adafruit_LittlevGL_Glue_Library folder
# run: |
# ls /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library
# - name: Copy lv_conf.h file in Adafruit_LittlevGL_Glue_Library to the arduino library folder
# run: |
# cp /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library/lv_conf.h /home/runner/Arduino/libraries
# - 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@v4
# 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@v5
# with:
# python-version: "3.x"
# - uses: actions/checkout@v4
# - 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@v4
# with:
# repository: adafruit/ci-arduino
# ref: ci-wippersnapper
# path: ci
# - name: Checkout Board Definitions
# uses: actions/checkout@v4
# with:
# repository: adafruit/Wippersnapper_Boards
# 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/milesburton/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@v4
# 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@v4
# 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@v4
# with:
# name: build-files-dev-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}
# path: |
# wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.zip
merge-job-build-files:
name: Merge Artifacts for build-files
runs-on: ubuntu-latest
needs: [
# build-esp32sx-esptool,
# build-esp32sx,
build-esp32
# build-esp8266,
# build-samd,
# build-rp2040
]
steps:
- name: Merge Artifacts from Builds
uses: actions/upload-artifact/merge@v4
with:
name: build-files
pattern: build-files-!(dev)-*
delete-merged: true
# merge-job2:
# name: Merge Artifacts for build-files-dev
# runs-on: ubuntu-latest
# needs: [build-esp32sx-dev, build-esp32-dev]
# steps:
# - name: Merge Artifacts from Dev Builds
# uses: actions/upload-artifact/merge@v4
# with:
# name: build-files-dev
# pattern: build-files-dev-*
# delete-merged: true
clang_and_doxy:
name: 🔎Clang & Doxygen
runs-on: ubuntu-latest
needs:
[
# build-samd,
build-esp32
# build-esp32sx,
# build-esp8266,
# build-rp2040,
]
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
ref: ci-wippersnapper
path: ci
- name: pre-install
run: bash ci/actions_install.sh
- name: clang
run: python3 ci/run-clang-format.py -r -e "ci/*" -e "bin/*" -e src/nanopb -e src/wippersnapper -e src/pb.h -e src/provisioning/tinyusb src/
- name: doxygen
env:
GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }}
PRETTYNAME: "Adafruit.io WipperSnapper Library"
run: bash ci/doxy_gen_and_deploy.sh