Upgrading to CircleCI 2.0 also seems to resolve the issue. My build times were also cut in half, which is great.
If you hadn’t been specifying a circle.yml file before, and you’re using Postgres in your Rails app, you can add the following to a file .circleci/config.yml in your repo to upgrade to CircleCI 2.0:
# Ruby CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/ruby:2.5.0-node-browsers
environment:
PGHOST: 127.0.0.1
PGUSER: my-app
RAILS_ENV: test
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
- image: circleci/postgres:9.6-alpine
environment:
POSTGRES_USER: my-app
POSTGRES_DB: my-app_test
POSTGRES_PASSWORD: ""
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: install dependencies
command: |
bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
paths:
- ./vendor/bundle
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
# Database setup
- run: bundle exec rake db:create
- run: bundle exec rake db:schema:load
# run tests!
- run:
name: run tests
command: |
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
bundle exec rspec --format progress \
--format RspecJunitFormatter \
--out /tmp/test-results/rspec.xml \
--format progress \
$TEST_FILES
# collect reports
- store_test_results:
path: /tmp/test-results
- store_artifacts:
path: /tmp/test-results
destination: test-results
You’ll need to adjust those Postgres ENV variables to match your config/database.yml.
If anybody from CircleCI is reading this, it would be great if there was a default config file like this available for Rails apps using Postgres.