mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-07-26 14:58:12 +00:00
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>
100 lines
2.6 KiB
YAML
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
|