name: CI on: push: branches: [main] pull_request: branches: [main] jobs: server: name: Server — typecheck & build runs-on: ubuntu-latest defaults: run: working-directory: server steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: server/package-lock.json - name: Install dependencies run: npm ci - name: Generate Prisma client run: npx prisma generate - name: Typecheck run: npx tsc --noEmit - name: Build run: npm run build client: name: Client — typecheck & build runs-on: ubuntu-latest defaults: run: working-directory: client steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: client/package-lock.json - name: Install dependencies run: npm ci - name: Typecheck run: npx tsc --noEmit - name: Build run: npm run build docker: name: Docker build (smoke test) runs-on: ubuntu-latest needs: [server, client] steps: - uses: actions/checkout@v4 - name: Build image run: | docker build \ --build-arg NODE_ENV=production \ -t vendor-pos:ci .