Files
shade 26b724c0f0 feat: manual Gitea build workflow, release publishing, README and docs update
- добавлен ручной 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
2026-10-11 17:20:05 +03:00

121 lines
7.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Выпуск прошивок
Репозиторий живёт на <https://git.meshinfo.ru/shade/MeshCore-Posadmesh>. Прошивки собираются локально через [`posadmesh-build.sh`](./posadmesh-build.sh) или на сервере ручным workflow Gitea Actions; теги и релизы создаются в веб-интерфейсе git.meshinfo.ru.
## Сборка на сервере (Gitea Actions)
Ручной workflow [`.gitea/workflows/build-mqtt-firmwares.yml`](./.gitea/workflows/build-mqtt-firmwares.yml) запускается из веб-интерфейса: **Actions → Build MQTT firmwares → Run workflow**.
Параметры запуска:
- `firmware_version` — версия upstream MeshCore для метаданных (например `v1.17.1`);
- `posadmesh_version` — версия релиза PosadMesh (например `v2026.10.0`);
- `group` — что собирать: `all` (все MQTT-таргеты), `uplink`, `espnow`, `bridge` или `single`;
- `target` — имя окружения PlatformIO, если `group=single` (например `heltec_v4_repeater_mqtt`);
- `publish` — `true`, чтобы создать релиз Gitea и загрузить в него файлы (`false` по умолчанию — только артефакты сборки);
- `tag` — тег релиза при `publish=true` (например `repeater-mqtt-v2026.10.0`).
Для публикации в репозитории должен быть задан секрет `GITEA_TOKEN` (personal access token с правом `write:repository`).
Требования к раннеру: Linux с Docker, интернет, `python3` ≥ 3.11, `git`, `curl` и не меньше 20 ГБ свободного места — PlatformIO скачивает тулчейны ESP32 при первой сборке (шаг кэша `~/.platformio` ускоряет последующие запуски). Полная сборка всех MQTT-таргетов идёт долго, поэтому удобнее запускать по группам.
## Ручная выгрузка в релиз
Если прошивки собраны локально (каталог `out/`), файлы можно загрузить в релиз Gitea скриптом:
```bash
GITEA_TOKEN=<token> posadmesh-tools/publish-gitea-release.sh \
repeater-mqtt-v2026.10.0 out "Repeater MQTT v2026.10.0"
```
Скрипт создаёт релиз, если его ещё нет, и повторный запуск не дублирует уже загруженные файлы. Адрес инстанса и репозиторий можно переопределить переменными `GITEA_URL` и `GITEA_REPO`.
Тег удобнее создать заранее на нужном коммите (см. порядок выпуска ниже): тогда релиз привяжется к существующему тегу. Если тега нет, Gitea создаст его сам от HEAD ветки по умолчанию — для релизов этого лучше избегать.
Каждый трек публикуется в свой релиз: соберите группу (`uplink`, `espnow` или `bridge`) и выгрузите её файлы под тегом этого трека. Каталог `out/` очищается в начале каждой сборки, поэтому в релиз попадут файлы только одной группы.
## Версии сборки
- `FIRMWARE_VERSION` — версия upstream MeshCore, на которой основана сборка (например `v1.15.0`)
- `POSADMESH_VERSION` — версия релиза PosadMesh (например `v2026.5.1`)
Обе задаются переменными окружения перед запуском сборки:
```bash
export FIRMWARE_VERSION=v1.15.0
export POSADMESH_VERSION=v2026.5.1
bash posadmesh-build.sh build-firmware heltec_v4_repeater_mqtt
```
## Теги релизов PosadMesh
Один или несколько тегов следующих форматов помечают релиз соответствующего трека:
- `repeater-bridge-espnow-v1.15.0`
- `repeater-mqtt-espnow-v2026.5.1`
- `repeater-mqtt-bridge-v2026.7.0`
- `repeater-mqtt-v2026.5.1`
В `repeater-bridge-espnow-v1.15.0` используется версия upstream MeshCore.
В `repeater-mqtt-espnow-v2026.5.1` используется версия релиза PosadMesh.
В `repeater-mqtt-bridge-v2026.7.0` используется версия релиза PosadMesh.
В `repeater-mqtt-v2026.5.1` используется версия релиза PosadMesh.
Соответствие тегов и треков:
- `repeater-bridge-espnow-v*` — прошивка ESP-NOW-моста репитера
- `repeater-mqtt-espnow-v*` — прошивка MQTT-репитера с ESP-NOW
- `repeater-mqtt-bridge-v*` — прошивка MQTT-репитера с MQTT-мостом
- `repeater-mqtt-v*` — прошивка MQTT-репитера
Сборка выполняется локально для нужного таргета; тегов на одном коммите может быть несколько.
## Итоговая версия прошивки
- `repeater-bridge-espnow` использует версию из тега как `FIRMWARE_VERSION`
- `repeater-mqtt-espnow` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
- `repeater-mqtt-bridge` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
- `repeater-mqtt` использует `FIRMWARE_VERSION` upstream MeshCore, а версию PosadMesh из тега — как `POSADMESH_VERSION`
Итоговая строка версии зависит от трека:
- `repeater-bridge-espnow`: `v1.15.0-<commit>`
- `repeater-mqtt-espnow`: `v1.15.0-posadmesh-v2026.5.1-<commit>`
- `repeater-mqtt-bridge`: `v1.15.0-posadmesh-v2026.7.0-<commit>`
- `repeater-mqtt`: `v1.15.0-posadmesh-v2026.5.1-<commit>`
Пример:
- тег: `repeater-mqtt-v2026.5.1`
- переменные: `FIRMWARE_VERSION=v1.15.0`, `POSADMESH_VERSION=v2026.5.1`
- итоговая версия сборки: `v1.15.0-posadmesh-v2026.5.1-abcdef`
## Типичный порядок выпуска
1. Обновите `release-notes.yml` в ветке `develop` — добавьте записи о релизе, которые должны войти в помечаемый тегом коммит.
2. Откройте и смерджите релизный PR из `develop` в `main`.
3. Соберите нужные прошивки локально с подходящими `FIRMWARE_VERSION` и `POSADMESH_VERSION`.
4. Создайте нужные теги релиза на целевом коммите в `main`.
5. Запушьте теги в git.meshinfo.ru.
6. Создайте релиз в веб-интерфейсе git.meshinfo.ru и приложите собранные файлы из `out/`.
Если `release-notes.yml` должен отражать помеченный тегом релиз прошивки в репозитории, внесите это изменение до PR в `main`, чтобы помечаемый коммит уже содержал соответствующие примечания к релизу.
Пример:
```bash
export FIRMWARE_VERSION=v1.15.0
export POSADMESH_VERSION=v2026.5.1
bash posadmesh-build.sh build-repeater-mqtt-firmwares
git tag repeater-mqtt-v2026.5.1
git push origin repeater-mqtt-v2026.5.1
```
## Поддерживаемые теги
- `repeater-bridge-espnow-v1.15.0`
- `repeater-mqtt-espnow-v2026.5.1`
- `repeater-mqtt-bridge-v2026.7.0`
- `repeater-mqtt-v2026.5.1`