chore: wire uv, update GitHub workflows, and document EastMesh releases
Этот коммит содержится в:
@@ -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"
|
||||
|
||||
@@ -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/*
|
||||
|
||||
@@ -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/*
|
||||
|
||||
@@ -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/*
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
Ссылка в новой задаче
Block a user