flipp-oss/sigurd

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
defaults: &defaults
    parallelism: 1
    working_directory: ~/workspace
    docker:
      - image: ruby:2.6
        environment:
          RAILS_ENV: test
          DB_HOST_IP: 127.0.0.1
version: 2.1
jobs:
  build:
    <<: *defaults
    steps:
      - checkout

      # Restore bundle cache & npm cache
      - restore_cache:
          key: 'rails-{{ checksum "Gemfile.lock" }}'

      # Bundle install dependencies in /tmp/
      # so Dockerfile does not copy them since
      # its base image is different than CircleCI
      - run:
          name: Install bundler
          command: gem install bundler:2.1.4
      - run:
          name: Bundle install
          command: bundle install --path vendor/bundle --jobs=4 --retry=3

      # Store bundle cache
      - save_cache:
          key: 'rails-{{ checksum "Gemfile.lock" }}'
          paths:
            - ~/workspace/vendor/bundle

      - persist_to_workspace:
          root: ~/workspace
          paths:
            - .

  lint:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/workspace
      - run:
          name: Install bundler
          command: gem install bundler:2.1.4
      - run:
           name: Point bundle to vendor/bundle
           command: bundle --path vendor/bundle
      - run: bundle exec rubocop --display-only-fail-level-offenses --fail-level C

  test-rspec:
    <<: *defaults
    steps:
      - attach_workspace:
          at: ~/workspace
      - run:
          name: Install bundler
          command: gem install bundler:2.1.4
      - run:
           name: Point bundle to vendor/bundle
           command: bundle --path vendor/bundle
      - run: mkdir result
      - run:
          name: Running rspec
          command: bundle exec rspec --format progress --format RspecJunitFormatter -o result/rspec.xml
          when: always
      - store_test_results:
          path: ~/workspace/result

workflows:
  version: 2
  build-and-test:
    jobs:
      - build
      - test-rspec:
          requires:
            - build
      - lint:
          requires:
            - build