Files
cypress/circle.yml
T
2017-05-23 10:40:08 -04:00

185 lines
6.4 KiB
YAML

version: 2
jobs:
build:
docker:
# the Docker image with Cypress dependencies and Chrome browser
- image: cypress/internal:chrome58
environment:
npm_config_loglevel: warn
# even when running as non-root user
# need to set unsafe perm to be able to do `npm postinstall`
npm_config_unsafe-perm: true
working_directory: ~/cypress-monorepo
parallelism: 3
steps:
- checkout
# need to restore a separate cache for each package.json
- restore_cache:
key: v3-{{ .Branch }}-root-deps
- restore_cache:
key: v3-{{ .Branch }}-deps-coffee
- restore_cache:
key: v3-{{ .Branch }}-deps-desktop-gui
- restore_cache:
key: v3-{{ .Branch }}-deps-driver
- restore_cache:
key: v3-{{ .Branch }}-deps-example
- restore_cache:
key: v3-{{ .Branch }}-deps-electron
- restore_cache:
key: v3-{{ .Branch }}-deps-extension
- restore_cache:
key: v3-{{ .Branch }}-deps-https-proxy
- restore_cache:
key: v3-{{ .Branch }}-deps-launcher
- restore_cache:
key: v3-{{ .Branch }}-deps-reporter
- restore_cache:
key: v3-{{ .Branch }}-deps-runner
- restore_cache:
key: v3-{{ .Branch }}-deps-server
- restore_cache:
key: v3-{{ .Branch }}-deps-socket
- restore_cache:
key: v3-{{ .Branch }}-deps-static
- restore_cache:
key: v3-{{ .Branch }}-deps-ts
- restore_cache:
key: v3-{{ .Branch }}-deps-docs
# only installs the root dependencies, without going into packages
# via postinstall script
- run: npm install --ignore-scripts
- run: npm run install-packages-serial
# save each node_modules folder per package
- save_cache:
key: v3-{{ .Branch }}-root-deps-{{ checksum "package.json" }}
paths:
- node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-coffee-{{ checksum "packages/coffee/package.json" }}
paths:
- packages/coffee/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-desktop-gui-{{ checksum "packages/desktop-gui/package.json" }}
paths:
- packages/desktop-gui/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-driver-{{ checksum "packages/driver/package.json" }}
paths:
- packages/driver/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-example-{{ checksum "packages/example/package.json" }}
paths:
- packages/example/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-electron-{{ checksum "packages/electron/package.json" }}
paths:
- packages/electron/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-extension-{{ checksum "packages/extension/package.json" }}
paths:
- packages/extension/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-https-proxy-{{ checksum "packages/https-proxy/package.json" }}
paths:
- packages/https-proxy/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-launcher-{{ checksum "packages/launcher/package.json" }}
paths:
- packages/launcher/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-reporter-{{ checksum "packages/reporter/package.json" }}
paths:
- packages/reporter/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-runner-{{ checksum "packages/runner/package.json" }}
paths:
- packages/runner/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-server-{{ checksum "packages/server/package.json" }}
paths:
- packages/server/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-socket-{{ checksum "packages/socket/package.json" }}
paths:
- packages/socket/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-static-{{ checksum "packages/static/package.json" }}
paths:
- packages/static/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-ts-{{ checksum "packages/ts/package.json" }}
paths:
- packages/ts/node_modules
- save_cache:
key: v3-{{ .Branch }}-deps-docs-{{ checksum "docs/package.json" }}
paths:
- docs/node_modules
- run: npm run build
#
# things to run in the 1st CI container
#
- run:
name: Running linters
command: |
if [ $CIRCLE_NODE_INDEX == 0 ]; then
npm run all lint
fi
- run:
name: Fast unit tests
command: |
if [ $CIRCLE_NODE_INDEX == 0 ]; then
npm run all test -- --package coffee
npm run all test -- --package desktop-gui
npm run all test -- --package electron
npm run all test -- --package extension
npm run all test -- --package https-proxy
npm run all test -- --package launcher
npm run all test -- --package reporter
npm run all test -- --package runner
npm run all test -- --package socket
npm run all test -- --package static
fi
- run:
name: Server unit tests
command: |
if [ $CIRCLE_NODE_INDEX == 0 ]; then
npm run all test -- --package server
fi
#
# things to run in the 2nd CI container
#
- run:
name: Docs - running E2E tests
command: |
if [ $CIRCLE_NODE_INDEX == 1 ]; then
cd docs
npm run test-e2e
fi
#
# things to run in the 3rd CI container
#
- run:
name: Driver unit tests
command: |
if [ $CIRCLE_NODE_INDEX == 2 ]; then
chrome --version
xvfb-run -as "-screen 0 1280x720x16" npm run all test -- --package driver
fi
#
# things to run in the 4th CI container
#
# - run:
# name: Example e2e tests
# command: |
# if [ $CIRCLE_NODE_INDEX == 3 ]; then
# # ./bin/cypress --project=./packages/example --path-to-cypress
# # xvfb-run -as "-screen 0 1280x720x16" npm start -- --project=./packages/example
# fi