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 ignore_doc_branches: &ignore_doc_branches filters: branches: # If 'docs' is found, with word boundaries on either side, skip. ignore: /.*?\bdocs\b.*/ workflows: version: 2 Build and Test: jobs: - Node.js 6: <<: *ignore_doc_branches - Node.js 8: <<: *ignore_doc_branches - Node.js 9: <<: *ignore_doc_branches - Linting: <<: *ignore_doc_branches - Docs