-
Notifications
You must be signed in to change notification settings - Fork 126
131 lines (109 loc) · 3.27 KB
/
ci.yml
File metadata and controls
131 lines (109 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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.cjs');
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