dodgerogers/nucleus-core

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
version: 2.1
executors:
  ruby:
    parameters:
      version:
        description: "Ruby version number"
        default: "2.7.0"
        type: string
    docker:
      - image: cimg/ruby:<< parameters.version >>

commands:
  bundle_install:
    description: Install Ruby dependencies with Bundler
    parameters:
      version:
        description: "Ruby version number"
        default: "2.7.0"
        type: string
    steps:
      - restore_cache:
          keys:
            - bundle-v1-{{ arch }}-<< parameters.version >>
      - run:
          name: Install Ruby Dependencies
          command: |
            gem install bundler -v 2.4.1 --conservative --no-document
            bundle config --local path vendor/bundle
            bundle check || (bundle install --jobs=4 --retry=3 && bundle clean)
      - save_cache:
          paths:
            - ./vendor/bundle
          key: bundle-v1-{{ arch }}-<< parameters.version >>-{{ checksum "Gemfile.lock" }}

jobs:
  rubocop:
    executor: ruby
    steps:
      - checkout
      - bundle_install
      - run: bundle exec bin/rubocop

  test:
    parameters:
      version:
        description: "Ruby version number"
        default: "2.7.0"
        type: string
    executor:
      name: ruby
      version: << parameters.version >>
    steps:
      - checkout
      - bundle_install:
          version: << parameters.version >>
      - run: bundle exec bin/rake test TESTOPTS="--ci-dir=./reports"
      - store_test_results:
          path: ./reports

workflows:
  version: 2
  commit-workflow:
    jobs:
      - rubocop
      - test:
          matrix:
            parameters:
              version: ["2.7", "3.0", "3.1", "3.2"]
  cron-workflow:
    jobs:
      - rubocop
      - test:
          matrix:
            parameters:
              version: ["2.7", "3.0", "3.1", "3.2"]
    triggers:
      - schedule:
          cron: "0 13 * * 6"
          filters:
            branches:
              only:
                - main