Feat: expose climate preconditioning status as a Homey capability #40
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - develop | |
| - 'feat/**' | |
| pull_request: | |
| branches: | |
| - main | |
| - develop | |
| jobs: | |
| build-and-test: | |
| name: Build and Test | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node-version: [16.x, 18.x, 22.x] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| # TODO: Remove when Node.js 16 support is dropped (Homey Pro 2016-2019 EOL) | |
| # Workaround for ts-jest peer dependency resolution issue on Node.js 16 in CI | |
| - name: Workaround for ts-jest peer deps on Node 16 | |
| if: matrix.node-version == '16.x' | |
| run: npm install --save-dev jest-util@^29.0.0 | |
| - name: Build project | |
| run: npm run build | |
| - name: Run tests with coverage | |
| run: npm run test:coverage | |
| - name: Upload coverage to Codecov | |
| if: matrix.node-version == '22.x' | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage/lcov.info | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false | |
| lint-formatting: | |
| name: Linting and Formatting | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22.x' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Validate formatting and linting | |
| run: npm run validate | |
| build-homey-app: | |
| name: Build Homey App | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js 18 (for Homey CLI) | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18.x' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Install Homey CLI | |
| run: npm install -g homey | |
| - name: Build Homey app | |
| run: homey app build | |
| - name: Validate app.json | |
| run: homey app validate | |
| - name: Upload build artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: homey-app-build | |
| path: | | |
| build/ | |
| app.json | |
| retention-days: 7 | |
| status-check: | |
| name: All Checks Passed | |
| runs-on: ubuntu-latest | |
| needs: [build-and-test, lint-formatting, build-homey-app] | |
| if: always() | |
| steps: | |
| - name: Check build status | |
| if: needs.build-and-test.result != 'success' | |
| run: exit 1 | |
| - name: Check markdown lint status | |
| if: needs.lint-formatting.result != 'success' | |
| run: exit 1 | |
| - name: Check Homey build status | |
| if: needs.build-homey-app.result != 'success' | |
| run: exit 1 | |
| - name: All checks passed | |
| run: echo "✅ All CI checks passed successfully!" |