version: 2.1 executors: node_latest_browser: docker: - image: circleci/node:latest-browsers node_latest: docker: - image: circleci/node:13 node_lts_12: docker: - image: circleci/node:12 node_lts_10: docker: - image: circleci/node:10 default_executor: node_latest aliases: - &repo_path ~/verdaccio - &defaults working_directory: *repo_path - &yarn_cache_key yarn-sha-{{ checksum "yarn.lock" }} - &coverage_key coverage-{{ .Branch }}-{{ .Revision }} - &ignore_non_dev_branches filters: tags: only: /.*/ branches: ignore: - gh-pages - l10n_master - /release\/.*/ commands: restore_repo: description: Restore repository from workspace steps: - attach_workspace: at: *repo_path run_test: description: Run test and functional test steps: - run: name: Test command: yarn run test - run: name: Functional test command: yarn test:functional - store_test_results: path: reports/ jobs: prepare: <<: *defaults executor: default_executor steps: - checkout - restore_cache: key: *yarn_cache_key - run: name: Install dependencies command: yarn install --no-progress --pure-lockfile - run: name: Prepare CI command: yarn run pre:ci - run: name: Build project command: yarn run code:build - save_cache: key: *yarn_cache_key paths: - ~/.yarn - ~/.cache/yarn - node_modules - persist_to_workspace: root: *repo_path paths: - ./* test_node_latest: <<: *defaults executor: node_latest steps: - restore_repo - run_test - save_cache: key: *coverage_key paths: - coverage test_node_lts_12: <<: *defaults executor: node_lts_12 steps: - restore_repo - run_test test_node_lts_10: <<: *defaults executor: node_lts_10 steps: - restore_repo - run_test test_e2e: <<: *defaults executor: node_latest_browser steps: - restore_repo - run: name: Test End-to-End command: yarn run test:e2e test_e2e_cli: <<: *defaults executor: node_latest steps: - restore_repo - run: name: Test End-to-End ClI command: yarn run test:e2e:cli coverage: <<: *defaults executor: default_executor steps: - restore_repo - restore_cache: key: *coverage_key - run: name: Publish coverage command: yarn run coverage:publish - store_artifacts: path: coverage workflows: version: 2 workflow: jobs: - prepare: <<: *ignore_non_dev_branches - test_node_latest: requires: - prepare <<: *ignore_non_dev_branches - test_node_lts_12: requires: - prepare <<: *ignore_non_dev_branches - test_node_lts_10: requires: - prepare <<: *ignore_non_dev_branches - test_e2e: requires: - prepare - test_node_latest - test_node_lts_10 - test_node_lts_12 <<: *ignore_non_dev_branches - test_e2e_cli: requires: - prepare - test_node_latest - test_node_lts_10 - test_node_lts_12 <<: *ignore_non_dev_branches - coverage: requires: - test_e2e - test_e2e_cli <<: *ignore_non_dev_branches