Files
MeshCore-Solo/.github/workflows/build-solo-firmwares.yml
Jakub 7a1f19dd6f ci(solo): attach nRF52 OTA DFU zip to release assets
The solo build already copies firmware.zip (the adafruit-nrfutil DFU package
used for OTA / BLE-DFU updates) into out/, so it was present in the Actions
artifact but never in the tagged GitHub Release. Give it a friendly name
(solo-<ver>-<device>-ota.zip) and include out/*.zip in the release files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:54:58 +02:00

100 lines
2.6 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
- 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