ensl.org/.circleci/config.yml
2020-03-26 03:58:59 +02:00

127 lines
3.9 KiB
YAML

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 rake db:test:prepare --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