1+ name : CI
2+
3+ on :
4+ pull_request :
5+ branches : [main, dev, 'release/**']
6+ push :
7+ branches : [main, dev]
8+
9+ jobs :
10+ lint :
11+ name : Lint (eslint + prettier + tsc)
12+ runs-on : ubuntu-latest
13+ steps :
14+ - uses : actions/checkout@v4
15+ - uses : actions/setup-node@v4
16+ with :
17+ node-version : ' 24'
18+ cache : ' pnpm'
19+ - uses : pnpm/action-setup@v4
20+ with :
21+ version : 9
22+ - run : pnpm install --frozen-lockfile
23+ - run : pnpm run lint
24+ - run : pnpm run format:check
25+ - run : pnpm run typecheck
26+
27+ test :
28+ name : Test (vitest + coverage)
29+ runs-on : ubuntu-latest
30+ steps :
31+ - uses : actions/checkout@v4
32+ - uses : actions/setup-node@v4
33+ with :
34+ node-version : ' 24'
35+ cache : ' pnpm'
36+ - uses : pnpm/action-setup@v4
37+ with : { version: 9 }
38+ - run : pnpm install --frozen-lockfile
39+ - run : pnpm run test:cov
40+ - uses : actions/upload-artifact@v4
41+ with : { name: coverage, path: coverage/ }
42+
43+ secrets :
44+ name : Secrets scan
45+ runs-on : ubuntu-latest
46+ steps :
47+ - uses : actions/checkout@v4
48+ with : { fetch-depth: 0 }
49+ - uses : gitleaks/gitleaks-action@v2
50+ env :
51+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52+
53+ vuln-scan :
54+ name : Vuln scan
55+ runs-on : ubuntu-latest
56+ steps :
57+ - uses : actions/checkout@v4
58+ - uses : actions/setup-node@v4
59+ with :
60+ node-version : ' 24'
61+ cache : ' pnpm'
62+ - uses : pnpm/action-setup@v4
63+ with : { version: 9 }
64+ - run : pnpm install --frozen-lockfile
65+ - run : pnpm audit --prod --audit-level=high
66+ - uses : aquasecurity/trivy-action@master
67+ with :
68+ scan-type : ' fs'
69+ scan-ref : ' .'
70+ format : ' sarif'
71+ output : ' trivy.sarif'
72+ - uses : github/codeql-action/upload-sarif@v3
73+ if : always()
74+ with : { sarif_file: trivy.sarif }
0 commit comments