2025-08-20 18:02:50 +09:00

89 lines
2.0 KiB
YAML

name: Test & Lint
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
env:
NODE_VERSION: '22'
PNPM_VERSION: '10.15.0'
jobs:
test:
name: Test & Lint
runs-on: ubuntu-latest
services:
postgres:
image: postgres:17
env:
POSTGRES_PASSWORD: test
POSTGRES_DB: portal_test
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:8-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Enable Corepack and install pnpm
run: |
corepack enable
corepack prepare pnpm@${{ env.PNPM_VERSION }} --activate
- name: Cache pnpm dependencies
uses: actions/cache@v4
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Type check
run: pnpm type-check
- name: Lint
run: pnpm lint
- name: Test shared package
run: pnpm --filter @customer-portal/shared run test
if: success() || failure()
- name: Test BFF package
run: pnpm --filter @customer-portal/bff run test
env:
DATABASE_URL: postgresql://postgres:test@localhost:5432/portal_test
REDIS_URL: redis://localhost:6379
if: success() || failure()
- name: Build applications
run: pnpm build
env:
NEXT_PUBLIC_API_BASE: http://localhost:4000
NEXT_PUBLIC_APP_NAME: Customer Portal Test