action.yml 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
  24. # Recommended EastMesh tag format:
  25. # room-server-eastmesh-v1.0.1
  26. # with OFFICIAL_MESHCORE_VERSION=v1.2.3 configured as a GitHub variable.
  27. #
  28. # This exports:
  29. # FIRMWARE_VERSION=v1.2.3
  30. # EASTMESH_VERSION=v1.0.1
  31. # RELEASE_VERSION=v1.2.3-eastmesh-v1.0.1
  32. #
  33. # Legacy tags like "room-server-v1.2.3" and
  34. # "room-server-v1.2.3-eastmesh-v1.0.1" remain supported.
  35. - name: Extract Version Info
  36. shell: bash
  37. run: |
  38. STATIC_OFFICIAL_VERSION="${OFFICIAL_MESHCORE_VERSION:-}"
  39. if [[ "$GITHUB_REF" != refs/tags/* ]]; then
  40. echo "GIT_TAG_NAME=" >> "$GITHUB_ENV"
  41. echo "GIT_TAG_VERSION=" >> "$GITHUB_ENV"
  42. echo "OFFICIAL_MESHCORE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  43. echo "EASTMESH_VERSION=" >> "$GITHUB_ENV"
  44. echo "FIRMWARE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  45. echo "RELEASE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  46. exit 0
  47. fi
  48. GIT_TAG_NAME="${GITHUB_REF#refs/tags/}"
  49. EASTMESH_VERSION=""
  50. FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
  51. if [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
  52. if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
  53. echo "OFFICIAL_MESHCORE_VERSION must be set for EastMesh release tags" >&2
  54. exit 1
  55. fi
  56. EASTMESH_VERSION="${BASH_REMATCH[2]}"
  57. elif [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-(.+)-eastmesh-(v[[:alnum:]._-]+)$ ]]; then
  58. FIRMWARE_VERSION="${BASH_REMATCH[2]}"
  59. EASTMESH_VERSION="${BASH_REMATCH[3]}"
  60. elif [[ "$GIT_TAG_NAME" =~ ^(companion|repeater|room-server)-(.+)$ ]]; then
  61. FIRMWARE_VERSION="${BASH_REMATCH[2]}"
  62. else
  63. echo "Unsupported release tag format: $GIT_TAG_NAME" >&2
  64. exit 1
  65. fi
  66. if [[ -n "$STATIC_OFFICIAL_VERSION" && "$FIRMWARE_VERSION" != "$STATIC_OFFICIAL_VERSION" ]]; then
  67. echo "Tag official version '$FIRMWARE_VERSION' does not match OFFICIAL_MESHCORE_VERSION '$STATIC_OFFICIAL_VERSION'" >&2
  68. exit 1
  69. fi
  70. RELEASE_VERSION="$FIRMWARE_VERSION"
  71. if [[ -n "$EASTMESH_VERSION" ]]; then
  72. RELEASE_VERSION="${RELEASE_VERSION}-eastmesh-${EASTMESH_VERSION}"
  73. fi
  74. echo "GIT_TAG_NAME=$GIT_TAG_NAME" >> "$GITHUB_ENV"
  75. echo "GIT_TAG_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
  76. echo "OFFICIAL_MESHCORE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
  77. echo "EASTMESH_VERSION=$EASTMESH_VERSION" >> "$GITHUB_ENV"
  78. echo "FIRMWARE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
  79. echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"