From eb2abb6994b4d68d9c29d95de5e4c5e50e967654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 29 May 2023 18:42:18 +0200 Subject: [PATCH] Add Github CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas --- .github/workflows/ci.yaml | 134 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..cb9e7b7 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,134 @@ +name: ESPSomfy-RTS + +on: [push, pull_request] + +env: + ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS: "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json" + LITTLEFS_VERSION: "v2.5.1" + MKLITTLEFS_VERSION: "3.1.0" + PYTHON_VERSION: "3.10" + +jobs: + littlefs: + name: LittleFS + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Checkout mklittlefs + uses: actions/checkout@v3 + with: + repository: earlephilhower/mklittlefs + path: mklittlefs + ref: ${{ env.MKLITTLEFS_VERSION }} + + - name: Checkout LittleFS + uses: actions/checkout@v3 + with: + repository: littlefs-project/littlefs + path: mklittlefs/littlefs + ref: ${{ env.LITTLEFS_VERSION }} + + - name: Build mklittlefs + run: | + make -C mklittlefs + + - name: Create LittleFS + run: | + ./mklittlefs/mklittlefs --create data --size 1441792 SomfyController.littlefs.bin + + - name: Upload binaries + uses: actions/upload-artifact@v3 + with: + name: LittleFS + path: SomfyController.littlefs.bin + retention-days: 5 + + arduino: + name: ${{ matrix.name }} + needs: [littlefs] + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + board: [esp32, lolin_s2_mini] + include: + - board: esp32 + chip: ESP32 + flash_size: 4MB + fqbn: esp32:esp32:esp32 + name: ESP32 + - board: lolin_s2_mini + chip: ESP32-S2 + flash_size: 4MB + fqbn: esp32:esp32:lolin_s2_mini + name: LOLIN-S2-mini + + steps: + - name: Check out code + uses: actions/checkout@v3 + with: + path: SomfyController + + - name: Get LittleFS + uses: actions/download-artifact@v3 + with: + name: LittleFS + + - name: Install Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v4 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Upgrade pip + run: | + python -m pip install --upgrade pip + pip --version + + - name: Install ESPTool + run: | + pip install esptool + + - name: Install Arduino CLI + uses: arduino/setup-arduino-cli@v1 + + - name: Configure Arduino CLI + run: | + arduino-cli core update-index + arduino-cli core install esp32:esp32 + + - name: Configure Arduino Libraries + run: | + arduino-cli lib install ArduinoJson + arduino-cli lib install PubSubClient + arduino-cli lib install SmartRC-CC1101-Driver-Lib + arduino-cli lib install WebSockets + + - name: Build ${{ matrix.name }} + run: | + mkdir -p build + arduino-cli compile --clean --output-dir build --fqbn ${{ matrix.fqbn }} ./SomfyController + + - name: ${{ matrix.name }} Image + run: | + python -m esptool --chip ${{ matrix.chip }} \ + merge_bin -o build/SomfyController.onboard.bin \ + --flash_size ${{ matrix.flash_size }} \ + 0x1000 build/SomfyController.ino.bootloader.bin \ + 0x8000 build/SomfyController.ino.partitions.bin \ + 0x10000 build/SomfyController.ino.bin \ + 0x290000 SomfyController.littlefs.bin + + - name: Upload ${{ matrix.name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.name }} + path: | + build/SomfyController.ino.bin + build/SomfyController.ino.bootloader.bin + build/SomfyController.ino.partitions.bin + build/SomfyController.onboard.bin + retention-days: 5