Use new test format for beta

This commit is contained in:
Edward Firmo
2024-05-08 10:09:44 +02:00
parent 6428b15eec
commit b788ad8a1c

View File

@@ -3,160 +3,334 @@ name: Validate ESPHome (beta)
# yamllint disable-line rule:truthy
on:
push:
paths:
- "nspanel_esphome*.yaml"
- "esphome/nspanel_esphome*.yaml"
- "prebuilt/nspanel_esphome*.yaml"
- "prebuilt/wall_display*.yaml"
- ".test/*.yaml"
- "*.h"
- "*.c"
- "*.cpp"
- "*.py"
pull_request:
paths:
- "nspanel_esphome*.yaml"
- "esphome/nspanel_esphome*.yaml"
- "prebuilt/nspanel_esphome*.yaml"
- "prebuilt/wall_display*.yaml"
- ".test/*.yaml"
- "*.h"
- "*.c"
- "*.cpp"
- "*.py"
workflow_dispatch:
concurrency:
# yamllint disable-line rule:line-length
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
setup_dependencies:
name: Setup & Cache Dependencies
runs-on: ubuntu-latest
outputs:
cache-hit-idf-v4: ${{ steps.cache-idf-v4.outputs.cache-hit }}
cache-hit-idf-v5: ${{ steps.cache-idf-v5.outputs.cache-hit }}
cache-hit-arduino: ${{ steps.cache-arduino.outputs.cache-hit }}
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Cache ESP-IDF v4 Dependencies
id: cache-idf-v4
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-esp-idf-v4-${{ hashFiles('**/esphome_idf_basic.yaml') }}
restore-keys: |
${{ runner.os }}-esp-idf-v4-
- name: Cache ESP-IDF v5 Dependencies
id: cache-idf-v5
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-esp-idf-v5-${{ hashFiles('**/esphome_idf5_basic.yaml') }}
restore-keys: |
${{ runner.os }}-esp-idf-v5-
- name: Cache Arduino Dependencies
id: cache-arduino
uses: actions/cache@main
with:
path: |
~/.esphome/cache
~/.platformio/packages
~/.platformio/platforms
key: ${{ runner.os }}-arduino-${{ hashFiles('**/esphome_ard_basic.yaml') }}
restore-keys: |
${{ runner.os }}-arduino-
code_scan:
name: Code scan (YAML)
runs-on: "ubuntu-latest"
needs: setup_dependencies
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Validate nspanel_esphome.yaml
run: yamllint -c "./.rules/yamllint.yml" nspanel_esphome.yaml
- name: Checkout Code
uses: actions/checkout@main
build_core:
name: Core
runs-on: "ubuntu-latest"
needs:
- code_scan
steps:
- uses: actions/checkout@main
- name: Setup Python
uses: actions/setup-python@main
with:
fetch-depth: '0'
- name: Build core
python-version: '3.8'
- name: Install Yamllint
run: pip install yamllint
- name: Validate YAML files
run: find . -name "*.yaml" -exec yamllint -c ./.rules/yamllint.yml {} +
build_cores:
name: Core
needs: [code_scan, setup_dependencies]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- id: idf_v4
yaml_file: ".test/esphome_idf_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-idf-v4 }}
- id: idf_v5
yaml_file: ".test/esphome_idf5_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-idf-v5 }}
- id: ard
yaml_file: ".test/esphome_ard_basic.yaml"
cache-hit: ${{ needs.setup_dependencies.outputs.cache-hit-arduino }}
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Firmware
if: steps.matrix.outputs.cache-hit != 'true'
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_basic.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_advanced:
name: Advanced
runs-on: "ubuntu-latest"
needs:
- build_core
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_advanced.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_advanced.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_advanced.yaml"
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+advanced
- name: Checkout repository
uses: actions/checkout@main
- name: Build Advanced Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_heat:
name: Climate (heat)
runs-on: "ubuntu-latest"
needs:
- build_core
build_ble_tracker:
name: BLE Tracker
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_ble_tracker.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_ble_tracker.yaml"
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+climate_heat
- name: Checkout repository
uses: actions/checkout@main
- name: Build BLE Tracker Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_heat.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_bluetooth_proxy:
name: Bluetooth Proxy
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_bluetooth_proxy.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_bluetooth_proxy.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Bluetooth Proxy Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_cool:
name: Climate (cool)
runs-on: "ubuntu-latest"
needs:
- build_core
name: Climate Cool
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_cool.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_cool.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_cool.yaml"
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+climate_cool
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Cool Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_cool.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_heat:
name: Climate Heat
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_heat.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_heat.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_heat.yaml"
steps:
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Heat Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_dual:
name: Climate (dual)
runs-on: "ubuntu-latest"
needs:
- build_core
name: Climate Dual
needs: build_cores
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_dual.yaml"
- id: idf_v5
base: idf_v5
yaml_file: ".test/esphome_idf5_climate_dual.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_climate_dual.yaml"
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+climate_dual
- name: Checkout repository
uses: actions/checkout@main
- name: Build Climate Dial Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_dual.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_heat_advanced:
name: Advanced+climate (heat)
runs-on: "ubuntu-latest"
build_customizations:
name: Customizations
needs:
- build_climate_heat
- build_advanced
- build_climate_heat
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_advanced_climate_heat_customizations.yaml"
- id: ard
base: ard
yaml_file: ".test/esphome_ard_advanced_climate_heat_customizations.yaml"
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+advanced+climate_heat
- name: Checkout repository
uses: actions/checkout@main
- name: Build Customizations Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_heat.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_climate_cool_advanced_arduino:
name: Arduino
runs-on: "ubuntu-latest"
build_climate_ble_proxy:
name: Climate Cool + Bluetooth Proxy
needs:
- build_climate_cool
- build_advanced
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+advanced+climate_cool+arduino
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_cool_arduino.yaml"
version: beta
- build_bluetooth_proxy
runs-on: ubuntu-latest
strategy:
matrix:
include:
- id: idf_v4
base: idf_v4
yaml_file: ".test/esphome_idf_climate_cool_bluetooth_proxy.yaml"
build_climate_dual_esp_idf5:
name: esp-idf v5 & Climate Dual & Bluetooth proxy
runs-on: "ubuntu-latest"
needs:
- build_advanced
- build_climate_dual
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+climate_dual+bt_proxy+esp_idf5
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_dual_esp_idf5.yaml"
version: beta
- name: Checkout repository
uses: actions/checkout@main
build_climate_heat_advanced_customization:
name: Customizations
runs-on: "ubuntu-latest"
needs:
- code_scan
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+advanced+climate_heat+customizations
- name: Build Customizations Firmware
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_advanced_climate_heat_customizations.yaml"
yaml_file: ${{ matrix.yaml_file }}
version: beta
build_prebuilt_firmware:
@@ -166,8 +340,6 @@ jobs:
if: github.ref == 'refs/heads/dev' || github.base_ref == 'dev'
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build ESPHome Prebuilt Firmware
uses: barndawgie/build-action@v1.9.0
@@ -180,19 +352,4 @@ jobs:
with:
yaml_file: prebuilt/wall_display.yaml
version: beta
build_climate_cool_bluetooth_proxy:
name: Climate cool & BLE proxy
runs-on: "ubuntu-latest"
needs:
- build_climate_cool
steps:
- uses: actions/checkout@main
with:
fetch-depth: '0'
- name: Build core+climate_cool+bluetooth_proxy
uses: barndawgie/build-action@v1.9.0
with:
yaml_file: "./.test/esphome_climate_cool_bluetooth_proxy.yaml"
version: beta
...