Pre-release Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU #98
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Pre-release Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU | |
| on: | |
| workflow_dispatch: # Manual trigger for testing | |
| repository_dispatch: # Optional external trigger | |
| types: [meshtastic-prerelease] | |
| schedule: | |
| - cron: "0 3 * * *" # Run daily to check for new prereleases | |
| permissions: | |
| contents: write | |
| actions: read | |
| id-token: write | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout this repo | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install PlatformIO | |
| run: | | |
| pip install -U pip | |
| pip install platformio | |
| - name: Fetch latest Meshtastic prerelease | |
| id: get_release | |
| run: | | |
| # Get the first prerelease entry from the releases list | |
| RELEASE_JSON=$(curl -s https://api.github.com/repos/meshtastic/firmware/releases | jq '[.[] | select(.prerelease==true)][0]') | |
| LATEST_TAG=$(echo "$RELEASE_JSON" | jq -r .tag_name) | |
| echo "Latest Meshtastic prerelease: $LATEST_TAG" | |
| echo "tag=$LATEST_TAG" >> $GITHUB_OUTPUT | |
| echo "ru_tag=${LATEST_TAG}-ru" >> $GITHUB_OUTPUT | |
| - name: Check if already built | |
| id: check_release | |
| run: | | |
| if gh release view "${{ steps.get_release.outputs.ru_tag }}" >/dev/null 2>&1; then | |
| echo "Release already exists. Skipping build." | |
| echo "skip_build=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "skip_build=false" >> $GITHUB_OUTPUT | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Stop job if already built | |
| if: steps.check_release.outputs.skip_build == 'true' | |
| run: exit 0 | |
| # - name: Clone Meshtastic firmware at latest prerelease | |
| # if: steps.check_release.outputs.skip_build == 'false' | |
| # run: | | |
| # git clone --depth=1 --branch ${{ steps.get_release.outputs.tag }} https://github.com/meshtastic/firmware.git | |
| # cd firmware | |
| # git submodule update --init --recursive | |
| - name: Checkout firmware at exact release tag | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: meshtastic/firmware | |
| ref: ${{ steps.get_release.outputs.tag }} | |
| fetch-depth: 0 | |
| submodules: 'recursive' | |
| path: firmware | |
| - name: Verify checkout | |
| run: | | |
| cd firmware | |
| echo "Requested tag: ${{ steps.get_release.outputs.tag }}" | |
| git --no-pager show -s --format='HEAD=%H%nREFS=%D' HEAD | |
| echo "git describe: $(git describe --tags --long --always || true)" | |
| echo "Tags pointing at HEAD:" | |
| git tag --points-at HEAD || true | |
| echo "Submodule status:" | |
| git submodule status --recursive || true | |
| - name: Patch platformio.ini for OLED_RU | |
| if: steps.check_release.outputs.skip_build == 'false' | |
| run: | | |
| sed -i '/-DHELTEC_T114/a\ -D OLED_RU' firmware/variants/nrf52840/heltec_mesh_node_t114/platformio.ini | |
| cat firmware/variants/nrf52840/heltec_mesh_node_t114/platformio.ini | |
| - name: Build Heltec Mesh Node t114 firmware | |
| if: steps.check_release.outputs.skip_build == 'false' | |
| run: | | |
| cd firmware | |
| pio run -e heltec-mesh-node-t114 | |
| - name: Rename binaries with versioned names | |
| if: steps.check_release.outputs.skip_build == 'false' | |
| run: | | |
| cd firmware/.pio/build/heltec-mesh-node-t114 | |
| for f in *-t114-*.uf2; do [[ "$f" == *-t114-ru-* ]] && continue; mv -- "$f" "${f/-t114-/-t114-ru-}"; done | |
| - name: Generate checksums | |
| if: steps.check_release.outputs.skip_build == 'false' | |
| id: checksum | |
| run: | | |
| cd firmware/.pio/build/heltec-mesh-node-t114 | |
| for f in heltec-mesh-node-t114-ru-*.uf2; do | |
| sha256sum "$f" >> SHA256SUMS.txt | |
| done | |
| echo "Checksums generated:" | |
| cat SHA256SUMS.txt | |
| - name: Upload firmware binaries (Actions artifacts) | |
| if: steps.check_release.outputs.skip_build == 'false' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: heltec-mesh-node-t114-${{ steps.get_release.outputs.ru_tag }} | |
| path: | | |
| firmware/.pio/build/heltec-mesh-node-t114/heltec-mesh-node-t114-ru-*.uf2 | |
| firmware/.pio/build/heltec-mesh-node-t114/SHA256SUMS.txt | |
| - name: Publish GitHub Release | |
| if: steps.check_release.outputs.skip_build == 'false' | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ steps.get_release.outputs.ru_tag }} | |
| name: Meshtastic Heltec Mesh Node t114 RU **Prerelease** ${{ steps.get_release.outputs.tag }} | |
| body: | | |
| ⚠️ This is a **prerelease build** for **Heltec Mesh Node t114 OLED** with **RU support** | |
| 🔗 Based on upstream prerelease [${{ steps.get_release.outputs.tag }}](https://github.com/meshtastic/firmware/releases/tag/${{ steps.get_release.outputs.tag }}) | |
| **Checksums (SHA256):** | |
| ``` | |
| $(cat firmware/.pio/build/heltec-mesh-node-t114/SHA256SUMS.txt) | |
| ``` | |
| Firmware attached below 👇 | |
| prerelease: true | |
| files: | | |
| firmware/.pio/build/heltec-mesh-node-t114/heltec-mesh-node-t114-ru-*.uf2 | |
| firmware/.pio/build/heltec-mesh-node-t114/SHA256SUMS.txt | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |