From d3dc0b07f9b11552d0c7a54423649e9feb02a009 Mon Sep 17 00:00:00 2001 From: Kyrylo Silin Date: Sun, 14 Oct 2018 18:05:18 +0800 Subject: [PATCH] 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/ --- .circleci/config.yml | 159 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..2cae6a6f --- /dev/null +++ b/.circleci/config.yml @@ -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