Skip to content

Pre-release Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU #98

Pre-release Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU

Pre-release Check-Build Meshtastic Heltec Mesh Node t114 OLED_RU #98

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 }}