name: CI run-name: CI (${{ gitea.ref_name }}) on: push: branches: [main, master, develop] pull_request: branches: [main, master] jobs: lint-and-typecheck: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 - name: Cache node_modules uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install dependencies run: npm ci - name: Svelte check (type checking) run: npm run check - name: Lint (if configured) run: npx svelte-check --tsconfig ./tsconfig.json continue-on-error: true build-frontend: runs-on: ubuntu-latest needs: [lint-and-typecheck] steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 - name: Cache node_modules uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install dependencies run: npm ci - name: Build frontend (Vite) run: npx vite build - name: Upload dist artifact uses: actions/upload-artifact@v4 with: name: frontend-dist path: dist/ retention-days: 7