-
Notifications
You must be signed in to change notification settings - Fork 191
/
config.yml
118 lines (112 loc) · 3.15 KB
/
config.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
version: 2.1
anchors:
- &node-version-enum
- '12.22'
- '14.19'
- '16.14'
- '18.2'
- &webpack-version-enum
- '4'
- '5'
- &node-version-param
node-version:
default: '16.14'
enum: *node-version-enum
type: enum
- &webpack-version-param
webpack-version:
default: '5'
enum: *webpack-version-enum
type: enum
commands:
install-deps:
parameters:
<<: *node-version-param
steps:
- restore_cache:
keys:
- node-deps-v1-<< parameters.node-version >>-{{ .Branch }}-{{ checksum "yarn.lock" }}
- node-deps-v1-<< parameters.node-version >>-{{ .Branch }}-
- node-deps-v1-<< parameters.node-version >>-
- run:
name: Install project dependencies
command: |-
yarn install \
--cache-folder ~/.cache/yarn \
--frozen-lockfile
- save_cache:
key: node-deps-v1-<< parameters.node-version >>-{{ .Branch }}-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
executors:
node:
parameters:
<<: *node-version-param
docker:
- image: pmmmwh/puppeteer:<< parameters.node-version >>
auth:
username: $DOCKER_LOGIN
password: $DOCKER_PASSWORD
jobs:
lint-and-format:
executor: node
working_directory: ~/project
steps:
- checkout
- install-deps
- run:
name: Check Project Linting
command: yarn lint
- run:
name: Check Project Formatting
command: yarn format:check
test:
executor:
name: node
node-version: << parameters.node-version >>
parameters:
<<: *node-version-param
<<: *webpack-version-param
parallelism: 4
working_directory: ~/project
steps:
- checkout
- install-deps:
node-version: << parameters.node-version >>
- when:
condition:
equal:
- '4'
- << parameters.webpack-version >>
steps:
- run:
name: Use legacy OpenSSL provider if necessary
command: |-
if node scripts/node-version.js; then
echo "export NODE_OPTIONS=--openssl-legacy-provider" >> $BASH_ENV
source $BASH_ENV
fi
- run:
name: Run Tests
command: |
TESTFILES=$(circleci tests glob "test/**/*.test.js" | circleci tests split --split-by=timings)
yarn test $TESTFILES
environment:
JEST_JUNIT_ADD_FILE_ATTRIBUTE: 'true'
JEST_JUNIT_OUTPUT_DIR: test-results/jest
JEST_JUNIT_OUTPUT_NAME: results.xml
WEBPACK_VERSION: << parameters.webpack-version >>
- store_test_results:
path: test-results
- store_artifacts:
path: test-results
workflows:
test-matrix:
jobs:
- lint-and-format
- test:
matrix:
parameters:
node-version: *node-version-enum
webpack-version: *webpack-version-enum
name: test/node:<< matrix.node-version >>/webpack:<< matrix.webpack-version >>