name: Setup Build Environment description: Setup Build Environment runs: using: "composite" steps: - name: Init Cache uses: actions/cache@v5 with: path: | ~/.cache/uv ~/.platformio/.cache key: ${{ runner.os }}-pio - name: Install Python uses: actions/setup-python@v6 with: python-version: "3.11" - 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" # 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/}" 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"