dashboard: Adds "compressed=1" to /download.bin endpoint. (...) #18430
Workflow file for this run
This file contains 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: CI | |
# yamllint disable-line rule:truthy | |
on: | |
push: | |
branches: [dev, beta, release] | |
pull_request: | |
merge_group: | |
permissions: | |
contents: read | |
env: | |
DEFAULT_PYTHON: "3.9" | |
PYUPGRADE_TARGET: "--py39-plus" | |
CLANG_FORMAT_VERSION: "13.0.1" | |
concurrency: | |
# yamllint disable-line rule:line-length | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
common: | |
name: Create common environment | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Set up Python ${{ env.DEFAULT_PYTHON }} | |
uses: actions/setup-python@v4.6.0 | |
with: | |
python-version: ${{ env.DEFAULT_PYTHON }} | |
- name: Restore Python virtual environment | |
id: cache-venv | |
uses: actions/cache@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Create Python virtual environment | |
if: steps.cache-venv.outputs.cache-hit != 'true' | |
run: | | |
python -m venv venv | |
. venv/bin/activate | |
python --version | |
pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt | |
pip install -e . | |
yamllint: | |
name: yamllint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Run yamllint | |
uses: frenck/action-yamllint@v1.4.1 | |
black: | |
name: Check black | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Run black | |
run: | | |
. venv/bin/activate | |
black --verbose esphome tests | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
if: always() | |
flake8: | |
name: Check flake8 | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Run flake8 | |
run: | | |
. venv/bin/activate | |
flake8 esphome | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
if: always() | |
pylint: | |
name: Check pylint | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Run pylint | |
run: | | |
. venv/bin/activate | |
pylint -f parseable --persistent=n esphome | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
if: always() | |
pyupgrade: | |
name: Check pyupgrade | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Run pyupgrade | |
run: | | |
. venv/bin/activate | |
pyupgrade ${{ env.PYUPGRADE_TARGET }} `find esphome -name "*.py" -type f` | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
if: always() | |
ci-custom: | |
name: Run script/ci-custom | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Register matcher | |
run: echo "::add-matcher::.github/workflows/matchers/ci-custom.json" | |
- name: Run script/ci-custom | |
run: | | |
. venv/bin/activate | |
script/ci-custom.py | |
script/build_codeowners.py --check | |
pytest: | |
name: Run pytest | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Register matcher | |
run: echo "::add-matcher::.github/workflows/matchers/pytest.json" | |
- name: Run pytest | |
run: | | |
. venv/bin/activate | |
pytest -vv --tb=native tests | |
clang-format: | |
name: Check clang-format | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Install clang-format | |
run: | | |
. venv/bin/activate | |
pip install clang-format==${{ env.CLANG_FORMAT_VERSION }} | |
- name: Run clang-format | |
run: | | |
. venv/bin/activate | |
script/clang-format -i | |
git diff-index --quiet HEAD -- | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
if: always() | |
compile-tests: | |
name: Run YAML test ${{ matrix.file }} | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
- black | |
- ci-custom | |
- clang-format | |
- flake8 | |
- pylint | |
- pytest | |
- pyupgrade | |
- yamllint | |
strategy: | |
fail-fast: false | |
max-parallel: 2 | |
matrix: | |
file: [1, 2, 3, 3.1, 4, 5, 6, 7, 8] | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
- name: Cache platformio | |
uses: actions/cache@v3.3.1 | |
with: | |
path: ~/.platformio | |
# yamllint disable-line rule:line-length | |
key: platformio-test${{ matrix.file }}-${{ hashFiles('platformio.ini') }} | |
- name: Run esphome compile tests/test${{ matrix.file }}.yaml | |
run: | | |
. venv/bin/activate | |
esphome compile tests/test${{ matrix.file }}.yaml | |
clang-tidy: | |
name: ${{ matrix.name }} | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
- black | |
- ci-custom | |
- clang-format | |
- flake8 | |
- pylint | |
- pytest | |
- pyupgrade | |
- yamllint | |
strategy: | |
fail-fast: false | |
max-parallel: 2 | |
matrix: | |
include: | |
- id: clang-tidy | |
name: Run script/clang-tidy for ESP8266 | |
options: --environment esp8266-arduino-tidy --grep USE_ESP8266 | |
pio_cache_key: tidyesp8266 | |
- id: clang-tidy | |
name: Run script/clang-tidy for ESP32 Arduino 1/4 | |
options: --environment esp32-arduino-tidy --split-num 4 --split-at 1 | |
pio_cache_key: tidyesp32 | |
- id: clang-tidy | |
name: Run script/clang-tidy for ESP32 Arduino 2/4 | |
options: --environment esp32-arduino-tidy --split-num 4 --split-at 2 | |
pio_cache_key: tidyesp32 | |
- id: clang-tidy | |
name: Run script/clang-tidy for ESP32 Arduino 3/4 | |
options: --environment esp32-arduino-tidy --split-num 4 --split-at 3 | |
pio_cache_key: tidyesp32 | |
- id: clang-tidy | |
name: Run script/clang-tidy for ESP32 Arduino 4/4 | |
options: --environment esp32-arduino-tidy --split-num 4 --split-at 4 | |
pio_cache_key: tidyesp32 | |
- id: clang-tidy | |
name: Run script/clang-tidy for ESP32 IDF | |
options: --environment esp32-idf-tidy --grep USE_ESP_IDF | |
pio_cache_key: tidyesp32-idf | |
steps: | |
- name: Check out code from GitHub | |
uses: actions/checkout@v3.5.2 | |
- name: Restore Python virtual environment | |
uses: actions/cache/restore@v3.3.1 | |
with: | |
path: venv | |
# yamllint disable-line rule:line-length | |
key: ${{ runner.os }}-${{ env.DEFAULT_PYTHON }}-venv-${{ hashFiles('requirements.txt', 'requirements_optional.txt', 'requirements_test.txt') }} | |
# Use per check platformio cache because checks use different parts | |
- name: Cache platformio | |
uses: actions/cache@v3.3.1 | |
with: | |
path: ~/.platformio | |
# yamllint disable-line rule:line-length | |
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }} | |
- name: Install clang-tidy | |
run: sudo apt-get install clang-tidy-11 | |
- name: Register problem matchers | |
run: | | |
echo "::add-matcher::.github/workflows/matchers/gcc.json" | |
echo "::add-matcher::.github/workflows/matchers/clang-tidy.json" | |
- name: Run clang-tidy | |
run: | | |
. venv/bin/activate | |
script/clang-tidy --all-headers --fix ${{ matrix.options }} | |
env: | |
# Also cache libdeps, store them in a ~/.platformio subfolder | |
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
# yamllint disable-line rule:line-length | |
if: always() | |
ci-status: | |
name: CI Status | |
runs-on: ubuntu-latest | |
needs: | |
- common | |
- black | |
- ci-custom | |
- clang-format | |
- flake8 | |
- pylint | |
- pytest | |
- pyupgrade | |
- yamllint | |
- compile-tests | |
- clang-tidy | |
if: always() | |
steps: | |
- name: Success | |
if: ${{ !(contains(needs.*.result, 'failure')) }} | |
run: exit 0 | |
- name: Failure | |
if: ${{ contains(needs.*.result, 'failure') }} | |
run: exit 1 |