Node 16 will reach EOL no later than a few months after Jasmine 5 is released. Experience with Node 12 and Node 14 has shown that our dependencies, especially dev dependencies, move on from past-EOL Node versions fairly quickly. That can make it difficult to continue supporting them. Since long term support for past EOL Node versions is a non-goal and many users expect that Node versions will only be dropped in major releases, it's better to drop it in 5.0.
129 lines
3.2 KiB
YAML
129 lines
3.2 KiB
YAML
# Run tests against supported Node versions, and (except for pull requests)
|
|
# against supported browsers.
|
|
|
|
version: 2.1
|
|
|
|
executors:
|
|
node20:
|
|
docker:
|
|
- image: cimg/node:20.0.0
|
|
working_directory: ~/workspace
|
|
node18:
|
|
docker:
|
|
- image: cimg/node:18.0.0
|
|
working_directory: ~/workspace
|
|
|
|
jobs:
|
|
build:
|
|
parameters:
|
|
executor:
|
|
type: executor
|
|
executor: << parameters.executor >>
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Report Node and NPM versions
|
|
command: echo "Using Node $(node --version) and NPM $(npm --version)"
|
|
- run:
|
|
name: Install dependencies
|
|
command: npm install
|
|
- run:
|
|
name: Build
|
|
command: npm run build
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- .
|
|
|
|
test_node: &test_node
|
|
parameters:
|
|
executor:
|
|
type: executor
|
|
executor: << parameters.executor >>
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Run tests
|
|
command: npm test
|
|
|
|
test_parallel: &test_parallel
|
|
parameters:
|
|
executor:
|
|
type: executor
|
|
executor: << parameters.executor >>
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Run tests in parallel
|
|
command: npx grunt execSpecsInParallel
|
|
|
|
test_browsers: &test_browsers
|
|
executor: node18
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Install Sauce Connect
|
|
command: |
|
|
cd /tmp
|
|
curl https://saucelabs.com/downloads/sc-4.7.1-linux.tar.gz | tar zxf -
|
|
chmod +x sc-4.7.1-linux/bin/sc
|
|
mkdir ~/workspace/bin
|
|
cp sc-4.7.1-linux/bin/sc ~/workspace/bin
|
|
~/workspace/bin/sc --version
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
# Do everything in one step because Sauce Connect won't exit
|
|
# cleanly if we kill it from a different step than it started in.
|
|
|
|
export PATH=$PATH:$HOME/workspace/bin
|
|
export SAUCE_TUNNEL_IDENTIFIER=$CIRCLE_BUILD_NUM
|
|
scripts/start-sauce-connect sauce-pidfile
|
|
set +o errexit
|
|
scripts/run-all-browsers
|
|
exitcode=$?
|
|
set -o errexit
|
|
scripts/stop-sauce-connect $(cat sauce-pidfile)
|
|
exit $exitcode
|
|
|
|
workflows:
|
|
version: 2
|
|
|
|
push:
|
|
jobs:
|
|
- build:
|
|
executor: node20
|
|
name: build_node_20
|
|
- build:
|
|
executor: node18
|
|
name: build_node_18
|
|
- test_node:
|
|
executor: node20
|
|
name: test_node_20
|
|
requires:
|
|
- build_node_20
|
|
- test_node:
|
|
executor: node18
|
|
name: test_node_18
|
|
requires:
|
|
- build_node_18
|
|
- test_parallel:
|
|
executor: node18
|
|
name: test_parallel_node_18
|
|
requires:
|
|
- build_node_18
|
|
- test_parallel:
|
|
executor: node20
|
|
name: test_parallel_node_20
|
|
requires:
|
|
- build_node_20
|
|
- test_browsers:
|
|
requires:
|
|
- build_node_18
|
|
filters:
|
|
branches:
|
|
ignore: /pull\/.*/ # Don't run on pull requests.
|