🗑️ chore: PushCommand 및 관련 코드 제거 #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" |