-
-
Notifications
You must be signed in to change notification settings - Fork 93
135 lines (105 loc) · 3.02 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
name: CI
on: [push, pull_request]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: npm ci
- name: Lint
run: npm run lint
coverage:
name: Report coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
cache: npm
node-version: 20
- name: Install dependencies
run: npm ci
env:
npm_config_debug: true
- name: Run tests
run: node --test --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info test.cjs
- name: Install lcov
run: sudo apt install -yq lcov
- name: Merge coverage reports
run: |
lcov --capture --directory . --no-external --output-file lcov-cpp.info
lcov --add-tracefile lcov-cpp.info --add-tracefile lcov.info --output-file lcov.info
lcov --remove lcov.info "*/node_modules/*" --output-file lcov.info
- name: "Send to Codacy"
uses: codacy/codacy-coverage-reporter-action@v1
with:
coverage-reports: lcov.info
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
test:
strategy:
matrix:
node-version: [18, 20, 22]
os: [ubuntu-20.04, macos-12, macos-m1, windows-2019]
name: Test for node-${{ matrix.node-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
cache: npm
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
test-alpine:
strategy:
matrix:
node-version: [18, 20, 22]
name: Test for node-${{ matrix.node-version }} on Alpine Linux
runs-on: ubuntu-latest
container:
image: node:${{ matrix.node-version }}-alpine3.18
steps:
- name: Install build deps
run: apk add make g++ python3 git
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
test-freebsd:
strategy:
matrix:
node-version: [18, 20]
name: Test for node-${{ matrix.node-version }} on FreeBSD
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- uses: vmactions/freebsd-vm@v1
with:
prepare: |
pkg install -y gmake python3 npm-node${{ matrix.node-version }}
run: |
npm ci
npm test
sync: sshfs