feat: add bridge firmware release workflows

This commit is contained in:
Jared Dohrman
2026-05-05 20:50:57 +10:00
parent c42cc03069
commit 21daf79ddf
7 changed files with 101 additions and 5 deletions
@@ -42,11 +42,16 @@ runs:
# Active release tag formats:
# companion-wifi-v1.2.3
# repeater-bridge-espnow-v1.2.3
# repeater-mqtt-bridge-eastmesh-v1.0.1
# repeater-mqtt-eastmesh-v1.0.1
# with OFFICIAL_MESHCORE_VERSION=v1.2.3 configured as a GitHub variable.
#
# This exports:
# companion-wifi-v1.2.3 -> FIRMWARE_VERSION=v1.2.3, RELEASE_VERSION=v1.2.3
# repeater-bridge-espnow-v1.2.3 -> FIRMWARE_VERSION=v1.2.3, RELEASE_VERSION=v1.2.3
# repeater-mqtt-bridge-eastmesh-v1.0.1 -> FIRMWARE_VERSION=v1.2.3, EASTMESH_VERSION=v1.0.1,
# RELEASE_VERSION=v1.2.3-eastmesh-v1.0.1
# 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
@@ -74,8 +79,16 @@ runs:
exit 1
fi
EASTMESH_VERSION="${BASH_REMATCH[1]}"
elif [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-bridge-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[1]}"
elif [[ "$GIT_TAG_NAME" =~ ^companion-wifi-(v[[:alnum:]._-]+)$ ]]; then
FIRMWARE_VERSION="${BASH_REMATCH[1]}"
elif [[ "$GIT_TAG_NAME" =~ ^repeater-bridge-espnow-(v[[:alnum:]._-]+)$ ]]; then
FIRMWARE_VERSION="${BASH_REMATCH[1]}"
else
echo "Unsupported release tag format: $GIT_TAG_NAME" >&2
exit 1
@@ -0,0 +1,42 @@
name: EastMesh Build Repeater ESP-NOW Bridge Firmwares
permissions:
contents: write
on:
workflow_dispatch:
push:
tags:
- 'repeater-bridge-espnow-v*'
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 eastmesh-build.sh build-repeater-bridge-espnow-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v7
with:
name: repeater-bridge-espnow-firmwares
path: out
- name: Create Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Repeater ESP-NOW Bridge Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
@@ -5,6 +5,9 @@ permissions:
on:
workflow_dispatch:
push:
tags:
- 'repeater-mqtt-bridge-eastmesh-*'
jobs:
@@ -29,3 +32,12 @@ jobs:
with:
name: repeater-mqtt-bridge-firmwares
path: out
- name: Create Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Repeater MQTT Bridge Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
+5 -1
View File
@@ -170,14 +170,18 @@ Current tag formats:
```bash
git tag companion-wifi-v1.2.3
git tag repeater-bridge-espnow-v1.2.3
git tag repeater-mqtt-bridge-eastmesh-v1.0.1
git tag repeater-mqtt-eastmesh-v1.0.1
```
Rules:
- `companion-wifi` tags use the upstream MeshCore version directly
- `repeater-bridge-espnow` tags use the upstream MeshCore version directly
- `repeater-mqtt-bridge` tags use the EastMesh release version in the tag
- `repeater-mqtt` tags use the EastMesh release version in the tag
- GitHub Actions variable `OFFICIAL_MESHCORE_VERSION` supplies the upstream base version for repeater MQTT release builds
- GitHub Actions variable `OFFICIAL_MESHCORE_VERSION` supplies the upstream base version for repeater MQTT and repeater MQTT bridge release builds
- if the upstream MeshCore release version changes, update `OFFICIAL_MESHCORE_VERSION` in GitHub before cutting release tags
Typical release flow:
+16 -3
View File
@@ -17,14 +17,20 @@ This value becomes the base `FIRMWARE_VERSION` used by the release workflows.
Push one or more of the following tag formats to trigger the matching firmware release workflow:
- `companion-wifi-v1.2.3`
- `repeater-bridge-espnow-v1.2.3`
- `repeater-mqtt-bridge-eastmesh-v1.0.1`
- `repeater-mqtt-eastmesh-v1.0.1`
Use the upstream MeshCore version in `companion-wifi-v1.2.3`.
Use the upstream MeshCore version in `repeater-bridge-espnow-v1.2.3`.
Use the EastMesh release version in `repeater-mqtt-bridge-eastmesh-v1.0.1`.
Use the EastMesh release version in `repeater-mqtt-eastmesh-v1.0.1`.
Each tag triggers a separate workflow:
- `companion-wifi-v*` builds companion WiFi firmware
- `repeater-bridge-espnow-v*` builds repeater ESP-NOW bridge firmware
- `repeater-mqtt-bridge-eastmesh-*` builds repeater MQTT bridge firmware
- `repeater-mqtt-eastmesh-*` builds repeater MQTT firmware
You can push one, or more tags on the same commit, and they will all build separately.
@@ -34,12 +40,15 @@ You can push one, or more tags on the same commit, and they will all build separ
During the GitHub Actions build:
- `companion-wifi` uses the version in the tag as `FIRMWARE_VERSION`
- `repeater-mqtt` uses `OFFICIAL_MESHCORE_VERSION` as `FIRMWARE_VERSION`
- `repeater-mqtt` uses the EastMesh version from the tag as `EASTMESH_VERSION`
- `repeater-bridge-espnow` uses the version in the tag as `FIRMWARE_VERSION`
- `repeater-mqtt-bridge` uses `OFFICIAL_MESHCORE_VERSION` as `FIRMWARE_VERSION` and the EastMesh version from the tag as `EASTMESH_VERSION`
- `repeater-mqtt` uses `OFFICIAL_MESHCORE_VERSION` as `FIRMWARE_VERSION` and the EastMesh version from the tag as `EASTMESH_VERSION`
The resulting version string depends on the workflow:
- `companion-wifi`: `v1.2.3-<commit>`
- `repeater-bridge-espnow`: `v1.2.3-<commit>`
- `repeater-mqtt-bridge`: `v1.2.3-eastmesh-v1.0.1-<commit>`
- `repeater-mqtt`: `v1.2.3-eastmesh-v1.0.1-<commit>`
Example:
@@ -65,11 +74,15 @@ Example:
```bash
git tag companion-wifi-v1.2.3
git tag repeater-bridge-espnow-v1.2.3
git tag repeater-mqtt-bridge-eastmesh-v1.0.1
git tag repeater-mqtt-eastmesh-v1.0.1
git push origin companion-wifi-v1.2.3 repeater-mqtt-eastmesh-v1.0.1
git push origin companion-wifi-v1.2.3 repeater-bridge-espnow-v1.2.3 repeater-mqtt-bridge-eastmesh-v1.0.1 repeater-mqtt-eastmesh-v1.0.1
```
## Supported Tags
- `companion-wifi-v1.2.3`
- `repeater-bridge-espnow-v1.2.3`
- `repeater-mqtt-bridge-eastmesh-v1.0.1`
- `repeater-mqtt-eastmesh-v1.0.1`
+12
View File
@@ -34,6 +34,7 @@ Commands:
build-companion-firmwares: Build all companion firmwares for all build targets.
build-companion-wifi-firmwares: Build all companion WiFi firmwares for all build targets.
build-repeater-firmwares: Build all repeater firmwares for all build targets.
build-repeater-bridge-espnow-firmwares: Build all repeater ESP-NOW bridge firmwares for all build targets.
build-repeater-mqtt-firmwares: Build all repeater MQTT firmwares for all build targets.
build-repeater-mqtt-bridge-firmwares: Build all repeater MQTT bridge firmwares for all build targets.
build-room-server-firmwares: Build all chat room server firmwares for all build targets.
@@ -54,6 +55,9 @@ $ sh eastmesh-build.sh build-companion-wifi-firmwares
Build all repeater firmwares
$ sh eastmesh-build.sh build-repeater-firmwares
Build all repeater ESP-NOW bridge firmwares
$ sh eastmesh-build.sh build-repeater-bridge-espnow-firmwares
Build all repeater MQTT firmwares
$ sh eastmesh-build.sh build-repeater-mqtt-firmwares
@@ -279,6 +283,12 @@ build_repeater_firmwares() {
}
build_repeater_bridge_espnow_firmwares() {
build_all_firmwares_by_suffix "_repeater_bridge_espnow"
}
build_companion_firmwares() {
# # build specific companion firmwares
@@ -364,6 +374,8 @@ elif [[ $1 == "build-companion-wifi-firmwares" ]]; then
build_companion_wifi_firmwares
elif [[ $1 == "build-repeater-firmwares" ]]; then
build_repeater_firmwares
elif [[ $1 == "build-repeater-bridge-espnow-firmwares" ]]; then
build_repeater_bridge_espnow_firmwares
elif [[ $1 == "build-repeater-mqtt-firmwares" ]]; then
build_repeater_mqtt_firmwares
elif [[ $1 == "build-repeater-mqtt-bridge-firmwares" ]]; then
+1 -1
View File
@@ -4,7 +4,7 @@
#if defined(ESP_PLATFORM)
#include <WiFi.h>
#if !defined(WITH_WEB_PANEL)
#if defined(WITH_MQTT_UPLINK) && !defined(WITH_WEB_PANEL)
#define WITH_WEB_PANEL 1
#endif
#if WITH_WEB_PANEL