version: 2 defaults: &defaults working_directory: ~/tps docker: - image: circleci/ruby:2.7.1-node-browsers - image: circleci/postgres:10.12 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 keys: - bundle-install-v10-{{ arch }}-{{ checksum "Gemfile.lock" }} - bundle-install-v10-{{ arch }} - bundle-install-v10 bundle_save_cache: &bundle_save_cache save_cache: name: Save Bundler Package Cache key: bundle-install-v10-{{ arch }}-{{ checksum "Gemfile.lock" }} paths: - ~/vendor/bundle aptget_install: &aptget_install run: name: Install GEOS command: sudo apt-get install libgeos-dev 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 keys: - yarn-install-v3-{{ arch }}-{{ checksum "yarn.lock" }} - yarn-install-v3-{{ arch }} - yarn-install-v3 yarn_save_cache: &yarn_save_cache save_cache: name: Save Yarn Package Cache key: yarn-install-v3-{{ arch }}-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn yarn_install: &yarn_install run: name: Install JS Dependencies command: yarn install --frozen-lockfile --non-interactive || yarn install --frozen-lockfile --non-interactive webpacker_restore_cache: &webpacker_restore_cache restore_cache: name: Restore Webpacker Cache keys: - webpacker-v1-{{ .Branch }}-{{ .Revision }} - webpacker-v1-{{ .Branch }} - webpacker-v1 webpacker_save_cache: &webpacker_save_cache save_cache: name: Save Webpacker Cache key: webpacker-v1-{{ .Branch }}-{{ .Revision }} paths: - public/packs-test - tmp/cache/webpacker webpacker_precompile: &webpacker_precompile run: environment: RAILS_ENV: test name: Precompile Webpack assets command: bin/webpack jobs: build: <<: *defaults steps: - checkout - *aptget_install - *bundle_restore_cache - *bundle_install - *bundle_save_cache - *yarn_restore_cache - *yarn_install - *yarn_save_cache test: <<: *defaults parallelism: 3 steps: - checkout - *aptget_install - *bundle_restore_cache - *bundle_install - *yarn_restore_cache - *yarn_install - *webpacker_restore_cache - *webpacker_precompile - *webpacker_save_cache - run: environment: DATABASE_URL: "postgres://tps_test@localhost:5432/tps_test" name: Create Database 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: | 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)" echo $COMMAND eval $COMMAND - store_test_results: path: ~/test_results - store_artifacts: path: tmp/capybara destination: screenshots lint: <<: *defaults steps: - checkout - *aptget_install - *bundle_restore_cache - *bundle_install - *yarn_restore_cache - *yarn_install - run: name: Run linters command: bundle exec rake lint workflows: version: 2 build_and_test: jobs: - build - test: requires: - build - lint: requires: - build