Update build to large resource class in config.yml

This commit is contained in:
Sojan Jose 2022-09-22 13:23:38 -07:00
parent bc929f64b4
commit 6a24fd96b9

View file

@ -8,7 +8,7 @@ defaults:
working_directory: ~/build working_directory: ~/build
docker: docker:
# specify the version you desire here # specify the version you desire here
- image: cimg/ruby:3.0.2-browsers - image: cimg/ruby:3.0.4-browsers
# Specify service dependencies here if necessary # Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images # CircleCI maintains a library of pre-built images
@ -16,8 +16,11 @@ defaults:
- image: cimg/postgres:14.1 - image: cimg/postgres:14.1
- image: cimg/redis:6.2.6 - image: cimg/redis:6.2.6
environment: environment:
- CC_TEST_REPORTER_ID: b1b5c4447bf93f6f0b06a64756e35afd0810ea83649f03971cbf303b4449456f
- RAILS_LOG_TO_STDOUT: false - RAILS_LOG_TO_STDOUT: false
- COVERAGE: true
- LOG_LEVEL: warn
parallelism: 4
jobs: jobs:
build: build:
<<: *defaults <<: *defaults
@ -40,16 +43,15 @@ jobs:
# Multiple caches are used to increase the chance of a cache hit # Multiple caches are used to increase the chance of a cache hit
- restore_cache: - restore_cache:
keys: keys:
- chatwoot-bundle-{{ .Environment.CACHE_VERSION }}-{{ checksum - chatwoot-bundle-{{ .Environment.CACHE_VERSION }}-v20220524-{{
"Gemfile.lock" }} checksum "Gemfile.lock" }}
- chatwoot-bundle
- run: bundle install --frozen --path ~/.bundle - run: bundle install --frozen --path ~/.bundle
- save_cache: - save_cache:
paths: paths:
- ~/.bundle - ~/.bundle
key: chatwoot-bundle-{{ .Environment.CACHE_VERSION }}-{{ checksum "Gemfile.lock" key: chatwoot-bundle-{{ .Environment.CACHE_VERSION }}-v20220524-{{ checksum
}} "Gemfile.lock" }}
# Only necessary if app uses webpacker or yarn in some other way # Only necessary if app uses webpacker or yarn in some other way
- restore_cache: - restore_cache:
@ -91,6 +93,7 @@ jobs:
fi fi
curl -L https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.3.0/openapi-generator-cli-5.3.0.jar > ~/tmp/openapi-generator-cli-5.3.0.jar curl -L https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.3.0/openapi-generator-cli-5.3.0.jar > ~/tmp/openapi-generator-cli-5.3.0.jar
java -jar ~/tmp/openapi-generator-cli-5.3.0.jar validate -i swagger/swagger.json java -jar ~/tmp/openapi-generator-cli-5.3.0.jar validate -i swagger/swagger.json
# Database setup # Database setup
- run: yarn install --check-files - run: yarn install --check-files
- run: bundle exec rake db:create - run: bundle exec rake db:create
@ -104,6 +107,9 @@ jobs:
name: Rubocop name: Rubocop
command: bundle exec rubocop command: bundle exec rubocop
# - run:
# name: Brakeman
# command: bundle exec brakeman
- run: - run:
name: eslint name: eslint
command: yarn run eslint command: yarn run eslint
@ -112,36 +118,78 @@ jobs:
- run: - run:
name: Run backend tests name: Run backend tests
command: | command: |
bundle exec rspec $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) --profile=10 --format documentation mkdir -p ~/tmp/test-results/rspec
~/tmp/cc-test-reporter format-coverage -t simplecov -o ~/tmp/codeclimate.backend.json coverage/backend/.resultset.json mkdir -p ~/tmp/test-artifacts
- persist_to_workspace: mkdir -p coverage
root: ~/tmp ~/tmp/cc-test-reporter before-build
paths: TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
- codeclimate.backend.json bundle exec rspec --profile 10 \
--out test-results/rspec/rspec.xml \
-- ${TESTFILES}
- run:
name: Code Climate Test Coverage
command: |
~/tmp/cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.$CIRCLE_NODE_INDEX.json"
- run: - run:
name: Run frontend tests name: Run frontend tests
command: | command: |
yarn test:coverage mkdir -p ~/tmp/test-results/frontend_specs
~/tmp/cc-test-reporter format-coverage -t lcov -o ~/tmp/codeclimate.frontend.json buildreports/lcov.info ~/tmp/cc-test-reporter before-build
- persist_to_workspace: TESTFILES=$(circleci tests glob **/specs/*.spec.js | circleci tests split --split-by=timings)
root: ~/tmp yarn test:coverage --profile 10 \
paths: --out test-results/frontend_specs/rspec.xml \
- codeclimate.frontend.json -- ${TESTFILES}
- run:
name: Code Climate Test Coverage
command: |
~/tmp/cc-test-reporter format-coverage -t lcov -o coverage/codeclimate.frontend_$CIRCLE_NODE_INDEX.json buildreports/lcov.info
- persist_to_workspace:
root: coverage
paths:
- codeclimate.*.json
# collect reports # collect reports
- store_test_results: - store_test_results:
path: ~/tmp/test-results path: ~/tmp/test-results
- store_artifacts: - store_artifacts:
path: ~/tmp/test-results path: ~/tmp/test-artifacts
destination: test-results
- store_artifacts: - store_artifacts:
path: log path: log
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large
upload-coverage:
working_directory: ~/build
docker:
# specify the version you desire here
- image: circleci/ruby:3.0.2-node-browsers
environment:
- CC_TEST_REPORTER_ID: caf26a895e937974a90860cfadfded20891cfd1373a5aaafb3f67406ab9d433f
steps:
- attach_workspace:
at: ~/build
- run:
name: Download cc-test-reporter
command: |
mkdir -p ~/tmp
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ~/tmp/cc-test-reporter
chmod +x ~/tmp/cc-test-reporter
- persist_to_workspace:
root: ~/tmp
paths:
- cc-test-reporter
- run: - run:
name: Upload coverage results to Code Climate name: Upload coverage results to Code Climate
command: | command: |
~/tmp/cc-test-reporter sum-coverage ~/tmp/codeclimate.*.json -p 2 -o ~/tmp/codeclimate.total.json ~/tmp/cc-test-reporter sum-coverage --output - codeclimate.*.json | ~/tmp/cc-test-reporter upload-coverage --debug --input -
~/tmp/cc-test-reporter upload-coverage -i ~/tmp/codeclimate.total.json
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass workflows:
resource_class: large version: 2
commit:
jobs:
- build
- upload-coverage:
requires:
- build