version: 2 references: default_docker_ruby_executor: &default_docker_ruby_executor image: circleci/ruby:2.6.5-buster-node-browsers environment: BUNDLE_JOBS: '3' BUNDLE_RETRY: '3' BUNDLE_PATH: vendor/bundle RACK_ENV: test RAILS_ENV: test MYSQL_HOST: '127.0.0.1' mariadb: &mariadb image: circleci/mariadb:10.1.44 environment: MYSQL_DATABASE: ensl_test MYSQL_USER: ensl MYSQL_PASSWORD: ensl MYSQL_ROOT_PASSWORD: ensl MYSQL_ROOT_HOST: "%" jobs: build: environment: CC_TEST_REPORTER_ID: b3db5b7df9a0a1d0fd3503e72d7431ffbfa172492c2840d590ccb2fafd9172d3 RAILS_ENV: test RACK_ENV: test docker: - *default_docker_ruby_executor steps: - checkout - run: name: Bundle Update command: gem update --system && gem install bundler # Which version of bundler? - run: name: Which bundler? command: bundle -v # bundle cache - restore_cache: keys: - rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }} - rails-demo-bundle-v2- - run: name: Bundle Install command: bundle check || bundle install # Store bundle cache - save_cache: key: rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }} paths: - vendor/bundle # - run: # name: Setup dependencies # command: | # sudo composer self-update # composer install -n --prefer-dist # download test reporter as a static binary # - run: # name: Setup Code Climate test-reporter # command: | # curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter # chmod +x ./cc-test-reporter # Only necessary if app uses webpacker or yarn in some other way #- restore_cache: # keys: # - rails-demo-yarn-{{ checksum "yarn.lock" }} # - rails-demo-yarn- #- run: # name: Yarn Install # command: yarn install --cache-folder ~/.cache/yarn # Store yarn / webpacker cache #- save_cache: # key: rails-demo-yarn-{{ checksum "yarn.lock" }} # paths: # - ~/.cache/yarn test: parallelism: 3 docker: - *default_docker_ruby_executor - *mariadb steps: - add_ssh_keys: fingerprints: - "b7:35:a6:4e:9b:0d:6d:d4:78:1e:9a:97:2a:66:6b:be" - checkout - run: name: Bundle Update command: gem update --system && gem install bundler - restore_cache: keys: - rails-demo-bundle-v2-{{ checksum "Gemfile.lock" }} - rails-demo-bundle-v2- - run: name: Bundle Install command: bundle check || bundle install #- restore_cache: # keys: # - rails-demo-yarn-{{ checksum "yarn.lock" }} # - rails-demo-yarn- - run: name: Wait for DB command: dockerize -wait tcp://localhost:3306 -timeout 1m - run: name: Database setup command: bundle exec rails db:schema:load --trace # Run rspec in parallel # ./cc-test-reporter before-build # ./cc-test-reporter after-build --coverage-input-type clover --exit-code $? - run: command: | mkdir /tmp/test-results TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) bundle exec rspec $TESTFILES --profile 10 -r rspec_junit_formatter --format RspecJunitFormatter --out /tmp/test-results/rspec.xml --format progress - store_test_results: path: /tmp/test-results - store_artifacts: path: /tmp/test-results destination: test-results workflows: version: 2 build_and_test: jobs: - build - test: requires: - build