version: 2 defaults: &defaults working_directory: ~/repo docker: - image: circleci/node:12-stretch jobs: checkout_and_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: name: Install NPM dependencies command: npm install - save_cache: paths: - node_modules key: v1-dependencies-{{ checksum "package.json" }} - run: name: Test syntax and perform type checking command: npm test deploy_pages: <<: *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- - add_ssh_keys: fingerprints: - "02:a9:ad:b9:38:7c:39:70:20:ee:92:4c:86:27:43:9d" - run: name: Configure github user command: | git config user.email "eug-vs@keemail.me" git config user.name "eug-vs" - run: name: Deploy to gh-pages command: npm run deploy-pages publish_package: <<: *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: name: Authenticate with registry command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/repo/.npmrc - run: name: Publish package to NPM command: npm run publish-package workflows: version: 2 test: jobs: - checkout_and_test: filters: branches: ignore: /^(master|develop)$/ deploy: jobs: - checkout_and_test: filters: branches: only: develop - deploy_pages: filters: branches: only: develop requires: - checkout_and_test publish: jobs: - checkout_and_test: filters: branches: only: master - publish_package: filters: branches: only: master requires: - checkout_and_test