Known Bun bug (oven-sh/bun#1590, #26879, #18864) causes
IntegrityCheckFailed during tarball extraction in Docker/CI.
This is a 3+ year old issue with no fix in sight.
Changes:
- Generate package-lock.json via npm install --package-lock-only
- Dockerfile: add nodejs npm to all stages, replace bun install
with npm ci --legacy-peer-deps (peer dep conflict exists for
eslint@8 with eslint-config-next@16)
- Keep bun as runtime (bun test, bun run build, bun run start)
- pr.yml: npm ci, npx prisma generate, npx playwright
- release.yml: node scripts, npm test
- build-ci-images.yml: add package-lock.json trigger path
## Summary
- Fix `isProductionDatabase()` to allow CI database (`euchre_camp_ci`)
- Add database schema reset before CI test runs
- Create `global.teardown.ts` for cleanup (CI: full reset, dev/prod: selective cleanup)
- Add `acceptance-tests` job to PR workflow with CI database
- Create `sync-prod-to-dev.js` script for one-way prod→dev sync
- Add `just` recipes: `sync-dev`, `test-prod`, `reset-ci-db`
- Store credentials in `.credentials` (gitignored) with unique CI user
## Testing
Verified against CI database:
- Schema reset works
- Migrations apply correctly
- Test users created successfully
- 219 tests pass (slow but working)
## Next Steps
- Set `CI_DATABASE_URL` as Gitea repository variable
Reviewed-on: #35
Co-authored-by: David Gwilliam <dhgwilliam@gmail.com>
Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
- Create Dockerfile.ci-base with Bun, Node.js, and Playwright pre-installed
- Add build-ci-images workflow that triggers on package.json changes
- Update PR workflow to use custom ci-base image instead of GitHub Actions
- Update Release workflow to use custom ci-base image
- Remove dependency on oven/setup-bun@v2 GitHub Action
- Remove dependency on docker/setup-buildx-action GitHub Action
- Images are automatically built when dependencies in package.json update
- Weekly scheduled rebuild ensures tools stay current
This resolves the 'authentication required: Repository not found' error
when Gitea Actions tries to clone GitHub Actions from external repositories.