Refactor/performance and UI updates #79
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release | |
| on: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| build_esp32dev: | |
| name: Build Firmware | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python environment | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - name: Install PlatformIO | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install platformio | |
| - name: Create secrets.h dynamically | |
| run: | | |
| mkdir -p include | |
| cat <<EOL > include/secrets.h | |
| #pragma once | |
| #define WIFI_HOSTNAME "ikea-led" | |
| #ifdef ESP8266 | |
| #define WIFI_SSID "WifiForIkeaLamp" | |
| #define WIFI_PASSWORD "WifiPasswordForIkeaLamp" | |
| #endif | |
| #define OTA_USERNAME "admin" | |
| #define OTA_PASSWORD "ikea-led-wall" | |
| EOL | |
| - name: Install dependencies | |
| run: | | |
| pio pkg update | |
| pio upgrade | |
| pio pkg install | |
| - name: Build project for esp32dev | |
| run: platformio run --environment esp32dev | |
| - name: Archive build artifacts | |
| run: | | |
| mkdir -p ./builds | |
| mv ./.pio/build/esp32dev/firmware.bin ./builds/esp32dev_firmware.bin | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: esp32dev_firmware | |
| path: ./builds/esp32dev_firmware.bin | |
| build_optional: | |
| name: Build Optional Firmware | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| strategy: | |
| matrix: | |
| environment: [nodemcuv2, d1_mini_pro-ota, ESP32-wemos, esp32c3] | |
| include: | |
| - environment: nodemcuv2 | |
| artifact_name: nodemcuv2_firmware | |
| - environment: d1_mini_pro-ota | |
| artifact_name: d1_mini_pro_ota_firmware | |
| - environment: ESP32-wemos | |
| artifact_name: ESP32-wemos_firmware | |
| - environment: esp32c3 | |
| artifact_name: esp32c3_firmware | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python environment | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.10" | |
| - name: Install PlatformIO | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install platformio | |
| - name: Create secrets.h dynamically | |
| run: | | |
| mkdir -p include | |
| cat <<EOL > include/secrets.h | |
| #pragma once | |
| #define WIFI_HOSTNAME "ikea-led" | |
| #ifdef ESP8266 | |
| #define WIFI_SSID "WifiForIkeaLamp" | |
| #define WIFI_PASSWORD "WifiPasswordForIkeaLamp" | |
| #endif | |
| #define OTA_USERNAME "admin" | |
| #define OTA_PASSWORD "ikea-led-wall" | |
| EOL | |
| - name: Install dependencies | |
| run: | | |
| pio pkg update | |
| pio upgrade | |
| pio pkg install | |
| - name: Build project for ${{ matrix.environment }} | |
| run: platformio run --environment ${{ matrix.environment }} | |
| - name: Archive build artifacts | |
| if: startsWith(github.ref, 'refs/tags/') | |
| run: | | |
| mkdir -p ./builds | |
| mv ./.pio/build/${{ matrix.environment }}/firmware.bin ./builds/${{ matrix.artifact_name }}.bin | |
| - name: Upload artifact | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact_name }} | |
| path: ./builds/${{ matrix.artifact_name }}.bin | |
| release: | |
| name: Create GitHub Release | |
| runs-on: ubuntu-latest | |
| needs: [build_esp32dev, build_optional] | |
| if: startsWith(github.ref, 'refs/tags/') | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Download ESP32 firmware | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: esp32dev_firmware | |
| path: ./builds/ # specify a target directory | |
| - name: Download ESP8266 firmware (nodemcuv2) | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: true | |
| with: | |
| name: nodemcuv2_firmware | |
| path: ./builds/ # specify a target directory | |
| - name: Download ESP8266 firmware (d1_mini_pro-ota) | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: true | |
| with: | |
| name: d1_mini_pro_ota_firmware | |
| path: ./builds/ # specify a target directory | |
| - name: Download ESP32-wemos firmware | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: true | |
| with: | |
| name: ESP32-wemos_firmware | |
| path: ./builds/ # specify a target directory | |
| - name: Download ESP32-C3 firmware | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: true | |
| with: | |
| name: esp32c3_firmware | |
| path: ./builds/ # specify a target directory | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| draft: true | |
| prerelease: true | |
| name: Release ${{ github.ref_name }} | |
| body: | | |
| This is a prerelease version of the firmware. | |
| ## Installation | |
| Flash the appropriate firmware binary for your device. https://github.com/ph1p/ikea-led-obegraensad?tab=readme-ov-file#ota-updates | |
| ## Default Configuration | |
| - **Hostname:** ikea-led | |
| - **OTA Username:** admin | |
| - **OTA Password:** ikea-led-wall | |
| - **WiFi SSID:** WifiForIkeaLamp (ESP8266 only) | |
| - **WiFi Password:** WifiPasswordForIkeaLamp (ESP8266 only) | |
| **Note:** ESP32 devices will create an access point if unable to connect to WiFi. | |
| files: ./builds/*.bin | |
| fail_on_unmatched_files: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |