From c4f2a1a8e1eb7a6d0d38ee004e4e1dcde68e5b30 Mon Sep 17 00:00:00 2001 From: Hermes Date: Sat, 29 Aug 2026 16:15:32 -0500 Subject: [PATCH] ci: add OTA build workflow --- .gitea/workflows/ota-build.yml | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .gitea/workflows/ota-build.yml diff --git a/.gitea/workflows/ota-build.yml b/.gitea/workflows/ota-build.yml new file mode 100644 index 0000000..c4d5e7e --- /dev/null +++ b/.gitea/workflows/ota-build.yml @@ -0,0 +1,46 @@ +name: OTA build + +on: + push: + branches: + - '**' + workflow_dispatch: + +jobs: + build-ota: + runs-on: ubuntu-latest + timeout-minutes: 45 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install PlatformIO + run: | + python -m pip install --upgrade pip + pip install platformio + + - name: Build filesystem-aware OTA package + run: python scripts/build_ota_package.py + + - name: Collect OTA artifacts + run: | + mkdir -p dist/ota + find dist -maxdepth 1 -type f -name '*.tslpkg' -exec cp {} dist/ota/ \; + find .pio/build -type f \( -name 'firmware.bin' -o -name 'littlefs.bin' \) -exec cp {} dist/ota/ \; + if ! find dist/ota -maxdepth 1 -type f -name '*.tslpkg' | grep -q .; then + echo 'No .tslpkg OTA package was produced.' >&2 + exit 1 + fi + find dist/ota -maxdepth 1 -type f | sort + + - name: Upload OTA artifacts + uses: actions/upload-artifact@v3 + with: + name: ota-package + path: dist/ota/* + if-no-files-found: error