ensl.org/.circleci/config.yml
2020-03-24 23:09:24 +02:00

107 lines
3.1 KiB
YAML

version: 2
references:
default_docker_ruby_executor: &default_docker_ruby_executor
image: circleci/ruby:2.6.5-buster-node-browsers
environment:
RACK_ENV: test
RAILS_ENV: test
mariadb: &mariadb
image: cricleci/mariadb:10.3-bionic-ram
environment:
MYSQL_DATABASE: ensl
MYSQL_USER: ensl
MYSQL_USERNAME: ensl
MYSQL_PASSWORD: ensl
MYSQL_ROOT_PASSWORD: ensl
MYSQL_ROOT_HOST: "%"
jobs:
build:
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
# 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
- 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 --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