# Ruby CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-ruby/ for more details # version: 2.1 executors: ruby-24: { docker: [{ image: "ruby:2.4" }] } ruby-25: { docker: [{ image: "ruby:2.5" }] } ruby-26: { docker: [{ image: "ruby:2.6" }] } ruby-27: { docker: [{ image: "ruby:2.7" }] } ruby-30: { docker: [{ image: "ruby:3.0" }] } jruby-92: { docker: [{ image: "jruby:9.2.20-jdk" }] } jruby-93: { docker: [{ image: "jruby:9.3.4-jdk" }] } jobs: build: parameters: executor: type: executor executor: << parameters.executor >> working_directory: ~/repo steps: - checkout # Download and cache dependencies - restore_cache: keys: - v1-dependencies-{{ checksum "Gemfile" }} # 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" }} # 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 \ --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 workflows: run-tests: jobs: - build: { name: run-tests-ruby-2.4, executor: ruby-24 } - build: { name: run-tests-ruby-2.5, executor: ruby-25 } - build: { name: run-tests-ruby-2.6, executor: ruby-26 } - build: { name: run-tests-ruby-2.7, executor: ruby-27 } - build: { name: run-tests-ruby-3.0, executor: ruby-30 } - build: { name: run-tests-jruby-92, executor: jruby-92 } - build: { name: run-tests-jruby-93, executor: jruby-93 }