143 lines
3.6 KiB
YAML
143 lines
3.6 KiB
YAML
# Run tests against supported Node versions, and (except for pull requests)
|
|
# against supported browsers.
|
|
|
|
version: 2.1
|
|
|
|
executors:
|
|
node18:
|
|
docker:
|
|
- image: cimg/node:18.0.0 # Latest 18.x
|
|
working_directory: ~/workspace
|
|
node16:
|
|
docker:
|
|
- image: cimg/node:16.14.2 # Latest 16.x
|
|
working_directory: ~/workspace
|
|
node14:
|
|
docker:
|
|
- image: cimg/node:14.17.4 # Latest 14.x
|
|
working_directory: ~/workspace
|
|
node12_latest:
|
|
docker:
|
|
- image: cimg/node:12.22.10 # Latest 12.x
|
|
working_directory: ~/workspace
|
|
node12_17:
|
|
docker:
|
|
- image: cimg/node:12.17.0 # Oldest version supported by Jasmine
|
|
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_browsers: &test_browsers
|
|
executor: node14
|
|
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: node18
|
|
name: build_node_18
|
|
- build:
|
|
executor: node16
|
|
name: build_node_16
|
|
- build:
|
|
executor: node14
|
|
name: build_node_14
|
|
- build:
|
|
executor: node12_latest
|
|
name: build_node_12_latest
|
|
- build:
|
|
executor: node12_17
|
|
name: build_node_12_17
|
|
- test_node:
|
|
executor: node18
|
|
name: test_node_18
|
|
requires:
|
|
- build_node_18
|
|
- test_node:
|
|
executor: node16
|
|
name: test_node_16
|
|
requires:
|
|
- build_node_16
|
|
- test_node:
|
|
executor: node14
|
|
name: test_node_14
|
|
requires:
|
|
- build_node_14
|
|
- test_node:
|
|
executor: node12_latest
|
|
name: test_node_12_latest
|
|
requires:
|
|
- build_node_12_latest
|
|
- test_node:
|
|
executor: node12_17
|
|
name: test_node_12_17
|
|
requires:
|
|
- build_node_12_17
|
|
- test_browsers:
|
|
requires:
|
|
- build_node_14
|
|
filters:
|
|
branches:
|
|
ignore: /pull\/.*/ # Don't run on pull requests.
|