-
Notifications
You must be signed in to change notification settings - Fork 569
141 lines (122 loc) · 3.45 KB
/
ci.yml
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
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: "CI"
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
schedule:
- cron: "15 21 * * 0"
jobs:
analyze:
name: Analyze
runs-on: "ubuntu-latest"
timeout-minutes: 360
permissions:
security-events: write
actions: read
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: "javascript-typescript"
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:javascript-typescript"
eslint:
name: lint:eslint
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- run: npm ci
- name: Run ESLint
run: npm run lint:eslint -- --format @microsoft/eslint-formatter-sarif --output-file eslint-results.sarif
continue-on-error: true
- name: Upload analysis results to GitHub
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: eslint-results.sarif
wait-for-processing: true
prettier:
name: lint:prettier
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- run: npm ci
- name: Run Prettier
uses: creyD/[email protected]
with:
dry: true
prettier_version: "npm:@btmills/[email protected]"
prettier_options: --check src/**/*.ts --config ./.prettierrc
vitest:
name: test:coverage
runs-on: ubuntu-latest
permissions:
checks: write
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- run: npm ci
- name: Run Vitest
run: npm run test:coverage
continue-on-error: true
- name: Code Coverage Summary Report
uses: irongut/[email protected]
if: always()
with:
filename: coverage/**/cobertura-coverage.xml
badge: true
format: markdown
output: both
- name: Publish Test Report
uses: mikepenz/action-junit-report@v4
if: always()
- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: ${{ always() && github.event_name == 'pull_request' }}
with:
recreate: true
path: code-coverage-results.md
build:
needs: [eslint, prettier, vitest]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
cache: "npm"
- run: npm ci
- run: npm run build --if-present
- name: Test ESModule build
run: cd test && ./test.sh js
- name: Test CommonJS build
run: cd test && ./test.sh cjs