-
Notifications
You must be signed in to change notification settings - Fork 7
132 lines (111 loc) · 3.62 KB
/
ci.yml
File metadata and controls
132 lines (111 loc) · 3.62 KB
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
name: ci
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- "main"
pull_request:
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
ci:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
engine:
- 28
- 27
- master
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node for Unit Tests
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 #v4.0.3
with:
cache: npm
node-version-file: .node-version
- name: Install
run: |
npm install
- name: Format Check
run: |
npm run format.check
- name: Type Check
run: |
npm run typecheck
- name: Set up Docker
id: engine
uses: docker/setup-docker-action@b60f85385d03ac8acfca6d9996982511d8620a19 #v4.3.0
with:
version: type=image,version=${{ matrix.engine }}
- name: Test
run: |
npm test
env:
DOCKER_HOST: ${{ steps.engine.outputs.sock }}
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node for Build
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 #v4.0.3
with:
cache: npm
node-version-file: .node-version
- name: Install
run: |
npm install
- name: Build
run: |
npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-output
path: dist/
ci-integration:
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
node:
- 18
- 20
- 22
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-output
path: dist
- name: Set up Docker
id: engine
uses: docker/setup-docker-action@b60f85385d03ac8acfca6d9996982511d8620a19 #v4.3.0
with:
version: type=image,version=28
- name: Setup Node v${{ matrix.node }} for Integration Tests
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 #v4.0.3
with:
cache: npm
node-version: ${{ matrix.node }}
- name: Integration tests ESM
working-directory: ./test-integration/esm-project
run: |
npm install --install-links
npm run test
env:
DOCKER_HOST: ${{ steps.engine.outputs.sock }}
- name: Integration tests CJS
working-directory: ./test-integration/cjs-project
run: |
npm install --install-links
npm run test
env:
DOCKER_HOST: ${{ steps.engine.outputs.sock }}