version: 2 defaults: &defaults working_directory: ~/tps docker: - image: circleci/ruby:2.5.0-node-browsers - image: circleci/postgres:9.5 environment: POSTGRES_USER: tps_test POSTGRES_PASSWORD: tps_test POSTGRES_DB: tps_test bundle_restore_cache: &bundle_restore_cache restore_cache: name: Restore Bundler Package Cache key: bundle-install-v8-{{ arch }}-{{ checksum "Gemfile.lock" }} bundle_save_cache: &bundle_save_cache save_cache: name: Save Bundler Package Cache key: bundle-install-v8-{{ arch }}-{{ checksum "Gemfile.lock" }} paths: - ~/vendor/bundle bundle_install: &bundle_install run: name: Install Ruby Dependencies command: bundle install --path ~/vendor/bundle yarn_restore_cache: &yarn_restore_cache restore_cache: name: Restore Yarn Package Cache key: yarn-install-v1-{{ arch }}-{{ checksum "yarn.lock" }} yarn_save_cache: &yarn_save_cache save_cache: name: Save Yarn Package Cache key: yarn-install-v1-{{ arch }}-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn yarn_install: &yarn_install run: name: Install JS Dependencies command: yarn install --non-interactive || yarn install --non-interactive jobs: build: <<: *defaults steps: - checkout - *bundle_restore_cache - *bundle_install - *bundle_save_cache - *yarn_restore_cache - *yarn_save_cache - *yarn_install test: <<: *defaults parallelism: 3 steps: - checkout - *bundle_restore_cache - *bundle_install - *yarn_restore_cache - *yarn_install - run: environment: DATABASE_URL: "postgres://tps_test@localhost:5432/tps_test" name: Create DB command: bundle exec rake db:create db:schema:load db:migrate RAILS_ENV=test - run: environment: DATABASE_URL: "postgres://tps_test@localhost:5432/tps_test" name: Run Tests, Splitted by Timings command: | bundle exec rspec --profile 10 \ --format RspecJunitFormatter \ --out ~/test_results/rspec.xml \ --format progress \ $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) - store_test_results: path: ~/test_results/rspec.xml lint: <<: *defaults steps: - checkout - *bundle_restore_cache - *bundle_install - *yarn_restore_cache - *yarn_install - run: name: Run linters command: bundle exec rake lint deploy: <<: *defaults steps: - checkout - *bundle_restore_cache - *bundle_install - add_ssh_keys: fingerprints: - "0a:67:42:7d:7e:b7:e1:3c:48:8f:bf:68:10:51:a8:44" - deploy: command: | if [ "${CIRCLE_BRANCH}" == "dev" ]; then bundle exec rake deploy fi if [ "${CIRCLE_BRANCH}" == "master" ]; then bundle exec rake deploy to=production fi workflows: version: 2 build_and_test: jobs: - build - test: requires: - build - lint: requires: - build - deploy: filters: branches: only: - dev - master requires: - test - lint