action.yml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. name: Setup Build Environment
  2. description: Setup Build Environment
  3. runs:
  4. using: "composite"
  5. steps:
  6. - name: Restore uv Cache
  7. uses: actions/cache@v5
  8. with:
  9. path: |
  10. ~/.cache/uv
  11. .venv
  12. key: ${{ runner.os }}-py311-uv-${{ hashFiles('uv.lock', 'pyproject.toml') }}
  13. restore-keys: |
  14. ${{ runner.os }}-py311-uv-
  15. - name: Restore PlatformIO Cache
  16. uses: actions/cache@v5
  17. with:
  18. path: |
  19. ~/.platformio/.cache
  20. ~/.platformio/packages
  21. ~/.platformio/platforms
  22. ~/.platformio/lib
  23. key: ${{ runner.os }}-pio-${{ hashFiles('platformio.ini', 'variants/**/platformio.ini') }}
  24. restore-keys: |
  25. ${{ runner.os }}-pio-
  26. - name: Install Python
  27. uses: actions/setup-python@v6
  28. with:
  29. python-version: "3.11"
  30. - name: Install uv
  31. uses: astral-sh/setup-uv@v8.0.0
  32. - name: Sync Python Tooling
  33. shell: bash
  34. run: |
  35. uv sync --locked --no-group docs
  36. uv venv --allow-existing --seed
  37. echo "$GITHUB_WORKSPACE/.venv/bin" >> "$GITHUB_PATH"
  38. # Active release tag formats:
  39. # companion-wifi-v1.2.3
  40. # repeater-mqtt-eastmesh-v1.0.1
  41. # with OFFICIAL_MESHCORE_VERSION=v1.2.3 configured as a GitHub variable.
  42. #
  43. # This exports:
  44. # companion-wifi-v1.2.3 -> FIRMWARE_VERSION=v1.2.3, RELEASE_VERSION=v1.2.3
  45. # repeater-mqtt-eastmesh-v1.0.1 -> FIRMWARE_VERSION=v1.2.3, EASTMESH_VERSION=v1.0.1,
  46. # RELEASE_VERSION=v1.2.3-eastmesh-v1.0.1
  47. - name: Extract Version Info
  48. shell: bash
  49. run: |
  50. STATIC_OFFICIAL_VERSION="${OFFICIAL_MESHCORE_VERSION:-}"
  51. echo "DISABLE_DEBUG=1" >> "$GITHUB_ENV"
  52. if [[ "$GITHUB_REF" != refs/tags/* ]]; then
  53. echo "GIT_TAG_NAME=" >> "$GITHUB_ENV"
  54. echo "GIT_TAG_VERSION=" >> "$GITHUB_ENV"
  55. echo "OFFICIAL_MESHCORE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  56. echo "MESHCORETEL_VERSION=" >> "$GITHUB_ENV"
  57. echo "FIRMWARE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  58. echo "RELEASE_VERSION=$STATIC_OFFICIAL_VERSION" >> "$GITHUB_ENV"
  59. exit 0
  60. fi
  61. GIT_TAG_NAME="${GITHUB_REF#refs/tags/}"
  62. MESHCORETEL_VERSION=""
  63. FIRMWARE_VERSION="$STATIC_OFFICIAL_VERSION"
  64. if [[ "$GIT_TAG_NAME" =~ ^repeater-mqtt-meshcoretel-(v[[:alnum:]._-]+)$ ]]; then
  65. if [[ -z "$STATIC_OFFICIAL_VERSION" ]]; then
  66. echo "OFFICIAL_MESHCORE_VERSION must be set for MeshCoreTel-firmware release tags" >&2
  67. exit 1
  68. fi
  69. MESHCORETEL_VERSION="${BASH_REMATCH[1]}"
  70. elif [[ "$GIT_TAG_NAME" =~ ^companion-wifi-(v[[:alnum:]._-]+)$ ]]; then
  71. FIRMWARE_VERSION="${BASH_REMATCH[1]}"
  72. else
  73. echo "Unsupported release tag format: $GIT_TAG_NAME" >&2
  74. exit 1
  75. fi
  76. if [[ -n "$STATIC_OFFICIAL_VERSION" && "$FIRMWARE_VERSION" != "$STATIC_OFFICIAL_VERSION" ]]; then
  77. echo "Tag official version '$FIRMWARE_VERSION' does not match OFFICIAL_MESHCORE_VERSION '$STATIC_OFFICIAL_VERSION'" >&2
  78. exit 1
  79. fi
  80. RELEASE_VERSION="$FIRMWARE_VERSION"
  81. if [[ -n "$MESHCORETEL_VERSION" ]]; then
  82. RELEASE_VERSION="${RELEASE_VERSION}-vbart-meshcoretel-${MESHCORETEL_VERSION}"
  83. fi
  84. echo "GIT_TAG_NAME=$GIT_TAG_NAME" >> "$GITHUB_ENV"
  85. echo "GIT_TAG_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"
  86. echo "OFFICIAL_MESHCORE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
  87. echo "MESHCORETEL_VERSION=$MESHCORETEL_VERSION" >> "$GITHUB_ENV"
  88. echo "FIRMWARE_VERSION=$FIRMWARE_VERSION" >> "$GITHUB_ENV"
  89. echo "RELEASE_VERSION=$RELEASE_VERSION" >> "$GITHUB_ENV"