name: CI / Deploy on: push: paths: - "app/**" pull_request: paths: - "app/**" jobs: lint: name: Lint & Type Check runs-on: ubuntu-latest env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: app/.nvmrc cache: yarn cache-dependency-path: app/yarn.lock - name: Install dependencies run: yarn install --frozen-lockfile working-directory: app - name: Prettier run: npx prettier --check . working-directory: app - name: ESLint run: yarn lint --max-warnings 0 working-directory: app - name: Type check run: yarn type-check working-directory: app deploy: name: Build & Deploy needs: lint if: github.ref == 'refs/heads/cloudflare' && github.event_name == 'push' runs-on: ubuntu-latest env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: app/.nvmrc cache: yarn cache-dependency-path: app/yarn.lock - name: Install dependencies run: yarn install --frozen-lockfile working-directory: app - name: Build run: yarn cf-build working-directory: app env: NEXT_PUBLIC_TURNSTILE_SITE_KEY: ${{ secrets.NEXT_PUBLIC_TURNSTILE_SITE_KEY }} - name: Deploy run: yarn cf-deploy working-directory: app env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}