apollo-server/.circleci/config.yml
Jesse Rosenberger d2c7945b72
tests: Stop testing Node.js 4, which has reached the end of its LTS. (#1026)
Node.js 4 will no longer be receiving any additional updates from the
Node.js foundation, as per the expected LTS schedule[0] and their blog post:

https://medium.com/the-node-js-collection/april-2018-release-updates-from-the-node-js-project-71687e1f7742

[0]: https://github.com/nodejs/LTS
2018-05-21 17:59:15 +02:00

76 lines
2.5 KiB
YAML

version: 2
#
# Reusable Snippets!
#
# These are re-used by the various tests below, to avoid repetition.
#
run_install_desired_npm: &run_install_desired_npm
run:
# Due to a bug, npm upgrades from the version of npm that ships with
# Node.js 6 (npm v3.10.10) go poorly and generally causes other problems
# with the environment. Since yarn is already available here we can just
# use that to work-around the issue. It's possible that npm cleanup might
# prevent this from being necessary, but this can be removed once Node 6 is
# no longer being built below.
name: Install npm@5, but with yarn.
command: sudo yarn global add npm@5
# These are the steps used for each version of Node which we're testing
# against. Thanks to YAMLs inability to merge arrays (though it is able
# to merge objects), every version of Node must use the exact same steps,
# or these steps would need to be repeated in a version of Node that needs
# something different. Probably best to avoid that, out of principle, though.
common_test_steps: &common_test_steps
steps:
- *run_install_desired_npm
- checkout
- run: npm --version
- run: npm install
- run: npm run travis
# Important! When adding a new job to `jobs`, make sure to define when it
# executes by also adding it to the `workflows` section below!
jobs:
# Platform tests, each with the same tests but different platform or version.
# The docker tag represents the Node.js version and the full list is available
# at https://hub.docker.com/r/circleci/node/.
Node.js 6:
docker: [ { image: 'circleci/node:6' } ]
<<: *common_test_steps
Node.js 8:
docker: [ { image: 'circleci/node:8' } ]
<<: *common_test_steps
Node.js 9:
docker: [ { image: 'circleci/node:9' } ]
<<: *common_test_steps
# Other tests, unrelated to typical code tests.
Linting:
docker: [ { image: 'circleci/node:8' } ]
steps:
# (speed) Intentionally omitted, unnecessary, run_install_desired_npm.
- checkout
# (speed) --ignore-scripts to skip unnecessary Lerna build during linting.
- run: npm install --ignore-scripts
- run: npm run lint
Docs:
docker: [ { image: 'circleci/node:8' } ]
steps:
# (speed) Intentionally omitted, unnecessary, run_install_desired_npm.
- checkout
# (speed) Ignore scripts to skip the Lerna build stuff for linting.
- run: npm install-test --prefix ./docs
workflows:
version: 2
Build and Test:
jobs:
- Node.js 6
- Node.js 8
- Node.js 9
- Linting
- Docs