Skip to content

Stable Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU #99

Stable Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU

Stable Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU #99

name: Stable Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU
on:
workflow_dispatch: # Manual trigger for testing
repository_dispatch: # Optional external trigger
types: [meshtastic-release]
schedule:
- cron: "0 2 * * *" # Run daily to check for new releases
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 release
id: get_release
run: |
LATEST_TAG=$(curl -s https://api.github.com/repos/meshtastic/firmware/releases/latest | jq -r .tag_name)
echo "Latest Meshtastic release: $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 release
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: Patch platformio.ini for OLED_RU
if: steps.check_release.outputs.skip_build == 'false'
run: |
sed -i '/-DHELTEC_T114/a\ -DOLED_RU' firmware/variants/heltec_mesh_node_t114/platformio.ini
cat firmware/variants/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
mv firmware.uf2 heltec-mesh-node-t114-ru-firmware-${{ steps.get_release.outputs.tag }}.uf2
- 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 ${{ steps.get_release.outputs.tag }}
body: |
✅ Stable build for **Heltec Mesh Node t114 OLED** with **RU support**
🔗 Based on upstream release [${{ 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 👇
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 }}