bump download-artifact version to 4 #2
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
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2025 | |
# | |
# SPDX-License-Identifier: MIT | |
name: WipperSnapper Release Workflow for "Offline Mode" Alpha Feature | |
on: | |
push: | |
branches: | |
- test-offline-release | |
secrets: | |
GH_REPO_TOKEN: | |
required: true | |
jobs: | |
clang: | |
name: 🔎 Clang | |
runs-on: ubuntu-latest | |
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/protos -e src/pb.h -e src/provisioning/tinyusb src/ | |
test-offline-mode: | |
name: 🧪 Test Offline Mode | |
runs-on: ubuntu-latest | |
needs: clang | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.13' | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r tests/requirements.txt | |
- name: Install Wokwi CI Server | |
uses: wokwi/wokwi-ci-server-action@v1 | |
- name: Install Wokwi CLI | |
run: curl -L https://wokwi.com/ci/install.sh | sh | |
- name: Install PIO Libraries for esp32dev target | |
run: pio pkg install --environment=esp32dev | |
- name: Build PlatformIO Project | |
run: platformio run --environment esp32dev | |
- name: Move new build file to test folder | |
run: cp .pio/build/esp32dev/firmware.elf tests/bin/offline/firmware.elf | |
- name: Run Wokwi Tests | |
run: pytest tests/test_offline.py --junitxml=report.xml -v | |
env: | |
WOKWI_CLI_TOKEN: ${{ secrets.WOKWI_CLI_TOKEN }} | |
- name: Publish Wokwi Test Results | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
if: always() | |
with: | |
files: | | |
/home/runner/work/Adafruit_Wippersnapper_Arduino/Adafruit_Wippersnapper_Arduino/report.xml | |
build-esp32sx: | |
name: 🏗️ ESP32-Sx | |
runs-on: ubuntu-latest | |
needs: [clang, test-offline-mode] | |
strategy: | |
fail-fast: false | |
matrix: | |
arduino-platform: | |
[ | |
"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-rp2040: | |
name: 🏗️ RP2040, RP2350 | |
runs-on: ubuntu-latest | |
needs: [clang, test-offline-mode] | |
strategy: | |
fail-fast: false | |
matrix: | |
arduino-platform: ["pico_rp2040_tinyusb", "pico_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: 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/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_offline.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 | |
merge-job-build-files: | |
name: Merge Artifacts for build-files | |
runs-on: ubuntu-latest | |
needs: [build-esp32sx, 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 | |
release-wippersnapper: | |
name: 🚀 Upload Release Files | |
runs-on: ubuntu-latest | |
needs: merge-job-build-files | |
steps: | |
- name: Download build artifacts from build-platform steps | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
- name: List Files | |
run: ls | |
- name: Upload Assets to the GitHub Release | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
files: | | |
wippersnapper.*.uf2 | |
wippersnapper.*.bin | |
wippersnapper.*.zip |