diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 4399db68..26275382 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -125,15 +125,14 @@ jobs: - name: Build run: cd frontend && NODE_OPTIONS="--max-old-space-size=4096" npm run build - - name: Upload build artifact - uses: actions/upload-artifact@v3 - with: - name: frontend-dist - path: frontend/dist - retention-days: 1 + # Build artifact intentionally NOT uploaded. The e2e job below builds + # its own frontend rather than downloading one from this job, so there + # is no need for the cross-job artifact handoff (which previously broke + # on actions/upload-artifact@v4 GHES support and forced a v3 pin). + # Decoupling also lets e2e start immediately rather than waiting for + # this job to finish — important on a multi-runner setup. e2e: - needs: [frontend] runs-on: ubuntu-latest services: @@ -188,11 +187,13 @@ jobs: - name: Install frontend dependencies run: cd frontend && npm ci - - name: Download frontend build - uses: actions/download-artifact@v3 - with: - name: frontend-dist - path: frontend/dist + - name: Build frontend + # Building inline (instead of downloading an artifact from the + # frontend job) drops the cross-job dependency, so e2e can start + # immediately on a free runner. Adds ~1-2 min of build time, but + # eliminates the artifact-upload mechanism entirely (no more + # v3/v4 GHES headaches) and saves ~5 min of waiting. + run: cd frontend && NODE_OPTIONS="--max-old-space-size=4096" npm run build - name: Install Playwright browser run: cd frontend && npx playwright install --with-deps chromium