mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 09:17:46 +01:00
ac0d921413
* Socket refactor and SSL * esp-idf temp * Fixes * Echo component and noise * Add noise API transport support * Updates * ESP-IDF * Complete * Fixes * Fixes * Versions update * New i2c APIs * Complete i2c refactor * SPI migration * Revert ESP Preferences migration, too complex for now * OTA support * Remove echo again * Remove ssl again * GPIOFlags updates * Rename esphal and ICACHE_RAM_ATTR * Make ESP32 arduino compilable again * Fix GPIO flags * Complete pin registry refactor and fixes * Fixes to make test1 compile * Remove sdkconfig file * Ignore sdkconfig file * Fixes in reviewing * Make test2 compile * Make test4 compile * Make test5 compile * Run clang-format * Fix lint errors * Use esp-idf APIs instead of btStart * Another round of fixes * Start implementing ESP8266 * Make test3 compile * Guard esp8266 code * Lint * Reformat * Fixes * Fixes v2 * more fixes * ESP-IDF tidy target * Convert ARDUINO_ARCH_ESPxx * Update WiFiSignalSensor * Update time ifdefs * OTA needs millis from hal * RestartSwitch needs delay from hal * ESP-IDF Uart * Fix OTA blank password * Allow setting sdkconfig * Fix idf partitions and allow setting sdkconfig from yaml * Re-add read/write compat APIs and fix esp8266 uart * Fix esp8266 store log strings in flash * Fix ESP32 arduino preferences not initialized * Update ifdefs * Change how sdkconfig change is detected * Add checks to ci-custom and fix them * Run clang-format * Add esp-idf clang-tidy target and fix errors * Fixes from clang-tidy idf round 2 * Fixes from compiling tests with esp-idf * Run clang-format * Switch test5.yaml to esp-idf * Implement ESP8266 Preferences * Lint * Re-do PIO package version selection a bit * Fix arduinoespressif32 package version * Fix unit tests * Lint * Lint fixes * Fix readv/writev not defined * Fix graphing component * Re-add all old options from core/config.py Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
158 lines
5.4 KiB
YAML
158 lines
5.4 KiB
YAML
# THESE JOBS ARE COPIED IN release.yml and release-dev.yml
|
|
# PLEASE ALSO UPDATE THOSE FILES WHEN CHANGING LINES HERE
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [dev, beta, release]
|
|
|
|
pull_request:
|
|
|
|
jobs:
|
|
ci:
|
|
name: ${{ matrix.name }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- id: ci-custom
|
|
name: Run script/ci-custom
|
|
- id: lint-python
|
|
name: Run script/lint-python
|
|
- id: test
|
|
file: tests/test1.yaml
|
|
name: Test tests/test1.yaml
|
|
pio_cache_key: test1
|
|
- id: test
|
|
file: tests/test2.yaml
|
|
name: Test tests/test2.yaml
|
|
pio_cache_key: test2
|
|
- id: test
|
|
file: tests/test3.yaml
|
|
name: Test tests/test3.yaml
|
|
pio_cache_key: test1
|
|
- id: test
|
|
file: tests/test4.yaml
|
|
name: Test tests/test4.yaml
|
|
pio_cache_key: test4
|
|
- id: test
|
|
file: tests/test5.yaml
|
|
name: Test tests/test5.yaml
|
|
pio_cache_key: test5
|
|
- id: pytest
|
|
name: Run pytest
|
|
- id: clang-format
|
|
name: Run script/clang-format
|
|
- id: clang-tidy
|
|
name: Run script/clang-tidy for ESP8266
|
|
options: --environment esp8266-tidy --grep USE_ESP8266
|
|
pio_cache_key: tidyesp8266
|
|
- id: clang-tidy
|
|
name: Run script/clang-tidy for ESP32 1/4
|
|
options: --environment esp32-tidy --split-num 4 --split-at 1
|
|
pio_cache_key: tidyesp32
|
|
- id: clang-tidy
|
|
name: Run script/clang-tidy for ESP32 2/4
|
|
options: --environment esp32-tidy --split-num 4 --split-at 2
|
|
pio_cache_key: tidyesp32
|
|
- id: clang-tidy
|
|
name: Run script/clang-tidy for ESP32 3/4
|
|
options: --environment esp32-tidy --split-num 4 --split-at 3
|
|
pio_cache_key: tidyesp32
|
|
- id: clang-tidy
|
|
name: Run script/clang-tidy for ESP32 4/4
|
|
options: --environment esp32-tidy --split-num 4 --split-at 4
|
|
pio_cache_key: tidyesp32
|
|
- id: clang-tidy
|
|
name: Run script/clang-tidy for ESP32 esp-idf
|
|
options: --environment esp32-idf-tidy --grep USE_ESP_IDF
|
|
pio_cache_key: tidyesp32-idf
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v2
|
|
id: python
|
|
with:
|
|
python-version: '3.7'
|
|
|
|
- name: Cache pip modules
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: pip-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements*.txt') }}
|
|
restore-keys: |
|
|
pip-${{ steps.python.outputs.python-version }}-
|
|
|
|
- name: Set up python environment
|
|
run: |
|
|
pip3 install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt
|
|
pip3 install -e .
|
|
|
|
# Use per check platformio cache because checks use different parts
|
|
- name: Cache platformio
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/.platformio
|
|
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }}
|
|
restore-keys: |
|
|
platformio-${{ matrix.pio_cache_key }}-
|
|
if: matrix.id == 'test' || matrix.id == 'clang-tidy'
|
|
|
|
- name: Install clang tools
|
|
run: |
|
|
sudo apt-get install \
|
|
clang-format-11 \
|
|
clang-tidy-11
|
|
if: matrix.id == 'clang-tidy' || matrix.id == 'clang-format'
|
|
|
|
- name: Register problem matchers
|
|
run: |
|
|
echo "::add-matcher::.github/workflows/matchers/ci-custom.json"
|
|
echo "::add-matcher::.github/workflows/matchers/lint-python.json"
|
|
echo "::add-matcher::.github/workflows/matchers/python.json"
|
|
echo "::add-matcher::.github/workflows/matchers/pytest.json"
|
|
echo "::add-matcher::.github/workflows/matchers/gcc.json"
|
|
echo "::add-matcher::.github/workflows/matchers/clang-tidy.json"
|
|
|
|
- name: Lint Custom
|
|
run: |
|
|
script/ci-custom.py
|
|
script/build_codeowners.py --check
|
|
if: matrix.id == 'ci-custom'
|
|
|
|
- name: Lint Python
|
|
run: script/lint-python
|
|
if: matrix.id == 'lint-python'
|
|
|
|
- run: esphome compile ${{ matrix.file }}
|
|
if: matrix.id == 'test'
|
|
env:
|
|
# Also cache libdeps, store them in a ~/.platformio subfolder
|
|
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps
|
|
|
|
- name: Run pytest
|
|
run: |
|
|
pytest -vv --tb=native tests
|
|
if: matrix.id == 'pytest'
|
|
|
|
# Also run git-diff-index so that the step is marked as failed on formatting errors,
|
|
# since clang-format doesn't do anything but change files if -i is passed.
|
|
- name: Run clang-format
|
|
run: |
|
|
script/clang-format -i
|
|
git diff-index --quiet HEAD --
|
|
if: matrix.id == 'clang-format'
|
|
|
|
- name: Run clang-tidy
|
|
run: |
|
|
script/clang-tidy --all-headers --fix ${{ matrix.options }}
|
|
if: matrix.id == 'clang-tidy'
|
|
env:
|
|
# Also cache libdeps, store them in a ~/.platformio subfolder
|
|
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps
|
|
|
|
- name: Suggested changes
|
|
run: script/ci-suggest-changes
|
|
if: always() && (matrix.id == 'clang-tidy' || matrix.id == 'clang-format')
|