chore: wire uv, update GitHub workflows, and document EastMesh releases
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user