Skip to content

Improve Python project setup and add CLI and logging to DDP #87

Improve Python project setup and add CLI and logging to DDP

Improve Python project setup and add CLI and logging to DDP #87

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, esp32s3]
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
- environment: esp32s3
artifact_name: esp32s3_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: Download ESP32-S3 firmware
uses: actions/download-artifact@v4
continue-on-error: true
with:
name: esp32s3_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 }}