fix: enable npm publishing for both release and workflow_dispatch tri… #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: Continuous Integration | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| jobs: | |
| test: | |
| name: Test on Node.js ${{ matrix.node-version }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| node-version: [18, 20, 22] | |
| 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: Run linting (if available) | |
| run: | | |
| if npm run lint --silent 2>/dev/null; then | |
| npm run lint | |
| else | |
| echo "No linting script found, skipping..." | |
| fi | |
| continue-on-error: true | |
| - name: Run core tests (CI-safe) | |
| run: npm run test:ci | |
| - name: Run test coverage | |
| run: npm run test:ci:coverage | |
| if: matrix.node-version == 18 | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| if: matrix.node-version == 18 | |
| with: | |
| file: ./coverage/lcov.info | |
| flags: unittests | |
| name: codecov-umbrella | |
| continue-on-error: true | |
| build: | |
| name: Build Package | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build TypeScript | |
| run: npm run build | |
| - name: Verify build output | |
| run: | | |
| echo "Build directory contents:" | |
| ls -la build/ | |
| echo "Verifying main entry point..." | |
| node -e " | |
| try { | |
| require('./build/server.js'); | |
| console.log('✅ Build verification: SUCCESS'); | |
| } catch (error) { | |
| console.error('❌ Build verification: FAILED'); | |
| console.error(error.message); | |
| process.exit(1); | |
| } | |
| " | |
| - name: Test package installation | |
| run: | | |
| npm pack | |
| PACKAGE_FILE=$(ls *.tgz) | |
| echo "Testing package installation: $PACKAGE_FILE" | |
| mkdir test-install && cd test-install | |
| npm init -y | |
| npm install ../$PACKAGE_FILE | |
| echo "✅ Package installation test: SUCCESS" | |
| security: | |
| name: Security Audit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run security audit | |
| run: npm audit --audit-level=moderate | |
| - name: Check for known vulnerabilities | |
| run: | | |
| if npm audit --audit-level=high --json | jq '.vulnerabilities | length' | grep -q '^0$'; then | |
| echo "✅ No high-severity vulnerabilities found" | |
| else | |
| echo "❌ High-severity vulnerabilities detected" | |
| npm audit --audit-level=high | |
| exit 1 | |
| fi | |
| continue-on-error: true |