name: CI — Common Platform on: push: branches: [main] pull_request: branches: [main] # Cancel in-progress runs for the same branch/PR concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build-and-test: name: Build, Test & Typecheck runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Get pnpm store directory shell: bash run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm dependencies uses: actions/cache@v4 with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build all packages and services run: pnpm build - name: Typecheck run: pnpm typecheck - name: Run tests run: pnpm test - name: Lint run: pnpm lint # Per-package test breakdown (runs in parallel with main job) package-tests: name: Package Tests runs-on: ubuntu-latest timeout-minutes: 10 strategy: fail-fast: false matrix: package: - errors - cosmos - config - auth - api-client - react-auth - fastify-core - design-tokens - testing steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Get pnpm store directory shell: bash run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm dependencies uses: actions/cache@v4 with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build (packages depend on each other) run: pnpm build - name: Test @bytelyst/${{ matrix.package }} run: pnpm --filter @bytelyst/${{ matrix.package }} test service-tests: name: Service Tests runs-on: ubuntu-latest timeout-minutes: 10 strategy: fail-fast: false matrix: service: - platform-service - billing-service - growth-service - tracker-service steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10 - name: Get pnpm store directory shell: bash run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm dependencies uses: actions/cache@v4 with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build run: pnpm build - name: Test @lysnrai/${{ matrix.service }} run: pnpm --filter @lysnrai/${{ matrix.service }} test