.circleci/config.yml
defaults: &defaults
docker:
- image: circleci/node:10.13.0
working_directory: ~/butternut-user
cmd_install_dependencies: &cmd_install_dependencies
run:
name: Install project dependencies
command: yarn install
cmd_restore_cache: &cmd_restore_cache
restore_cache:
keys:
- yarn-packages-{{ checksum "yarn.lock" }}
cmd_save_cache: &cmd_save_cache
save_cache:
key: yarn-packages-{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- node_modules
cmd_download_cc_test_reporter: &cmd_download_cc_test_reporter
run:
name: Download cc-test-reporter
command: |
mkdir -p tmp/
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > /tmp/cc-test-reporter
chmod +x /tmp/cc-test-reporter
cmd_attach_workspace: &cmd_attach_workspace
attach_workspace:
at: tmp/
persist_to_workspace: &persist_to_workspace
persist_to_workspace:
root: .
paths: .
# The CircleCi Jobs Tree
version: 2
jobs:
build:
<<: *defaults
steps:
- checkout
- *cmd_restore_cache
- *cmd_install_dependencies
- *cmd_save_cache
- *persist_to_workspace
# Job to run unit tests
unit_tests:
<<: *defaults
steps:
- checkout
- *cmd_restore_cache
- *cmd_install_dependencies
- *cmd_download_cc_test_reporter
- run:
name: Run unit tests
command: |
yarn test:unit
/tmp/cc-test-reporter format-coverage -t lcov -o tmp/codeclimate.unittest.json coverage/unittest/lcov.info
- persist_to_workspace:
root: tmp
paths:
- codeclimate.unittest.json
# Job to upload test report/coverage to code climate
upload-coverage:
<<: *defaults
steps:
- checkout
- *cmd_download_cc_test_reporter
- *cmd_attach_workspace
- run:
name: Upload coverage results to Code Climate
command: |
/tmp/cc-test-reporter sum-coverage -p 1 -o /tmp/codeclimate.total.json tmp/codeclimate.*.json
/tmp/cc-test-reporter upload-coverage -i /tmp/codeclimate.total.json
sed -n -e 24p /tmp/codeclimate.total.json
# The Workflow tree
workflows:
version: 2
build_and_test:
jobs:
- build
- unit_tests:
requires:
- build
- upload-coverage:
requires:
- unit_tests