Files
repomix-mirror/.github/workflows/ci-website.yml
Kazuki Yamada b25f4446d8 test(server): Relocate server tests into website/server
intent(test-ownership): move tests into website/server/tests/ so they collocate with the code under test and stop reaching up through three parents; reviewer follow-up wanted dedicated coverage and the root vs. website/server package boundary makes collocation the right long-term layout
decision(vitest-config): give website/server its own vitest.config.ts + `test` script; root's existing tests/**/*.test.ts include no longer catches server tests since they moved outside that tree, so the two test runs stay independent
decision(tsconfig-test): add tsconfig.test.json extending the build config and lift lint-tsc to `-p tsconfig.test.json` — the build tsconfig's rootDir: "./src" excludes tests/, so a single lint command wouldn't have type-checked them
learned(valibot-instanceof): with tests now resolving valibot from the same website/server/node_modules as validateRequest, the cause-check can go back to `instanceof v.ValiError` — the duck-type workaround was only needed when the root harness and server pulled different valibot copies
constraint(ci-website): added a `test-website-server` job that links the local repomix build the same way lint-website-server does; tests don't actually import repomix today, but colocation means they easily could later and the link step keeps parity
2026-04-19 21:47:29 +09:00

124 lines
3.4 KiB
YAML

name: CI Website
on:
push:
branches: [main]
paths:
- 'website/**'
- 'src/**'
- 'package.json'
- 'package-lock.json'
- '.tool-versions'
- '.github/workflows/ci-website.yml'
pull_request:
branches: [main]
paths:
- 'website/**'
- 'src/**'
- 'package.json'
- 'package-lock.json'
- '.tool-versions'
- '.github/workflows/ci-website.yml'
workflow_dispatch:
permissions:
contents: read
jobs:
lint-website-client:
name: Lint Website Client
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .tool-versions
cache: npm
- name: Install website client dependencies
working-directory: website/client
run: npm ci
- name: Lint website client
working-directory: website/client
run: npm run lint
lint-website-server:
name: Lint Website Server
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .tool-versions
cache: npm
- name: Build and link local repomix
run: |
npm ci
npm run build
npm link
- name: Install website server dependencies
working-directory: website/server
run: |
npm ci
npm link repomix
- name: Lint website server
working-directory: website/server
run: npm run lint
test-website-server:
name: Test Website Server
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .tool-versions
cache: npm
- name: Build and link local repomix
run: |
npm ci
npm run build
npm link
- name: Install website server dependencies
working-directory: website/server
run: |
npm ci
npm link repomix
- name: Test website server
working-directory: website/server
run: npm run test
bundle-website-server:
name: Bundle Website Server
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version-file: .tool-versions
cache: npm
- name: Build and link local repomix
run: |
npm ci
npm run build
npm link
- name: Install website server dependencies
working-directory: website/server
run: |
npm ci
npm link repomix
- name: Bundle website server
working-directory: website/server
run: npm run bundle