name: "[Quality] Code Analysis" permissions: contents: read on: pull_request: branches: ["*"] push: branches: ["main"] merge_group: concurrency: group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} # You can leverage Vercel Remote Caching with Turbo to speed up your builds # @link https://turborepo.org/docs/core-concepts/remote-caching#remote-caching-on-vercel-builds env: FORCE_COLOR: 3 TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ vars.TURBO_TEAM }} jobs: lint: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Copy env shell: bash run: cp .env.example .env - name: Lint run: pnpm lint && pnpm lint:ws format: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Format run: pnpm format typecheck: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Typecheck run: turbo typecheck test: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Test run: pnpm test - name: "Report Coverage" # Set if: always() to also generate the report if tests are failing # Only works if you set `reportOnFailure: true` in your vite config as specified above if: always() uses: davelosert/vitest-coverage-report-action@v2 e2e: runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Build docker image id: build-docker-image uses: docker/build-push-action@v6 with: platforms: linux/amd64 context: . push: false tags: homarr-e2e network: host env: SKIP_ENV_VALIDATION: true - name: Install playwright browsers run: pnpm exec playwright install chromium - name: Run E2E Tests shell: bash run: pnpm test:e2e build: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Setup uses: ./tooling/github/setup - name: Copy env shell: bash run: cp .env.example .env - name: Build run: pnpm build