Files
meshcore-bot-firmware/.github/workflows/firmware-build.yml
cj-vana 5af562c6be ci: pin submodule to upstream base and apply patches at build time
The submodule had been pointing at a local MeshCore commit that included
all 5 patches applied on top of upstream. That commit only exists in the
local working tree — CI's `submodules: recursive` checkout couldn't
fetch it from github.com/meshcore-dev/MeshCore and failed with
"fatal: not our ref d2ad3ac8".

Resets vendor/MeshCore to upstream main (910b1bee, the same base our
patches were authored against) so CI can fetch it normally, and adds an
explicit `apply-patches.sh` step to the firmware-build workflow before
the verify and build steps run. The release workflow already applies
patches explicitly so no change there.

Subsequent verify/build steps set MESHCORE_SKIP_APPLY_PATCHES=1 to avoid
re-applying patches on the now-dirty tree.
2026-05-16 13:05:24 -06:00

68 lines
1.8 KiB
YAML

name: Firmware Build
on:
pull_request:
push:
branches:
- main
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
representative-build:
name: Representative build (Heltec V3, RAK 4631)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Cache PlatformIO
uses: actions/cache@v4
with:
path: |
~/.cache/pip
~/.platformio/.cache
key: ${{ runner.os }}-pio-${{ hashFiles('vendor/MeshCore/platformio.ini', 'vendor/MeshCore/variants/**/platformio.ini') }}
restore-keys: |
${{ runner.os }}-pio-
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install PlatformIO
run: python3 -m pip install --upgrade platformio
- name: Apply MeshCore patches
run: bash scripts/apply-patches.sh
- name: Run host tests and safety checks
run: MESHCORE_SKIP_APPLY_PATCHES=1 bash scripts/verify.sh --no-build
- name: Build representative firmware
run: |
MESHCORE_SKIP_APPLY_PATCHES=1 \
SIZE_REPORT=out/size/report.txt \
bash scripts/build-representative.sh --baseline
- name: Upload size reports
uses: actions/upload-artifact@v4
if: always()
with:
name: representative-size-reports
path: out/size
- name: Upload firmware artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: representative-firmware
path: out/firmware