Bump docker/login-action from 2 to 3 #208
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 | |
concurrency: | |
# yamllint disable-line rule:line-length | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
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: test3 | |
- id: test | |
file: tests/test3.1.yaml | |
name: Test tests/test3.1.yaml | |
pio_cache_key: test3.1 | |
- 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: test | |
file: tests/test6.yaml | |
name: Test tests/test6.yaml | |
pio_cache_key: test6 | |
- id: test | |
file: tests/test7.yaml | |
name: Test tests/test7.yaml | |
pio_cache_key: test7 | |
- 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-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 | |
- id: yamllint | |
name: Run yamllint | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
id: python | |
with: | |
python-version: "3.9" | |
- name: Cache virtualenv | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
# yamllint disable-line rule:line-length | |
key: venv-${{ steps.python.outputs.python-version }}-${{ hashFiles('requirements*.txt') }} | |
restore-keys: | | |
venv-${{ steps.python.outputs.python-version }}- | |
- name: Set up virtualenv | |
# yamllint disable rule:line-length | |
run: | | |
python -m venv .venv | |
source .venv/bin/activate | |
pip install -U pip | |
pip install -r requirements.txt -r requirements_optional.txt -r requirements_test.txt | |
pip install -e . | |
echo "$GITHUB_WORKSPACE/.venv/bin" >> $GITHUB_PATH | |
echo "VIRTUAL_ENV=$GITHUB_WORKSPACE/.venv" >> $GITHUB_ENV | |
# yamllint enable rule:line-length | |
# Use per check platformio cache because checks use different parts | |
- name: Cache platformio | |
uses: actions/cache@v3 | |
with: | |
path: ~/.platformio | |
# yamllint disable-line rule:line-length | |
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }} | |
if: matrix.id == 'test' || matrix.id == 'clang-tidy' | |
- name: Install clang tools | |
run: | | |
sudo apt-get install \ | |
clang-format-13 \ | |
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 -a | |
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: Run yamllint | |
if: matrix.id == 'yamllint' | |
uses: frenck/[email protected] | |
- name: Suggested changes | |
run: script/ci-suggest-changes | |
# yamllint disable-line rule:line-length | |
if: always() && (matrix.id == 'clang-tidy' || matrix.id == 'clang-format' || matrix.id == 'lint-python') | |
ci-status: | |
name: CI Status | |
runs-on: ubuntu-latest | |
needs: [ci] | |
if: always() | |
steps: | |
- name: Successful deploy | |
if: ${{ !(contains(needs.*.result, 'failure')) }} | |
run: exit 0 | |
- name: Failing deploy | |
if: ${{ contains(needs.*.result, 'failure') }} | |
run: exit 1 |