mirror of
https://github.com/syssi/esphome-votronic.git
synced 2025-07-23 04:23:02 +02:00
220 lines
8.3 KiB
YAML
220 lines
8.3 KiB
YAML
name: CI
|
|
|
|
on: # yamllint disable-line rule:truthy
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
schedule:
|
|
- cron: 0 12 * * *
|
|
|
|
jobs:
|
|
yamllint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: yaml-lint
|
|
uses: ibiqlik/action-yamllint@v3
|
|
with:
|
|
config_file: .yamllint
|
|
|
|
lint-clang-format:
|
|
env:
|
|
esphome_directory: esphome
|
|
runs-on: ubuntu-latest
|
|
# cpp lint job runs with esphome-lint docker image so that clang-format-*
|
|
# doesn't have to be installed
|
|
container: esphome/esphome-lint:latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
# Set up the pio project so that the cpp checks know how files are compiled
|
|
# (build flags, libraries etc)
|
|
|
|
- name: 💣 Clone esphome project
|
|
run: git clone https://github.com/esphome/esphome.git
|
|
- name: 💣 Copy component into the esphome project
|
|
run: |
|
|
cp -r ../components/* esphome/components/
|
|
git config user.name "ci"
|
|
git config user.email "ci@github.com"
|
|
git add .
|
|
git commit -a -m "Add external component"
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
- name: Set up platformio environment
|
|
run: pio init --ide atom
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
- name: Run clang-format
|
|
run: script/clang-format -i
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
- name: Suggest changes
|
|
run: script/ci-suggest-changes
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
lint-clang-tidy:
|
|
env:
|
|
esphome_directory: esphome
|
|
runs-on: ubuntu-latest
|
|
# cpp lint job runs with esphome-lint docker image so that clang-format-*
|
|
# doesn't have to be installed
|
|
container: esphome/esphome-lint:latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: 💣 Clone esphome project
|
|
run: git clone https://github.com/esphome/esphome.git
|
|
- name: 💣 Copy component into the esphome project
|
|
run: |
|
|
cp -r ../components/* esphome/components/
|
|
git config user.name "ci"
|
|
git config user.email "ci@github.com"
|
|
git add .
|
|
git commit -a -m "Add external component"
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
# Set up the pio project so that the cpp checks know how files are compiled
|
|
# (build flags, libraries etc)
|
|
- name: Set up platformio environment
|
|
run: pio init --ide atom
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
- name: Register problem matchers
|
|
run: |
|
|
echo "::add-matcher::.github/workflows/matchers/clang-tidy.json"
|
|
echo "::add-matcher::.github/workflows/matchers/gcc.json"
|
|
# Can be removed as soon as esphome-lint container is fixed
|
|
- name: Add missing pexpect
|
|
run: pip install pexpect
|
|
- name: Run lint-cpp
|
|
run: script/lint-cpp -c
|
|
working-directory: ${{ env.esphome_directory }}
|
|
- name: Suggest changes
|
|
run: script/ci-suggest-changes
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
lint-python:
|
|
env:
|
|
esphome_directory: esphome
|
|
# Don't use the esphome-lint docker image because it may contain outdated requirements.
|
|
# This way, all dependencies are cached via the cache action.
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.9'
|
|
- name: Cache pip modules
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: esphome-pip-3.9-${{ hashFiles('setup.py') }}
|
|
restore-keys: |
|
|
esphome-pip-3.9-
|
|
|
|
- name: 💣Clone esphome project
|
|
run: git clone https://github.com/esphome/esphome.git
|
|
- name: 💣Copy component into the esphome project
|
|
run: |
|
|
cp -r ../components/* esphome/components/
|
|
git config user.name "ci"
|
|
git config user.email "ci@github.com"
|
|
git add .
|
|
git commit -a -m "Add external component"
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
- name: Set up python environment
|
|
run: VIRTUAL_ENV=false script/setup
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
- 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"
|
|
|
|
- name: Lint Custom
|
|
run: script/ci-custom.py -c
|
|
working-directory: ${{ env.esphome_directory }}
|
|
- name: Lint Python
|
|
run: script/lint-python -c
|
|
working-directory: ${{ env.esphome_directory }}
|
|
|
|
esphome-config:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: ⤵️ Check out configuration from GitHub
|
|
uses: actions/checkout@v2
|
|
- name: Setup Python 3.9
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip setuptools wheel
|
|
pip install esphome
|
|
pip list
|
|
esphome version
|
|
- name: Write secrets.yaml
|
|
shell: bash
|
|
run: 'echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > secrets.yaml'
|
|
- name: Write tests/secrets.yaml
|
|
shell: bash
|
|
run: 'echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > tests/secrets.yaml'
|
|
- run: |
|
|
esphome -s external_components_source components config esp32-ble-example-faker.yaml
|
|
- run: |
|
|
esphome -s external_components_source components config esp8266-solar-charger-example-faker.yaml
|
|
esphome -s external_components_source components config esp8266-charger-example-faker.yaml
|
|
esphome -s external_components_source components config esp8266-charging-converter-example-faker.yaml
|
|
esphome -s external_components_source components config esp8266-smart-shunt-example-faker.yaml
|
|
- run: |
|
|
esphome -s external_components_source ../components config tests/esp8266-fake-charger.yaml
|
|
esphome -s external_components_source ../components config tests/esp8266-fake-charging-converter.yaml
|
|
esphome -s external_components_source ../components config tests/esp8266-fake-solar-charger.yaml
|
|
|
|
esphome-compile:
|
|
runs-on: ubuntu-latest
|
|
needs: [esphome-config]
|
|
steps:
|
|
- name: ⤵️ Check out configuration from GitHub
|
|
uses: actions/checkout@v2
|
|
- name: Cache .esphome
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: .esphome
|
|
key: esphome-compile-esphome-${{ hashFiles('*.yaml') }}
|
|
restore-keys: esphome-compile-esphome-
|
|
- name: Cache .pioenvs
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: .pioenvs
|
|
key: esphome-compile-pioenvs-${{ hashFiles('*.yaml') }}
|
|
restore-keys: esphome-compile-pioenvs-
|
|
- name: Set up Python 3.9
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip setuptools wheel
|
|
pip install esphome
|
|
pip list
|
|
esphome version
|
|
- name: Register problem matchers
|
|
run: |
|
|
echo "::add-matcher::.github/workflows/matchers/gcc.json"
|
|
echo "::add-matcher::.github/workflows/matchers/python.json"
|
|
- name: Write secrets.yaml
|
|
shell: bash
|
|
run: 'echo -e "wifi_ssid: ssid\nwifi_password: password\nmqtt_host: host\nmqtt_username: username\nmqtt_password: password" > secrets.yaml'
|
|
- run: |
|
|
esphome -s external_components_source components compile esp32-ble-example-faker.yaml
|
|
- run: |
|
|
esphome -s external_components_source components compile esp8266-solar-charger-example-faker.yaml
|
|
esphome -s external_components_source components compile esp8266-charger-example-faker.yaml
|
|
esphome -s external_components_source components compile esp8266-charging-converter-example-faker.yaml
|
|
esphome -s external_components_source components compile esp8266-smart-shunt-example-faker.yaml
|