1
1
name : ci
2
2
3
3
on :
4
- - pull_request
5
- - push
4
+ push :
5
+ branches :
6
+ - ' v2'
7
+ paths-ignore :
8
+ - ' *.md'
9
+ pull_request :
10
+ branches :
11
+ - ' v2'
12
+ paths-ignore :
13
+ - ' *.md'
14
+
15
+ permissions :
16
+ contents : read
17
+
18
+ # Cancel in progress workflows
19
+ # in the scenario where we already had a run going for that PR/branch/tag but then triggered a new run
20
+ concurrency :
21
+ group : " ${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
22
+ cancel-in-progress : true
6
23
7
24
jobs :
25
+ lint :
26
+ name : Lint
27
+ runs-on : ubuntu-latest
28
+ steps :
29
+ - uses : actions/checkout@v4
30
+ - name : Setup Node.js
31
+ uses : actions/setup-node@v4
32
+ with :
33
+ node-version : ' lts/*'
34
+
35
+ - name : Install dependencies
36
+ run : npm install --ignore-scripts --include=dev
37
+
38
+ - name : Run lint
39
+ run : npm run lint
40
+
8
41
test :
9
42
runs-on : ubuntu-latest
10
43
strategy :
44
+ fail-fast : false
11
45
matrix :
12
- name :
13
- - Node.js 0.8
14
- - Node.js 0.10
15
- - Node.js 0.12
16
- - io.js 1.x
17
- - io.js 2.x
18
- - io.js 3.x
19
- - Node.js 4.x
20
- - Node.js 5.x
21
- - Node.js 6.x
22
- - Node.js 7.x
23
- - Node.js 8.x
24
- - Node.js 9.x
25
- - Node.js 10.x
26
- - Node.js 11.x
27
- - Node.js 12.x
28
- - Node.js 13.x
29
- - Node.js 14.x
30
- - Node.js 15.x
31
- - Node.js 16.x
32
- - Node.js 17.x
33
- - Node.js 18.x
34
- - Node.js 19.x
35
- - Node.js 20.x
36
- - Node.js 21.x
37
-
38
- include :
39
- - name : Node.js 0.8
40
- node-version : " 0.8"
41
- npm-i : mocha@2.5.3 supertest@1.1.0
42
- npm-rm : nyc
43
-
44
- - name : Node.js 0.10
45
- node-version : " 0.10"
46
- npm-i : mocha@2.5.3 nyc@10.3.2 supertest@2.0.0
47
-
48
- - name : Node.js 0.12
49
- node-version : " 0.12"
50
- npm-i : mocha@2.5.3 nyc@10.3.2 supertest@2.0.0
51
-
52
- - name : io.js 1.x
53
- node-version : " 1.8"
54
- npm-i : mocha@2.5.3 nyc@10.3.2 supertest@2.0.0
55
-
56
- - name : io.js 2.x
57
- node-version : " 2.5"
58
- npm-i : mocha@2.5.3 nyc@10.3.2 supertest@2.0.0
59
-
60
- - name : io.js 3.x
61
- node-version : " 3.3"
62
- npm-i : mocha@2.5.3 nyc@10.3.2 supertest@2.0.0
63
-
64
- - name : Node.js 4.x
65
- node-version : " 4.9"
66
- npm-i : mocha@5.2.0 nyc@11.9.0 supertest@3.4.2
67
-
68
- - name : Node.js 5.x
69
- node-version : " 5.12"
70
- npm-i : mocha@5.2.0 nyc@11.9.0 supertest@3.4.2
71
-
72
- - name : Node.js 6.x
73
- node-version : " 6.17"
74
- npm-i : mocha@6.2.2 nyc@14.1.1 supertest@6.1.6
75
-
76
- - name : Node.js 7.x
77
- node-version : " 7.10"
78
- npm-i : mocha@6.2.2 nyc@14.1.1 supertest@6.1.6
79
-
80
- - name : Node.js 8.x
81
- node-version : " 8.17"
82
- npm-i : mocha@7.2.0 nyc@14.1.1
83
-
84
- - name : Node.js 9.x
85
- node-version : " 9.11"
86
- npm-i : mocha@7.2.0 nyc@14.1.1
87
-
88
- - name : Node.js 10.x
89
- node-version : " 10.24"
90
- npm-i : mocha@8.4.0
91
-
92
- - name : Node.js 11.x
93
- node-version : " 11.15"
94
- npm-i : mocha@8.4.0
95
-
96
- - name : Node.js 12.x
97
- node-version : " 12.22"
98
- npm-i : mocha@9.2.2
99
-
100
- - name : Node.js 13.x
101
- node-version : " 13.14"
102
- npm-i : mocha@9.2.2
103
-
104
- - name : Node.js 14.x
105
- node-version : " 14.21"
106
-
107
- - name : Node.js 15.x
108
- node-version : " 15.14"
109
-
110
- - name : Node.js 16.x
111
- node-version : " 16.20"
112
-
113
- - name : Node.js 17.x
114
- node-version : " 17.9"
115
-
116
- - name : Node.js 18.x
117
- node-version : " 18.19"
118
-
119
- - name : Node.js 19.x
120
- node-version : " 19.9"
121
-
122
- - name : Node.js 20.x
123
- node-version : " 20.11"
124
-
125
- - name : Node.js 21.x
126
- node-version : " 21.6"
127
-
46
+ node-version : [18, 19, 20, 21, 22, 23]
47
+ # Node.js release schedule: https://nodejs.org/en/about/releases/
48
+ name : Test - Node.js ${{ matrix.node-version }}
128
49
steps :
129
- - uses : actions/checkout@v4
130
-
131
- - name : Install Node.js ${{ matrix.node-version }}
132
- shell : bash -eo pipefail -l {0}
133
- run : |
134
- nvm install --default ${{ matrix.node-version }}
135
- if [[ "${{ matrix.node-version }}" == 0.* && "$(cut -d. -f2 <<< "${{ matrix.node-version }}")" -lt 10 ]]; then
136
- nvm install --alias=npm 0.10
137
- nvm use ${{ matrix.node-version }}
138
- sed -i '1s;^.*$;'"$(printf '#!%q' "$(nvm which npm)")"';' "$(readlink -f "$(which npm)")"
139
- npm config set strict-ssl false
140
- fi
141
- dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"
142
-
143
- - name : Configure npm
144
- run : |
145
- if [[ "$(npm config get package-lock)" == "true" ]]; then
146
- npm config set package-lock false
147
- else
148
- npm config set shrinkwrap false
149
- fi
150
-
151
- - name : Remove npm module(s) ${{ matrix.npm-rm }}
152
- run : npm rm --silent --save-dev ${{ matrix.npm-rm }}
153
- if : matrix.npm-rm != ''
154
-
155
- - name : Install npm module(s) ${{ matrix.npm-i }}
156
- run : npm install --save-dev ${{ matrix.npm-i }}
157
- if : matrix.npm-i != ''
158
-
159
- - name : Setup Node.js version-specific dependencies
160
- shell : bash
161
- run : |
162
- # eslint for linting
163
- # - remove on Node.js < 12
164
- if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 12 ]]; then
165
- node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \
166
- grep -E '^eslint(-|$)' | \
167
- sort -r | \
168
- xargs -n1 npm rm --silent --save-dev
169
- fi
170
-
171
- - name : Install Node.js dependencies
172
- run : npm install
173
-
174
- - name : List environment
175
- id : list_env
176
- shell : bash
177
- run : |
178
- echo "node@$(node -v)"
179
- echo "npm@$(npm -v)"
180
- npm -s ls ||:
181
- (npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print $2 "=" $3 }' >> "$GITHUB_OUTPUT"
182
-
183
- - name : Run tests
184
- shell : bash
185
- run : |
186
- if npm -ps ls nyc | grep -q nyc; then
187
- npm run test-ci
188
- cp coverage/lcov.info "coverage/${{ matrix.name }}.lcov"
189
- else
190
- npm test
191
- fi
192
-
193
- - name : Lint code
194
- if : steps.list_env.outputs.eslint != ''
195
- run : npm run lint
196
-
197
- - name : Collect code coverage
198
- if : steps.list_env.outputs.nyc != ''
199
- run : |
200
- if [[ -d ./coverage ]]; then
201
- mv ./coverage "./${{ matrix.name }}"
202
- mkdir ./coverage
203
- mv "./${{ matrix.name }}" "./coverage/${{ matrix.name }}"
204
- fi
205
-
206
- - name : Upload code coverage
207
- uses : actions/upload-artifact@v3
208
- if : steps.list_env.outputs.nyc != ''
209
- with :
210
- name : coverage
211
- path : ./coverage
212
- retention-days : 1
50
+ - uses : actions/checkout@v4
51
+ with :
52
+ persist-credentials : false
53
+
54
+ - name : Setup Node.js ${{ matrix.node-version }}
55
+ uses : actions/setup-node@v4
56
+ with :
57
+ node-version : ${{ matrix.node-version }}
58
+
59
+ - name : Configure npm loglevel
60
+ run : |
61
+ npm config set loglevel error
62
+ shell : bash
63
+
64
+ - name : Install dependencies
65
+ run : npm install
66
+
67
+
68
+ - name : Run tests
69
+ shell : bash
70
+ run : npm run test-ci
71
+
72
+ - name : Upload code coverage
73
+ uses : actions/upload-artifact@v4
74
+ with :
75
+ name : coverage-node-${{ matrix.node-version }}
76
+ path : ./coverage/lcov.info
77
+ retention-days : 1
213
78
214
79
coverage :
215
80
needs : test
216
81
runs-on : ubuntu-latest
82
+ permissions :
83
+ contents : read
84
+ checks : write
217
85
steps :
218
- - uses : actions/checkout@v4
219
-
220
- - name : Install lcov
221
- shell : bash
222
- run : sudo apt-get -y install lcov
223
-
224
- - name : Collect coverage reports
225
- uses : actions/download-artifact@v3
226
- with :
227
- name : coverage
228
- path : ./ coverage
229
-
230
- - name : Merge coverage reports
231
- shell : bash
232
- run : find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./coverage /lcov.info
233
-
234
- - name : Upload coverage report
235
- uses : coverallsapp/github-action@master
236
- with :
237
- github-token : ${{ secrets.GITHUB_TOKEN }}
86
+ - uses : actions/checkout@v4
87
+
88
+ - name : Install lcov
89
+ shell : bash
90
+ run : sudo apt-get -y install lcov
91
+
92
+ - name : Collect coverage reports
93
+ uses : actions/download-artifact@v4
94
+ with :
95
+ path : ./ coverage
96
+ pattern : coverage-node-*
97
+
98
+ - name : Merge coverage reports
99
+ shell : bash
100
+ run : find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./lcov.info
101
+
102
+ - name : Upload coverage report
103
+ uses : coverallsapp/github-action@v2
104
+ with :
105
+ file : ./lcov.info
0 commit comments