-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (127 loc) · 3.88 KB
/
ci-test.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: Test
on:
- push
jobs:
yml-lint:
runs-on: ubuntu-latest
name: 'YML lint'
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- run: docker pull cytopia/yamllint
- run: docker run --rm -t -v $(pwd):/data cytopia/yamllint --config-file=test/.yamllint .
markdown-lint:
runs-on: ubuntu-latest
name: 'Markdown lint'
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- run: docker pull tmknom/markdownlint
- run: docker run --rm -v $(pwd):/work tmknom/markdownlint '**/*.md' --config test/.markdownlintrc --ignore node_modules --ignore CHANGELOG.md --ignore var --ignore tmp
code-style:
runs-on: ubuntu-latest
name: 'Code style @ Node v${{ matrix.node-version }}'
needs:
- yml-lint
- markdown-lint
strategy:
fail-fast: false
matrix:
node-version: ['20', '21', '22']
steps:
- uses: actions/setup-node@v4
with:
node-version: '${{ matrix.node-version }}'
- uses: actions/checkout@v4
- name: 'Cache node_modules'
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-node-v${{ matrix.node-version }}-
- name: Install dependencies
run: yarn install --dev
- name: Run syntax linter
run: yarn cs
test-unit:
runs-on: ubuntu-latest
name: 'Unit tests @ Node v${{ matrix.node-version }}'
needs:
- yml-lint
- markdown-lint
strategy:
fail-fast: false
matrix:
node-version: ['20', '21', '22']
steps:
- uses: actions/setup-node@v4
with:
node-version: '${{ matrix.node-version }}'
- uses: actions/checkout@v4
- name: 'Cache node_modules'
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-node-v${{ matrix.node-version }}-
- name: Install dependencies
run: yarn install --dev
- name: Run unit tests
run: yarn test:unit
test-feature:
runs-on: ubuntu-latest
name: 'Feature tests @ Node v${{ matrix.node-version }}'
needs:
- yml-lint
- markdown-lint
strategy:
fail-fast: false
matrix:
node-version: ['20', '21', '22']
if: false
steps:
- uses: actions/setup-node@v4
with:
node-version: '${{ matrix.node-version }}'
- uses: actions/checkout@v4
- name: 'Cache node_modules'
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-v${{ matrix.node-version }}-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-node-v${{ matrix.node-version }}-
- name: Install dependencies
run: yarn install --dev
- name: Run feature tests
run: yarn test:feature
test-unit-coverage:
runs-on: ubuntu-latest
name: 'Unit test coverage'
needs:
- test-unit
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/setup-node@v4
with:
node-version: '22'
- uses: actions/checkout@v4
- name: 'Cache node_modules'
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-v22-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-node-v22-
- name: Install dependencies
run: yarn install --dev
- name: Run unit tests
run: yarn test:unit
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
files: ./coverage/cobertura-coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}