- добавлен ручной workflow Gitea Actions (.gitea/workflows/build-mqtt-firmwares.yml): сборка MQTT-прошивок на сервере и публикация релиза - добавлен posadmesh-tools/publish-gitea-release.sh для выгрузки собранных файлов в релиз Gitea (идемпотентно, фильтр по треку) - README: происхождение проекта переписано (форк EastMesh, доработка энтузиастов из Сергиева Посада, ориентация на meshcoretel.ru), добавлены раздел «Отличия от upstream MeshCore» и журнал «Изменения в проекте» - убраны упоминания Австралии, ссылки на eastmesh.au и региональные материалы; руководство по прошивке переведено на файлы релизов и esptool.py - posadmesh-build.sh: вывод PlatformIO очищается от \r — на Windows групповые команды сборки не находили ни одной цели; companion-команды удалены, добавлены build-mqtt-firmwares и list-mqtt - release-notes.yml: треки repeater-mqtt*, запись 2026.10.0 дополнена удалением companion и исправлением сборки, companion-wifi помечен как снятый с выпуска - AGENTS.md: правило дописывать изменения в README - .gitignore: .pio-home
118 lines
4.7 KiB
YAML
118 lines
4.7 KiB
YAML
name: Setup Build Environment
|
|
description: Setup Build Environment
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Restore uv Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.cache/uv
|
|
.venv
|
|
key: ${{ runner.os }}-py313-uv-${{ hashFiles('uv.lock', 'pyproject.toml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-py313-uv-
|
|
|
|
- name: Restore PlatformIO Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.platformio/.cache
|
|
~/.platformio/packages
|
|
~/.platformio/platforms
|
|
~/.platformio/lib
|
|
key: ${{ runner.os }}-pio-${{ hashFiles('platformio.ini', 'variants/**/platformio.ini') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pio-
|
|
|
|
- name: Install Python
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: "3.13"
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v8.0.0
|
|
|
|
- name: Sync Python Tooling
|
|
shell: bash
|
|
run: |
|
|
uv sync --locked --no-group docs
|
|
uv venv --allow-existing --seed
|
|
echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
|
|
|
|
# Active release tag formats:
|
|
# repeater-bridge-espnow-v1.15.0
|
|
# repeater-mqtt-espnow-v2026.5.1
|
|
# repeater-mqtt-bridge-v2026.7.0
|
|
# repeater-mqtt-v2026.5.1
|
|
# with OFFICIAL_MESHCORE_VERSION=v1.15.0 configured as a GitHub variable.
|
|
#
|
|
# This exports:
|
|
# repeater-bridge-espnow-v1.15.0 -> FIRMWARE_VERSION=v1.15.0, RELEASE_VERSION=v1.15.0
|
|
# repeater-mqtt-espnow-v2026.5.1 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.5.1,
|
|
# RELEASE_VERSION=v1.15.0-posadmesh-v2026.5.1
|
|
# repeater-mqtt-bridge-v2026.7.0 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.7.0,
|
|
# RELEASE_VERSION=v1.15.0-posadmesh-v2026.7.0
|
|
# repeater-mqtt-v2026.5.1 -> FIRMWARE_VERSION=v1.15.0, POSADMESH_VERSION=v2026.5.1,
|
|
# RELEASE_VERSION=v1.15.0-posadmesh-v2026.5.1
|
|
- name: Extract Version Info
|
|
shell: bash
|
|
run: |
|
|
STATIC_OFFICIAL_VERSION="${OFFICIAL_MESHCORE_VERSION:-}"
|
|
|
|
if [[ "$GITHUB_REF" != refs/tags/* ]]; then
|
|
echo "GIT_TAG_NAME=" >> "$GITHUB_ENV"
|
|
echo "GIT_TAG_VERSION=" >> "$GITHUB_ENV"
|
|
echo "OFFICIAL_MESHCORE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
|
|
echo "POSADMESH_VERSION=" >> "$GITHUB_ENV"
|
|
echo "FIRMWARE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
|
|
echo "RELEASE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
|
|
exit 0
|
|
fi
|
|
|
|
GIT_TAG_NAME="${GITHUB_REF#refs/tags/}"
|
|
POSADMESH_VERSION=""
|
|
FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
|
|
|
|
if [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-(v[[:alnum:]._-]+)$ ]]; then
|
|
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
|
|
echo "OFFICIAL_MESHCORE_VERSION must be set for PosadMesh release tags" >&2
|
|
exit 1
|
|
fi
|
|
POSADMESH_VERSION="${BASH_REMATCH[1]}"
|
|
elif [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-espnow-(v[[:alnum:]._-]+)$ ]]; then
|
|
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
|
|
echo "OFFICIAL_MESHCORE_VERSION must be set for PosadMesh release tags" >&2
|
|
exit 1
|
|
fi
|
|
POSADMESH_VERSION="${BASH_REMATCH[1]}"
|
|
elif [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-bridge-(v[[:alnum:]._-]+)$ ]]; then
|
|
if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
|
|
echo "OFFICIAL_MESHCORE_VERSION must be set for PosadMesh release tags" >&2
|
|
exit 1
|
|
fi
|
|
POSADMESH_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
|
|
fi
|
|
|
|
if [[ -n "$STATIC_OFFICIAL_VERSION" && "$FIRMWARE_VERSION" != "$STATIC_OFFICIAL_VERSION" ]]; then
|
|
echo "Tag official version '$FIRMWARE_VERSION' does not match OFFICIAL_MESHCORE_VERSION '$STATIC_OFFICIAL_VERSION'" >&2
|
|
exit 1
|
|
fi
|
|
|
|
RELEASE_VERSION="$FIRMWARE_VERSION"
|
|
if [[ -n "$POSADMESH_VERSION" ]]; then
|
|
RELEASE_VERSION="${RELEASE_VERSION}-posadmesh-${POSADMESH_VERSION}"
|
|
fi
|
|
|
|
echo "GIT_TAG_NAME=$GIT_TAG_NAME" >> "$GITHUB_ENV"
|
|
echo "GIT_TAG_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
|
|
echo "OFFICIAL_MESHCORE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
|
|
echo "POSADMESH_VERSION=$POSADMESH_VERSION" >> "$GITHUB_ENV"
|
|
echo "FIRMWARE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
|
|
echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
|