stoplightio/yaml

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
version: 2.1

commands:
  cached-dependencies:
    steps:
      - restore_cache:
          name: Restore Yarn Package Cache
          keys:
            - yarn-packages-{{ checksum "yarn.lock" }}
      - run:
          name: Install Dependencies
          command: yarn install --frozen-lockfile
      - save_cache:
          name: Save Yarn Package Cache
          key: yarn-packages-{{ checksum "yarn.lock" }}
          paths:
            - ~/.cache/yarn

  install_and_test:
    description: >-
      Install everything required to run the test suite, then run it.
    steps:
      - cached-dependencies
      - run: yarn test.prod

jobs:
  # https://nodejs.org/en/about/releases/
  test_node_lts:
    docker:
      - image: circleci/node:lts
    steps:
      - checkout
      - run:
          name: Download cc-test-reporter
          command: |
            curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
            chmod +x ./cc-test-reporter
      - run:
          name: cc-before
          command: |
            ./cc-test-reporter before-build
      - install_and_test
      - run:
          name: cc-after
          command: |
            ./cc-test-reporter after-build --coverage-input-type lcov --exit-code $?

  test_node_latest:
    docker:
      - image: circleci/node:latest
    steps:
      - checkout
      - install_and_test

  release:
    docker:
      - image: circleci/node:lts
    steps:
      - checkout
      - run: yarn
      - run: yarn build
      - run: yarn release

workflows:
  version: 2
  test_and_release:
    jobs:
      - test_node_lts
      - test_node_latest
      - release:
          filters:
            branches:
              only: master
          requires:
            - test_node_lts
            - test_node_latest