action.yml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. name: Setup Build Environment
  2. description: Setup Build Environment
  3. runs:
  4. using: "composite"
  5. steps:
  6. - name: Init Cache
  7. uses: actions/cache@v5
  8. with:
  9. path: |
  10. ~/.cache/uv
  11. ~/.platformio/.cache
  12. key: ${{ runner.os }}-pio
  13. - name: Install Python
  14. uses: actions/setup-python@v6
  15. with:
  16. python-version: "3.11"
  17. - name: Install uv
  18. uses: astral-sh/setup-uv@v8.0.0
  19. - name: Sync Python Tooling
  20. shell: bash
  21. run: |
  22. uv sync --locked --no-group docs
  23. uv pip install --python .venv/bin/python pip setuptools wheel
  24. echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
  25. # Recommended EastMesh tag format:
  26. # room-server-eastmesh-v1.0.1
  27. # with OFFICIAL_MESHCORE_VERSION=v1.2.3 configured as a GitHub variable.
  28. #
  29. # This exports:
  30. # FIRMWARE_VERSION=v1.2.3
  31. # EASTMESH_VERSION=v1.0.1
  32. # RELEASE_VERSION=v1.2.3-eastmesh-v1.0.1
  33. #
  34. # Legacy tags like "room-server-v1.2.3" and
  35. # "room-server-v1.2.3-eastmesh-v1.0.1" remain supported.
  36. - name: Extract Version Info
  37. shell: bash
  38. run: |
  39. STATIC_OFFICIAL_VERSION="${OFFICIAL_MESHCORE_VERSION:-}"
  40. if [[ "$GITHUB_REF" != refs/tags/* ]]; then
  41. echo "GIT_TAG_NAME=" >> "$GITHUB_ENV"
  42. echo "GIT_TAG_VERSION=" >> "$GITHUB_ENV"
  43. echo "OFFICIAL_MESHCORE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  44. echo "EASTMESH_VERSION=" >> "$GITHUB_ENV"
  45. echo "FIRMWARE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  46. echo "RELEASE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  47. exit 0
  48. fi
  49. GIT_TAG_NAME="${GITHUB_REF#refs/tags/}"
  50. EASTMESH_VERSION=""
  51. FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
  52. if [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
  53. if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
  54. echo "OFFICIAL_MESHCORE_VERSION must be set for EastMesh release tags" >&2
  55. exit 1
  56. fi
  57. EASTMESH_VERSION="${BASH_REMATCH[2]}"
  58. elif [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-(.+)-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
  59. FIRMWARE_VERSION="${BASH_REMATCH[2]}"
  60. EASTMESH_VERSION="${BASH_REMATCH[3]}"
  61. elif [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-(.+)$ ]]; then
  62. FIRMWARE_VERSION="${BASH_REMATCH[2]}"
  63. else
  64. echo "Unsupported release tag format: $GIT_TAG_NAME" >&2
  65. exit 1
  66. fi
  67. if [[ -n "$STATIC_OFFICIAL_VERSION" && "$FIRMWARE_VERSION" != "$STATIC_OFFICIAL_VERSION" ]]; then
  68. echo "Tag official version '$FIRMWARE_VERSION' does not match OFFICIAL_MESHCORE_VERSION '$STATIC_OFFICIAL_VERSION'" >&2
  69. exit 1
  70. fi
  71. RELEASE_VERSION="$FIRMWARE_VERSION"
  72. if [[ -n "$EASTMESH_VERSION" ]]; then
  73. RELEASE_VERSION="${RELEASE_VERSION}-eastmesh-${EASTMESH_VERSION}"
  74. fi
  75. echo "GIT_TAG_NAME=$GIT_TAG_NAME" >> "$GITHUB_ENV"
  76. echo "GIT_TAG_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
  77. echo "OFFICIAL_MESHCORE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
  78. echo "EASTMESH_VERSION=$EASTMESH_VERSION" >> "$GITHUB_ENV"
  79. echo "FIRMWARE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
  80. echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"