| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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"
|