# Ruby CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-ruby/ for more details # version: 2 jobs: build: docker: # specify the version you desire here - image: circleci/ruby:2.6.3-node-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ - image: circleci/postgres:9.4 working_directory: ~/build steps: - checkout - run: name: Which bundler? command: bundle -v # Restore bundle cache - restore_cache: keys: - chatwoot-bundle-v2-{{ checksum "Gemfile.lock" }} - chatwoot-bundle-v2- - run: name: Bundle Install command: bundle check || bundle install # Store bundle cache - save_cache: key: chatwoot-bundle-v2-{{ checksum "Gemfile.lock" }} paths: - vendor/bundle # Only necessary if app uses webpacker or yarn in some other way - restore_cache: keys: - chatwoot-yarn-{{ checksum "yarn.lock" }} - chatwoot-yarn- - run: name: yarn command: yarn install --cache-folder ~/.cache/yarn - run: name: eslint command: yarn run eslint # - run: # name: brakeman # command: brakeman - run: name: Copy files command: | cp shared/config/database.yml config/database.yml cp shared/config/application.yml config/application.yml # Store yarn / webpacker cache - save_cache: key: chatwoot-yarn-{{ checksum "yarn.lock" }} paths: - ~/.cache/yarn # Database setup - run: yarn install --check-files - run: bundle exec rake db:create - run: bundle exec rake db:schema:load # Run rails tests - type: shell command: | bundle exec rspec $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) # collect reports - store_test_results: path: /tmp/test-results - store_artifacts: path: /tmp/test-results destination: test-results