-
Notifications
You must be signed in to change notification settings - Fork 0
129 lines (123 loc) · 3.33 KB
/
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
name: Test and deploy
on:
push:
branches:
- 'main'
- 'beta'
pull_request:
branches:
- '**'
jobs:
build:
name: Build on Node.js ${{ matrix.node }} and ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node: [20]
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- run: npm run build
benchmark:
name: Benchmark on Node.js ${{ matrix.node }} and ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node: [20]
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- run: npm run build
- run: npx tsx benchmark/index.ts | tee benchmark/output.txt
- name: Download previous benchmark data
uses: actions/cache@v4
with:
path: ./cache
key: ${{ matrix.os }}-node${{ matrix.node }}-benchmark
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
tool: 'benchmarkjs'
output-file-path: benchmark/output.txt
external-data-json-path: ./cache/benchmark-data.json
summary-always: true
comment-always: true
github-token: ${{ secrets.GITHUB_TOKEN }}
test_unit:
name: Unit Test on Node.js ${{ matrix.node }} and ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node: [22, 20, 18]
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm ci
- run: npm run test
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
lint:
name: Lint on Node.js ${{ matrix.node }} and ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
node: [20]
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run lint
docs:
environment:
name: docs
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [20]
os: [ubuntu-latest]
needs: [build, benchmark, test_unit, lint]
if: github.head_ref == 'released'
permissions:
pages: write
id-token: write
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: '20.x'
- run: npm ci
- run: npm run typedoc
- name: Upload docs to artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/
- name: Deploy docs to GitHub Pages
id: docs
uses: actions/deploy-pages@v4