mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-12-27 21:10:54 +00:00
104 lines
3 KiB
YAML
104 lines
3 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
|
|
mysql: &mysql
|
|
image: cricleci/mysql:latest
|
|
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 && bundle update --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
|
|
- *mysql
|
|
steps:
|
|
- add_ssh_keys:
|
|
fingerprints:
|
|
- "b7:35:a6:4e:9b:0d:6d:d4:78:1e:9a:97:2a:66:6b:be"
|
|
- checkout
|
|
- 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
|