chore: wire uv, update GitHub workflows, and document EastMesh releases

Этот коммит содержится в:
Jared Dohrman
2026-04-09 10:15:58 +10:00
родитель be780491ac
Коммит 009e281181
14 изменённых файлов: 1001 добавлений и 187 удалений
+70 -10
Просмотреть файл
@@ -1,29 +1,89 @@
name: Setup Build Environment
description: Setup Build Environment
runs:
using: "composite"
steps:
- name: Init Cache
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/pip
~/.cache/uv
~/.platformio/.cache
key: ${{ runner.os }}-pio
- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: "3.11"
- name: Install PlatformIO
- name: Install uv
uses: astral-sh/setup-uv@v8.0.0
- name: Sync Python Tooling
shell: bash
run: |
pip install --upgrade platformio
uv sync --locked --no-group docs
echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
# a git tag of "room-server-v1.2.3" should set "v1.2.3" as GIT_TAG_VERSION
- name: Extract Version from Git Tag
# Recommended EastMesh tag format:
# room-server-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.
- 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 "EASTMESH_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/}"
echo "GIT_TAG_VERSION=${GIT_TAG_NAME##*-}" >> $GITHUB_ENV
EASTMESH_VERSION=""
FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
if [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-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]}"
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 "$EASTMESH_VERSION" ]]; then
RELEASE_VERSION="${RELEASE_VERSION}-eastmesh-${EASTMESH_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 "EASTMESH_VERSION=$EASTMESH_VERSION" >> "$GITHUB_ENV"
echo "FIRMWARE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
+6 -6
Просмотреть файл
@@ -13,21 +13,21 @@ jobs:
build:
runs-on: ubuntu-latest
env:
OFFICIAL_MESHCORE_VERSION: ${{ vars.OFFICIAL_MESHCORE_VERSION }}
steps:
- name: Clone Repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment
- name: Build Firmwares
env:
FIRMWARE_VERSION: ${{ env.GIT_TAG_VERSION }}
run: /usr/bin/env bash build.sh build-companion-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: companion-firmwares
path: out
@@ -36,7 +36,7 @@ jobs:
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Companion Firmware ${{ env.GIT_TAG_VERSION }}
name: Companion Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
files: out/*
+6 -6
Просмотреть файл
@@ -13,21 +13,21 @@ jobs:
build:
runs-on: ubuntu-latest
env:
OFFICIAL_MESHCORE_VERSION: ${{ vars.OFFICIAL_MESHCORE_VERSION }}
steps:
- name: Clone Repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment
- name: Build Firmwares
env:
FIRMWARE_VERSION: ${{ env.GIT_TAG_VERSION }}
run: /usr/bin/env bash build.sh build-repeater-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: repeater-firmwares
path: out
@@ -36,7 +36,7 @@ jobs:
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Repeater Firmware ${{ env.GIT_TAG_VERSION }}
name: Repeater Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
files: out/*
+6 -6
Просмотреть файл
@@ -13,21 +13,21 @@ jobs:
build:
runs-on: ubuntu-latest
env:
OFFICIAL_MESHCORE_VERSION: ${{ vars.OFFICIAL_MESHCORE_VERSION }}
steps:
- name: Clone Repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment
- name: Build Firmwares
env:
FIRMWARE_VERSION: ${{ env.GIT_TAG_VERSION }}
run: /usr/bin/env bash build.sh build-room-server-firmwares
- name: Upload Workflow Artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: room-server-firmwares
path: out
@@ -36,7 +36,7 @@ jobs:
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: Room Server Firmware ${{ env.GIT_TAG_VERSION }}
name: Room Server Firmware ${{ env.RELEASE_VERSION }}
body: ""
draft: true
files: out/*
files: out/*
+15 -9
Просмотреть файл
@@ -13,24 +13,30 @@ jobs:
github-pages:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
ruby-version: 3.x
python-version: '3.11'
- name: Install uv
uses: astral-sh/setup-uv@v8.0.0
- name: Sync Docs Tooling
run: uv sync --locked --group docs
- name: Build
run: |
pip install mkdocs-material
mkdocs build
run: uv run --group docs mkdocs build
- name: Write CNAME
if: ${{ vars.PAGES_CNAME != '' }}
run: printf '%s\n' "${{ vars.PAGES_CNAME }}" > site/CNAME
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
cname: docs.meshcore.nz
publish_dir: ./site
publish_branch: 'gh-pages'
+21 -13
Просмотреть файл
@@ -2,25 +2,27 @@ name: PR Build Check
on:
pull_request:
branches: [main, dev]
branches: [main, develop]
paths:
- 'src/**'
- 'examples/**'
- 'variants/**'
- 'platformio.ini'
- '.github/workflows/pr-build-check.yml'
- "src/**"
- "examples/**"
- "variants/**"
- "platformio.ini"
- ".github/workflows/pr-build-check.yml"
push:
branches: [main, dev]
branches: [main, develop]
paths:
- 'src/**'
- 'examples/**'
- 'variants/**'
- 'platformio.ini'
- '.github/workflows/pr-build-check.yml'
- "src/**"
- "examples/**"
- "variants/**"
- "platformio.ini"
- ".github/workflows/pr-build-check.yml"
jobs:
build:
runs-on: ubuntu-latest
env:
OFFICIAL_MESHCORE_VERSION: ${{ vars.OFFICIAL_MESHCORE_VERSION }}
strategy:
fail-fast: false
matrix:
@@ -29,6 +31,12 @@ jobs:
- Heltec_v3_companion_radio_ble
- Heltec_v3_repeater
- Heltec_v3_room_server
- heltec_v4_companion_radio_ble
- heltec_v4_repeater
- heltec_v4_room_server
- T_Beam_S3_Supreme_SX1262_companion_radio_ble
- T_Beam_S3_Supreme_SX1262_repeater
- T_Beam_S3_Supreme_SX1262_room_server
# nRF52
- RAK_4631_companion_radio_ble
- RAK_4631_repeater
@@ -42,7 +50,7 @@ jobs:
steps:
- name: Clone Repo
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Build Environment
uses: ./.github/actions/setup-build-environment