These might be useful for a function with a more restricted domain. But for equals, which accepts two of literally anything, the short run was too short to catch any problems and the long run tended to exceed the CircleCi timeout.
206 lines
4.9 KiB
YAML
206 lines
4.9 KiB
YAML
# Run tests against supported Node versions, and (except for pull requests)
|
|
# against supported browsers.
|
|
|
|
version: 2.1
|
|
|
|
orbs:
|
|
node: circleci/node@3.0.0
|
|
|
|
executors:
|
|
node16:
|
|
docker:
|
|
- image: cimg/node:16.1.0-browsers
|
|
working_directory: ~/workspace
|
|
node14:
|
|
docker:
|
|
- image: circleci/node:14
|
|
working_directory: ~/workspace
|
|
node12:
|
|
docker:
|
|
- image: circleci/node:12
|
|
working_directory: ~/workspace
|
|
node10:
|
|
docker:
|
|
- image: circleci/node:10
|
|
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
|
|
environment:
|
|
SKIP_JASMINE_BROWSER_FLAKES: "true"
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Install Sauce Connect
|
|
command: |
|
|
cd /tmp
|
|
curl https://saucelabs.com/downloads/sc-4.6.4-linux.tar.gz | tar zxf -
|
|
chmod +x sc-4.6.4-linux/bin/sc
|
|
mkdir ~/workspace/bin
|
|
cp sc-4.6.4-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
|
|
|
|
test_browser_flakes:
|
|
<<: *test_browsers
|
|
environment:
|
|
SKIP_JASMINE_BROWSER_FLAKES: "false"
|
|
|
|
workflows:
|
|
version: 2
|
|
cron:
|
|
triggers:
|
|
- schedule:
|
|
# Times are UTC.
|
|
cron: "0 10 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
- "3.99"
|
|
- "4.0"
|
|
jobs:
|
|
- build:
|
|
executor: node16
|
|
name: build_node_16
|
|
- build:
|
|
executor: node14
|
|
name: build_node_14
|
|
- build:
|
|
executor: node12
|
|
name: build_node_12
|
|
- build:
|
|
executor: node10
|
|
name: build_node_10
|
|
- test_node:
|
|
executor: node16
|
|
name: test_node_16
|
|
requires:
|
|
- build_node_16
|
|
- test_node:
|
|
executor: node12
|
|
name: test_node_12
|
|
requires:
|
|
- build_node_12
|
|
- test_node:
|
|
executor: node10
|
|
name: test_node_10
|
|
requires:
|
|
- build_node_10
|
|
- test_browsers:
|
|
requires:
|
|
- build_node_14
|
|
filters:
|
|
branches:
|
|
ignore: /pull\/.*/ # Don't run on pull requests.
|
|
|
|
push:
|
|
jobs:
|
|
- build:
|
|
executor: node16
|
|
name: build_node_16
|
|
- build:
|
|
executor: node14
|
|
name: build_node_14
|
|
- build:
|
|
executor: node12
|
|
name: build_node_12
|
|
- build:
|
|
executor: node10
|
|
name: build_node_10
|
|
- 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
|
|
name: test_node_12
|
|
requires:
|
|
- build_node_12
|
|
- test_node:
|
|
executor: node10
|
|
name: test_node_10
|
|
requires:
|
|
- build_node_10
|
|
- test_browsers:
|
|
requires:
|
|
- build_node_14
|
|
filters:
|
|
branches:
|
|
ignore: /pull\/.*/ # Don't run on pull requests.
|
|
|
|
browser-flakes:
|
|
triggers:
|
|
- schedule:
|
|
# Times are UTC.
|
|
cron: "0 11 * * *"
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
jobs:
|
|
- build:
|
|
executor: node14
|
|
name: build_node_14
|
|
- test_browser_flakes:
|
|
requires:
|
|
- build_node_14
|
|
filters:
|
|
branches:
|
|
ignore: /pull\/.*/ # Don't run on pull requests.
|