mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-08-08 05:06:11 +00:00
The solo release job only attached *.uf2 and *.zip, which covered every solo board back when they were all nRF52. The Heltec V3/V4 .bin images were built and then silently dropped, so tagging a release produced nothing downloadable for those two boards. Releases now carry a single -merged.bin per ESP32 board (bootloader + partition table + app at 0x0). build.sh also writes an app-only .bin, but that one needs offset 0x10000 and a bootloader already on the chip, so it's deleted before upload rather than shipped next to the merged image — flashing it at 0x0 looks exactly like a bricked device. Also adds -D ENABLE_SCREENSHOT to both Heltec solo envs. Every other solo env already had it, so Solo Tools couldn't capture these two boards' displays and the README's "no special build flags required" was untrue for them. Both envs rebuilt clean (V3: RAM 58.8%, Flash 43.2%). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
108 lines
3.2 KiB
YAML
108 lines
3.2 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_dual envs
|
|
id: list-envs
|
|
run: |
|
|
envs=$(grep -rh '^\[env:' platformio.ini variants/ \
|
|
| sed 's/\[env://;s/\]//' \
|
|
| grep '_solo_dual$' \
|
|
| 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/_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
|
|
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
|