name: Build frontend on: push: paths: - app/** - package.json - pnpm-lock.yaml - pnpm-workspace.yaml - .github/workflows/frontend.yml pull_request: paths: - app/** - package.json - pnpm-lock.yaml - pnpm-workspace.yaml - .github/workflows/frontend.yml workflow_dispatch: env: DATABASE_URL: "file:./data.db" jobs: check: name: Checks runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v6 - name: Install latest version of corepack run: npm i -g --force corepack && corepack enable - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 24.x cache: "pnpm" - name: Install dependencies run: pnpm --filter app install --frozen-lockfile - name: Check types working-directory: app run: pnpm run check - name: Check lint working-directory: app run: pnpm run lint:check - name: Check formatting working-directory: app run: pnpm run format:check migrations: name: Check migrations runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v6 - name: Install latest version of corepack run: npm i -g --force corepack && corepack enable - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 24.x cache: "pnpm" - name: Install dependencies run: pnpm --filter app install --frozen-lockfile - name: Run migrations locally uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} wranglerVersion: 4.87.0 packageManager: pnpm command: d1 migrations apply compiles-at-database --local workingDirectory: app deploy: name: Build & deploy runs-on: ubuntu-latest needs: [check, migrations] if: github.ref == 'refs/heads/main' env: BASE_URL: "https://compiles.at" steps: - name: Checkout sources uses: actions/checkout@v6 - name: Install latest version of corepack run: npm i -g --force corepack && corepack enable - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: 24.x cache: "pnpm" - name: Install dependencies run: pnpm --filter app install --frozen-lockfile - name: Build app working-directory: app run: pnpm run build - name: Migrations uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} wranglerVersion: 4.87.0 packageManager: pnpm command: d1 migrations apply compiles-at-database --remote workingDirectory: app - name: Deploy uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} wranglerVersion: 4.87.0 packageManager: pnpm workingDirectory: app secrets: | SESSION_SECRET ENCRYPTION_KEY env: SESSION_SECRET: ${{ secrets.SESSION_SECRET }} ENCRYPTION_KEY: ${{ secrets.ENCRYPTION_KEY }}