image: ruby:2.7 workflow: rules: - changes: - CLI/ruby/**/* variables: BUNDLE_PATH: .bundle/vendor cache: &cache policy: pull-push key: files: - Gemfile.lock paths: - CLI/ruby/.bundle/vendor before_script: - cd CLI/ruby - gem update --system - bundle update --bundler - bundle install -j $(nproc) test:2.7: image: ruby:2.7 stage: test cache: <<: *cache policy: pull script: - bundle exec rspec --format progress test:2.6: image: ruby:2.6 stage: test cache: <<: *cache policy: pull script: - bundle exec rspec --format progress test:2.5: image: ruby:2.5 stage: test cache: <<: *cache policy: pull script: - bundle exec rspec --format progress lint: stage: test cache: <<: *cache policy: pull script: - bundle exec rubocop release: stage: deploy needs: ["test:2.7", "test:2.6", "test:2.5", lint] rules: - if: $CI_COMMIT_TAG =~ /^ruby\/v.*$/ cache: <<: *cache policy: pull script: - bundle exec rake clean - bundle exec rake clobber - bundle exec rake build - bundle exec gem push pkg/terminal_game_of_life-*.gem