mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-10-09 03:06:39 +00:00
- Screen PIN (Settings > Display & power > Security): 4-8 digits in NVS, keypad on the lock card after every wake and on boot, 5 misses -> 30 s pause - Live map tiles: missing tiles at the current zoom are fetched over the saved WiFi, written to the card and drawn; WiFi drops 30 s after leaving the map; "Live tiles" switch in Map tools - Firmware update (Settings > System): checks the fork's latest release, streams the -ota.bin into the spare app slot over TLS verified with the Arduino 3.x CA bundle, checks image magic/chip id, restarts - Release workflow publishes *_solo_lvgl envs (merged image + -ota.bin) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
119 lines
3.8 KiB
YAML
119 lines
3.8 KiB
YAML
name: Build Solo Firmwares
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
env:
|
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
|
|
jobs:
|
|
|
|
get-solo-envs:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
envs: ${{ steps.list-envs.outputs.envs }}
|
|
steps:
|
|
|
|
- name: Clone Repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: List solo envs
|
|
id: list-envs
|
|
run: |
|
|
# *_solo_dual: the OLED / e-ink boards; *_solo_lvgl: the LVGL touch UI (Wio Tracker L2).
|
|
envs=$(grep -rh '^\[env:' solo/ \
|
|
| sed 's/\[env://;s/\]//' \
|
|
| grep -E '_solo_dual$|_solo_lvgl$' \
|
|
| jq -R -s -c 'split("\n") | map(select(length > 0))')
|
|
echo "envs=$envs" >> $GITHUB_OUTPUT
|
|
|
|
build:
|
|
needs: get-solo-envs
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
env: ${{ fromJson(needs.get-solo-envs.outputs.envs) }}
|
|
steps:
|
|
|
|
- name: Clone Repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Build Environment
|
|
uses: ./.github/actions/setup-build-environment
|
|
|
|
- name: Resolve build version
|
|
run: |
|
|
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
|
|
echo "BUILD_VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
|
|
else
|
|
echo "BUILD_VERSION=dev-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Build Firmware
|
|
env:
|
|
FIRMWARE_VERSION: ${{ env.BUILD_VERSION }}
|
|
run: /usr/bin/env bash build.sh build-firmware ${{ matrix.env }}
|
|
|
|
- name: Rename firmware
|
|
run: |
|
|
DEVICE_NAME=$(echo "${{ matrix.env }}" | sed 's/_solo_dual$//;s/_solo_lvgl$//;s/_companion$//' | tr '_' '-')
|
|
mv out/*.uf2 "out/solo-${{ env.BUILD_VERSION }}-${DEVICE_NAME}.uf2" 2>/dev/null || true
|
|
# nRF52 DFU package (adafruit-nrfutil) — used for OTA / BLE-DFU updates.
|
|
mv out/*.zip "out/solo-${{ env.BUILD_VERSION }}-${DEVICE_NAME}-ota.zip" 2>/dev/null || true
|
|
# ESP32 boards produce .bin instead of .uf2. Only the merged image
|
|
# (bootloader + partitions + app, flashed at 0x0) is published: build.sh also
|
|
# writes an app-only .bin, but that one needs offset 0x10000 and a bootloader
|
|
# already on the chip, so shipping it next to the merged image would only
|
|
# invite bricked-looking flashes. Anyone who wants it can build it locally.
|
|
mv out/${{ matrix.env }}-*-merged.bin "out/solo-${{ env.BUILD_VERSION }}-${DEVICE_NAME}-merged.bin" 2>/dev/null || true
|
|
# Exception: boards that update themselves over WiFi (Settings > Firmware
|
|
# update, ui-lvgl/OtaScreen.h) fetch the app-only image, named -ota.bin
|
|
# so it isn't mistaken for a fresh-install image.
|
|
case "${{ matrix.env }}" in
|
|
*_solo_lvgl)
|
|
for f in out/${{ matrix.env }}-*.bin; do
|
|
if [ -e "$f" ]; then mv "$f" "out/solo-${{ env.BUILD_VERSION }}-${DEVICE_NAME}-ota.bin"; fi
|
|
done ;;
|
|
esac
|
|
rm -f out/${{ matrix.env }}-*.bin
|
|
|
|
- name: Upload Firmware
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: solo-${{ matrix.env }}-firmware
|
|
path: out
|
|
|
|
release:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
steps:
|
|
|
|
- name: Extract Version from Git Tag
|
|
run: echo "GIT_TAG_VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
|
|
|
|
- name: Download all solo firmwares
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
pattern: solo-*-firmware
|
|
merge-multiple: true
|
|
path: out
|
|
|
|
- name: Create Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
name: Solo ${{ env.GIT_TAG_VERSION }}
|
|
body: ""
|
|
draft: true
|
|
files: |
|
|
out/*.uf2
|
|
out/*.zip
|
|
out/*-merged.bin
|
|
out/*-ota.bin
|