Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: CI

on:
push:
branches: [ main, develop, "release/*", "feature/*" ]
pull_request:
branches: [ main, develop ]

jobs:
build-and-test:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.x, 20.x, 22.x]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Lint check
run: |
npm run lint --workspace=packages/core
npm run lint --workspace=packages/prisma-integration

- name: TypeScript compilation check
run: |
npm run build --workspace=packages/core
npm run build --workspace=packages/prisma-integration

- name: Run unit tests (excluding Docker-dependent tests)
run: |
npm run test --workspace=packages/core
npm run test --workspace=packages/prisma-integration

- name: Run coverage tests
run: |
npm run coverage --workspace=packages/core
npm run coverage --workspace=packages/prisma-integration
if: matrix.node-version == '20.x'
continue-on-error: true

- name: Upload coverage reports
uses: codecov/codecov-action@v4
if: matrix.node-version == '20.x'
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/*/coverage/lcov.info
fail_ci_if_error: false
verbose: true
continue-on-error: true

package-tests:
runs-on: ubuntu-latest

strategy:
matrix:
package: [core, prisma-integration]
node-version: [20.x]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build ${{ matrix.package }} package
run: npm run build --workspace=packages/${{ matrix.package }}

- name: Test ${{ matrix.package }} package
run: npm run test --workspace=packages/${{ matrix.package }}

- name: Lint ${{ matrix.package }} package
run: npm run lint --workspace=packages/${{ matrix.package }}

benchmark:
runs-on: ubuntu-latest
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/'))

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build core package
run: npm run build:core

- name: Run benchmarks
run: npm run benchmark --workspace=packages/core
continue-on-error: true
69 changes: 69 additions & 0 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Integration Tests

on:
workflow_dispatch: # Manual trigger only for now
# Temporarily disabled for PR testing
# push:
# branches: [ main, develop ]
# pull_request:
# branches: [ main, develop ]

jobs:
integration-tests:
runs-on: ubuntu-latest

services:
postgres:
image: postgres:15
env:
POSTGRES_USER: demo_user
POSTGRES_PASSWORD: demo_password
POSTGRES_DB: prisma_comparison_demo
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build packages
run: npm run build

- name: Setup integration test environment
working-directory: ./examples/prisma-comparison-demo
env:
DATABASE_URL: postgresql://demo_user:demo_password@localhost:5432/prisma_comparison_demo
run: |
npm install
npx prisma generate
npx prisma db push
npx prisma db seed

- name: Run integration tests
working-directory: ./examples/prisma-comparison-demo
env:
DATABASE_URL: postgresql://demo_user:demo_password@localhost:5432/prisma_comparison_demo
run: |
npm test

- name: Upload test reports
uses: actions/upload-artifact@v4
if: always()
with:
name: integration-test-reports
path: ./examples/prisma-comparison-demo/reports/
retention-days: 30
60 changes: 60 additions & 0 deletions .github/workflows/pr-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: PR Check

on:
pull_request:
branches: [ main, develop ]

jobs:
quick-check:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Lint check
run: npm run lint

- name: TypeScript compilation check
run: npm run build

- name: Run unit tests (core)
run: npm run test --workspace=packages/core

- name: Run unit tests (prisma-integration)
run: npm run test --workspace=packages/prisma-integration

validate-packages:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Check package.json validity
run: |
npm run build:core
cd packages/core && npm pack --dry-run

- name: Check prisma-integration package
run: |
npm run build --workspace=packages/prisma-integration
cd packages/prisma-integration && npm pack --dry-run
Loading
Loading