name: CI on: push: branches: - dev - master pull_request: branches: - dev - master env: NODE_OPTIONS: --max_old_space_size=6144 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: contents: read jobs: lint: name: Lint and check format runs-on: ubuntu-latest steps: - name: Check out files from GitHub uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version-file: ".nvmrc" cache: yarn - name: Install dependencies run: yarn install --immutable - name: Check for duplicate dependencies run: yarn dedupe --check - name: Build resources run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data gather-gallery-pages - name: Setup lint cache uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: | node_modules/.cache/prettier node_modules/.cache/eslint node_modules/.cache/typescript key: lint-${{ github.sha }} restore-keys: lint- - name: Run eslint run: yarn run lint:eslint --quiet - name: Run tsc run: yarn run lint:types - name: Run lit-analyzer run: yarn run lint:lit --quiet - name: Run prettier run: yarn run lint:prettier - name: Check dependency licenses run: yarn run lint:licenses test: name: Run tests runs-on: ubuntu-latest steps: - name: Check out files from GitHub uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version-file: ".nvmrc" cache: yarn - name: Install dependencies run: yarn install --immutable - name: Build resources run: ./node_modules/.bin/gulp gen-icons-json build-translations build-locale-data - name: Run Tests run: yarn run test build: name: Build frontend needs: [lint, test] runs-on: ubuntu-latest steps: - name: Check out files from GitHub uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version-file: ".nvmrc" cache: yarn - name: Install dependencies run: yarn install --immutable - name: Build Application run: ./node_modules/.bin/gulp build-app env: IS_TEST: "true" - name: Upload bundle stats uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: frontend-bundle-stats path: build/stats/*.json if-no-files-found: error - name: Upload frontend build uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: frontend-build path: hass_frontend/ if-no-files-found: error retention-days: 7