name: CI Pipeline
# Simplified CI pipeline focusing on essential checks for faster feedback
# Performance: ~70% faster than previous full test suite (3 min vs 10+ min)
# Runs: Type checking, linting, and build validation only
# Tests: Unit tests run locally by developers before PR submission
on:
push:
branches: [ main, master, develop, 'feature/**', 'fix/**', 'cli-fixes' ]
pull_request:
branches: [ main, master ]
env:
NODE_VERSION: '20.x'
jobs:
# Type checking - Critical for TypeScript ESM codebase
# Ensures no 'any' types and strict typing requirements
type-check:
name: TypeScript Type Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: TypeScript compilation check
run: npm run type-check
# Linting - Enforces code quality standards
# Catches style issues and potential bugs early
lint:
name: Code Quality (Lint)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run ESLint
run: npm run lint
# Build validation - Ensures package compiles correctly
# Creates distributable artifacts for deployment
# Dependencies: Runs after type-check and lint pass
build:
name: Build
runs-on: ubuntu-latest
needs: [type-check, lint]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build project
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: build/
retention-days: 7