Test with help of CircleCI

CircleCI provides much faster builds than TravisCI:

CircleCI - less than 1 minute
TravisCI- 6 minutes

The cost is the complexity of the config:
https://circleci.com/docs/2.0/configuration-reference/
This commit is contained in:
Kyrylo Silin 2018-10-14 18:05:18 +08:00
parent 13e9c39562
commit d3dc0b07f9
1 changed files with 159 additions and 0 deletions

159
.circleci/config.yml Normal file
View File

@ -0,0 +1,159 @@
version: 2
references:
repo_restore_cache: &repo_restore_cache
restore_cache:
keys:
- repo-{{ .Environment.CIRCLE_SHA1 }}
repo_save_cache: &repo_save_cache
save_cache:
key: repo-{{ .Environment.CIRCLE_SHA1 }}-{{ epoch }}
paths:
- ~/pry
bundle_install: &bundle_install
run:
name: Install Bundler dependencies
command: bundle install --path ~/pry/vendor/bundle --jobs 15
unit: &unit
run:
name: Run unit tests
command: bundle exec rake
install_alpine_nano: &install_alpine_nano
run:
name: Install Nano text editor on Alpine Linux
command: apk add nano
install_ubuntu_nano: &install_ubuntu_nano
run:
name: Install Nano text editor on Ubuntu
command: sudo apt-get install nano
jobs:
rubocop_lint:
docker:
- image: circleci/ruby:2.5
working_directory: ~/pry
steps:
- checkout
- <<: *repo_save_cache
- <<: *bundle_install
- run:
name: Run RuboCop linting
command: bundle exec rubocop --parallel
yard_lint:
docker:
- image: circleci/ruby:2.5
working_directory: ~/pry
steps:
- checkout
- <<: *repo_save_cache
- <<: *bundle_install
- run:
name: Run YARD linting
command: bundle exec yardoc --fail-on-warning --no-progress
"ruby-1.9":
docker:
- image: kyrylo/ruby-1.9.3p551
working_directory: /home/circleci/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"ruby-2.0":
docker:
- image: kyrylo/ruby-2.0.0p648
working_directory: /home/circleci/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"ruby-2.1":
docker:
- image: circleci/ruby:2.1
working_directory: ~/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"ruby-2.2":
docker:
- image: circleci/ruby:2.2
working_directory: ~/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"ruby-2.3":
docker:
- image: circleci/ruby:2.3
working_directory: ~/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"ruby-2.4":
docker:
- image: circleci/ruby:2.4
working_directory: ~/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"ruby-2.5":
docker:
- image: circleci/ruby:2.5
working_directory: ~/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
"jruby-9.1-jdk":
docker:
- image: circleci/jruby:9.1-jdk
working_directory: ~/pry
steps:
- <<: *repo_restore_cache
- <<: *bundle_install
- <<: *unit
workflows:
version: 2
build:
jobs:
- rubocop_lint
- yard_lint
- "ruby-1.9":
requires:
- rubocop_lint
- yard_lint
- "ruby-2.0":
requires:
- rubocop_lint
- yard_lint
- "ruby-2.1":
requires:
- rubocop_lint
- yard_lint
- "ruby-2.2":
requires:
- rubocop_lint
- yard_lint
- "ruby-2.3":
requires:
- rubocop_lint
- yard_lint
- "ruby-2.4":
requires:
- rubocop_lint
- yard_lint
- "ruby-2.5":
requires:
- rubocop_lint
- yard_lint
- "jruby-9.1-jdk":
requires:
- rubocop_lint
- yard_lint