diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72a2ef6..489f8ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI — Lint, Typecheck, Test +name: CI on: push: @@ -6,19 +6,64 @@ on: pull_request: branches: [main] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: - ci: + backend: + name: Backend — typecheck + test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Checkout common-plat (for @bytelyst/* packages) + uses: actions/checkout@v4 + with: + repository: saravanakumardb1/learning_ai_common_plat + path: learning_ai_common_plat + token: ${{ secrets.GH_PAT }} + + - uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Install pnpm (for common-plat build) + run: npm install -g pnpm + + - name: Build @bytelyst/* packages + working-directory: learning_ai_common_plat + run: | + pnpm install --frozen-lockfile + pnpm build + + - name: Install backend dependencies + working-directory: backend + run: npm ci + + - name: Backend typecheck + working-directory: backend + run: npm run typecheck + + - name: Backend tests + working-directory: backend + run: npm test + env: + DB_PROVIDER: memory + JWT_SECRET: ci-test-secret-at-least-32-characters-long + + web: + name: Web — typecheck + lint + test runs-on: ubuntu-latest defaults: run: working-directory: web - steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: npm cache-dependency-path: web/package-lock.json