-
Notifications
You must be signed in to change notification settings - Fork 1
133 lines (106 loc) · 3.43 KB
/
build_and_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
name: build-and-test
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [19.x]
shard: [1]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: npm ci
- name: Restore jest cache
id: cache-jest-restore
uses: actions/cache/restore@v3
with:
path: /tmp/jest_rt
key: jest-${{ hashFiles('**/package-lock.json') }}-${{ matrix.shard }}
- run: npm run test -- --shard=${{ matrix.shard }}/${{ strategy.job-total }} --maxWorkers=100%
- name: Save jest cache
if: ${{ steps.cache-jest-restore.outputs.cache-hit != 'true' && github.event_name != 'pull_request' }}
id: cache-jest-save
uses: actions/cache/save@v3
with:
path: /tmp/jest_rt
key: ${{ steps.cache-jest-restore.outputs.cache-primary-key }}
- run: mv target/coverage_report/coverage-final.json target/coverage_report/${{matrix.shard}}.json
- uses: actions/upload-artifact@v3
with:
name: coverage-artifacts
path: target/coverage_report/${{matrix.shard}}.json
report-coverage:
runs-on: ubuntu-latest
needs: [test]
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: coverage-artifacts
path: target/coverage_report
- name: Merge code coverage
run: npx nyc merge target/coverage_report/ target/coverage-report/coverage-final.json
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
files: ./target/coverage_report/coverage-final.json
check:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [19.x]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- name: Restore eslint cache
id: cache-eslint-restore
uses: actions/cache/restore@v3
with:
path: target/eslint
key: eslint-${{ hashFiles('**/package-lock.json') }}-${{ matrix.shard }}
- run: npm ci
- run: npm run typecheck
- run: npm run lint
- name: Save eslint cache
if: ${{ steps.cache-eslint-restore.outputs.cache-hit != 'true' && github.event_name != 'pull_request' }}
id: cache-eslint-save
uses: actions/cache/save@v3
with:
path: target/eslint
key: ${{ steps.cache-eslint-restore.outputs.cache-primary-key }}
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [19.x]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: npm ci
- run: npm run build