# The release checks of docs/RELEASING.md step 2 on every push and pull request to main (app 0.2.78). Both jobs run # tools/check.sh, the same script a release runs on a laptop, so CI and a local run can't drift apart. name: CI on: push: branches: [main] pull_request: branches: [main] permissions: contents: read concurrency: group: ci-${{ github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: checks: name: checks runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.13" # What the add-on image adds to ESPHome's (screen_manager/Dockerfile), Pillow for the camera tests (ESPHome # brings it in the image) and fontTools for tools/generate_icons.py. - name: Python packages run: python -m pip install 'aiohttp>=3.12,<4' PyYAML Pillow fonttools - uses: actions/setup-node@v4 with: node-version: 22 cache: npm cache-dependency-path: web/package-lock.json - name: clang run: clang++ --version || (sudo apt-get update && sudo apt-get install -y clang) - name: tools/check.sh run: bash tools/check.sh env: PYTHON: python CXX: clang++ firmware: name: firmware needs: checks runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.13" # The ESPHome the add-on ships and builds every screen's update with. - name: ESPHome version of the add-on id: esphome run: echo "version=$(sed -n 's|^FROM ghcr.io/esphome/esphome:||p' screen_manager/Dockerfile)" >> "$GITHUB_OUTPUT" - name: ESPHome run: python -m pip install "esphome==${{ steps.esphome.outputs.version }}" # PlatformIO's toolchains and ESP-IDF, and the two check builds (tools/check.sh builds under .esphome/check). - uses: actions/cache@v4 with: path: | ~/.platformio .esphome/check key: firmware-${{ runner.os }}-esphome-${{ steps.esphome.outputs.version }}-${{ hashFiles('home-like-2432s028.yaml', 'guition-4848s040.yaml', 'components/**') }} restore-keys: | firmware-${{ runner.os }}-esphome-${{ steps.esphome.outputs.version }}- - name: tools/check.sh --firmware run: bash tools/check.sh --firmware env: PYTHON: python