Skip to content

🗑️ chore: PushCommand 및 관련 코드 제거 #4

🗑️ chore: PushCommand 및 관련 코드 제거

🗑️ chore: PushCommand 및 관련 코드 제거 #4

name: Push Module CI/CD
on:
push:
branches: [main, develop]
paths:
- 'src/modules/push/**'
- '.github/workflows/push-module-ci.yml'
pull_request:
branches: [main, develop]
paths:
- 'src/modules/push/**'
env:
NODE_VERSION: '18'
PNPM_VERSION: '8'
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run ESLint
run: pnpm run lint src/modules/push
- name: Run TypeScript check
run: pnpm run typecheck
test-unit:
name: Unit Tests
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run unit tests
run: pnpm run test:run src/modules/push/services src/modules/push/commands
- name: Generate coverage report
run: pnpm run test:coverage src/modules/push
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage/lcov.info
flags: push-module
name: push-module-coverage
test-integration:
name: Integration Tests
runs-on: ubuntu-latest
needs: lint
env:
SUPABASE_URL: ${{ secrets.TEST_SUPABASE_URL }}
SUPABASE_ANON_KEY: ${{ secrets.TEST_SUPABASE_ANON_KEY }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run integration tests
run: pnpm run test:run src/modules/push/tests/*.integration.spec.ts
if: env.SUPABASE_URL != ''
- name: Skip integration tests (no Supabase credentials)
run: echo "Skipping integration tests - no Supabase test credentials"
if: env.SUPABASE_URL == ''
test-security:
name: Security Tests
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run security tests
run: pnpm run test:run src/modules/push/tests/*.security.spec.ts
- name: Run npm audit
run: pnpm audit --audit-level=high
continue-on-error: true
- name: Run OWASP dependency check
uses: dependency-check/Dependency-Check_Action@main
with:
project: 'taptik-cli-push-module'
path: '.'
format: 'HTML'
continue-on-error: true
test-performance:
name: Performance Tests
runs-on: ubuntu-latest
needs: [test-unit, test-integration]
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run performance tests
run: pnpm run test:run src/modules/push/tests/*.performance.spec.ts
timeout-minutes: 10
- name: Store performance results
uses: actions/upload-artifact@v3
with:
name: performance-results
path: test-results.json
test-e2e:
name: E2E Tests
runs-on: ubuntu-latest
needs: [test-unit, test-integration]
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build project
run: pnpm run build
- name: Run E2E tests
run: pnpm run test:run src/modules/push/tests/*.e2e.spec.ts
timeout-minutes: 15
build:
name: Build
runs-on: ubuntu-latest
needs: [test-unit, test-integration, test-security]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build project
run: pnpm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/
quality-gate:
name: Quality Gate
runs-on: ubuntu-latest
needs: [lint, test-unit, test-integration, test-security, build]
if: always()
steps:
- name: Check quality gates
run: |
if [[ "${{ needs.lint.result }}" != "success" ]]; then
echo "❌ Linting failed"
exit 1
fi
if [[ "${{ needs.test-unit.result }}" != "success" ]]; then
echo "❌ Unit tests failed"
exit 1
fi
if [[ "${{ needs.test-security.result }}" != "success" ]]; then
echo "❌ Security tests failed"
exit 1
fi
if [[ "${{ needs.build.result }}" != "success" ]]; then
echo "❌ Build failed"
exit 1
fi
echo "✅ All quality gates passed"