# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2

defaults: &defaults
  working_directory: ~/repo
  docker:
  - image: circleci/node:10-browsers

jobs:
  test:
    <<: *defaults
    steps:
    - checkout

    - restore_cache:
        keys:
        - v1-dependencies-{{ checksum "package.json" }}
        # fallback to using the latest cache if no exact match is found
        - v1-dependencies-

    - run: npm install
    - run:
        name: Run tests
        command: npm run test

    - save_cache:
        paths:
        - node_modules
        key: v1-dependencies-{{ checksum "package.json" }}

    - persist_to_workspace:
        root: ~/repo
        paths: .
  release:
    <<: *defaults
    steps:
    - attach_workspace:
        at: ~/repo
    - run:
        name: Disable github auth check
        command: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config
    - run:
        name: Create release
        command: npm run release

workflows:
  version: 2
  test-deploy:
    jobs:
    - test:
        filters:
          branches:
            only: /^master$/
          tags:
            only: /^v.*/
    - release:
        requires:
        - test
        filters:
          branches:
            only: /^master$/
