-
-
Notifications
You must be signed in to change notification settings - Fork 0
147 lines (116 loc) · 3.27 KB
/
ci.yml
File metadata and controls
147 lines (116 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: CI
on:
push:
branches:
- main
- develop
pull_request:
branches:
- main
- develop
jobs:
test:
name: Test (Node ${{ matrix.node }} on ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node: [18, 20, 22]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Setup Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Run linter
run: pnpm run lint
- name: Run type checking
run: pnpm run typecheck
- name: Run tests
run: pnpm test
- name: Upload coverage to Codecov
if: matrix.os == 'ubuntu-latest' && matrix.node == '20'
uses: codecov/codecov-action@v3
with:
files: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
quality:
name: Quality Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Run full validation
run: pnpm run validate
- name: Check package size
run: pnpm run size-check
- name: Build package
run: pnpm run build
- name: Verify build output
run: |
if [ ! -f "dist/bin/multi-shop.js" ]; then
echo "Error: CLI binary not built"
exit 1
fi
if [ ! -f "dist/lib/index.js" ]; then
echo "Error: Main library not built"
exit 1
fi
echo "Build verification passed"
security:
name: Security Audit
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build package (for audit command)
run: pnpm run build
- name: Run multi-shop security audit
run: node dist/bin/multi-shop.js audit --json > security-audit-report.json || true
- name: Display audit report
run: node dist/bin/multi-shop.js audit || true
- name: Upload audit report
uses: actions/upload-artifact@v4
if: always()
with:
name: security-audit-report
path: security-audit-report.json
- name: Run npm security audit
run: pnpm run security:audit
continue-on-error: true
- name: Check for outdated dependencies
run: pnpm run security:outdated
continue-on-error: true