name: 'Deploy local.promptfoo.app' on: push: branches: ['main'] paths: - 'src/app/**' # Only trigger on changes to frontend code permissions: contents: read jobs: deploy: name: Deploy to Cloudflare Pages timeout-minutes: 5 runs-on: ubuntu-latest permissions: contents: read deployments: write env: VITE_PROMPTFOO_LAUNCHER: true CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} steps: - name: Checkout repo uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6 - name: Use Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: node-version-file: '.nvmrc' package-manager-cache: false # Node 24 ships with npm 11.6.2 which has a lockfile compatibility bug (npm/cli#8669). # Pinned exact (not @latest): npm 12.0.0 blocks postinstall scripts not covered by # allowScripts, which silently skips e.g. the Playwright browser download. - name: Upgrade npm run: npm install -g npm@11.18.0 - name: Install Dependencies run: npm ci - name: Build run: npm run build:app - name: Deploy to Cloudflare uses: cloudflare/wrangler-action@9acf94ace14e7dc412b076f2c5c20b8ce93c79cd # v3 with: apiToken: ${{ env.CLOUDFLARE_API_TOKEN }} accountId: ${{ env.CLOUDFLARE_ACCOUNT_ID }} command: pages deploy dist/src/app/ --project-name=promptfoo-launcher