feat: add MQTT repeater support, web config panel, and EastMesh-specific firmware workflows

This commit is contained in:
Jared Dohrman
2026-04-09 15:00:53 +10:00
parent 2ab5f5128f
commit 98fe78a379
27 changed files with 3412 additions and 103 deletions
@@ -26,17 +26,15 @@ runs:
uv venv --allow-existing --seed
echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
# Recommended EastMesh tag format:
# room-server-eastmesh-v1.0.1
# Active release tag formats:
# companion-wifi-v1.2.3
# repeater-mqtt-eastmesh-v1.0.1
# with OFFICIAL_MESHCORE_VERSION=v1.2.3 configured as a GitHub variable.
#
# This exports:
# FIRMWARE_VERSION=v1.2.3
# EASTMESH_VERSION=v1.0.1
# RELEASE_VERSION=v1.2.3-eastmesh-v1.0.1
#
# Legacy tags like "room-server-v1.2.3" and
# "room-server-v1.2.3-eastmesh-v1.0.1" remain supported.
# companion-wifi-v1.2.3 -> FIRMWARE_VERSION=v1.2.3, RELEASE_VERSION=v1.2.3
# repeater-mqtt-eastmesh-v1.0.1 -> FIRMWARE_VERSION=v1.2.3, EASTMESH_VERSION=v1.0.1,
# RELEASE_VERSION=v1.2.3-eastmesh-v1.0.1
- name: Extract Version Info
shell: bash
run: |
@@ -56,17 +54,14 @@ runs:
EASTMESH_VERSION=""
FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
if [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
if [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
echo "OFFICIAL_MESHCORE_VERSION must be set for EastMesh release tags" >&2
exit 1
fi
EASTMESH_VERSION="${BASH_REMATCH[2]}"
elif [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-(.+)-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
FIRMWARE_VERSION="${BASH_REMATCH[2]}"
EASTMESH_VERSION="${BASH_REMATCH[3]}"
elif [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-(.+)$ ]]; then
FIRMWARE_VERSION="${BASH_REMATCH[2]}"
EASTMESH_VERSION="${BASH_REMATCH[1]}"
elif [[ "$GIT_TAG_NAME" =~ ^companion-wifi-(v[[:alnum:]._-]+)$ ]]; then
FIRMWARE_VERSION="${BASH_REMATCH[1]}"
else
echo "Unsupported release tag format: $GIT_TAG_NAME" >&2
exit 1
@@ -1,4 +1,4 @@
name: Build Companion Firmwares
name: Build Companion WiFi Firmwares
permissions:
contents: write
@@ -7,7 +7,7 @@ on:
workflow_dispatch:
push:
tags:
- 'companion-*'
- 'companion-wifi-v*'
jobs:
@@ -24,19 +24,19 @@ jobs:
uses: ./.github/actions/setup-build-environment
- name: Build Firmwares
run: /usr/bin/env bash build.sh build-companion-firmwares
run: /usr/bin/env bash build.sh build-companion-wifi-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v7
with:
name: companion-firmwares
name: companion-wifi-firmwares
path: out
- name: Create Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Companion Firmware ${{ env.RELEASE_VERSION }}
name: Companion WiFi Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
@@ -1,42 +0,0 @@
name: Build Repeater Firmwares
permissions:
contents: write
on:
workflow_dispatch:
push:
tags:
- 'repeater-*'
jobs:
build:
runs-on: ubuntu-latest
env:
OFFICIAL_MESHCORE_VERSION: ${{ vars.OFFICIAL_MESHCORE_VERSION }}
steps:
- name: Clone Repo
uses: actions/checkout@v6
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment
- name: Build Firmwares
run: /usr/bin/env bash build.sh build-repeater-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v7
with:
name: repeater-firmwares
path: out
- name: Create Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Repeater Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
@@ -1,4 +1,4 @@
name: Build Room Server Firmwares
name: Build Repeater MQTT Firmwares
permissions:
contents: write
@@ -7,7 +7,7 @@ on:
workflow_dispatch:
push:
tags:
- 'room-server-*'
- 'repeater-mqtt-eastmesh-*'
jobs:
@@ -24,19 +24,19 @@ jobs:
uses: ./.github/actions/setup-build-environment
- name: Build Firmwares
run: /usr/bin/env bash build.sh build-room-server-firmwares
run: /usr/bin/env bash build.sh build-repeater-mqtt-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v7
with:
name: room-server-firmwares
name: repeater-mqtt-firmwares
path: out
- name: Create Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Room Server Firmware ${{ env.RELEASE_VERSION }}
name: Repeater MQTT Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*