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 11 * * *"
|
|
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 10 * * *"
|
|
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.
|