semaphore: # Default `.semaphore/semaphore.yml` contents version: v1.0 name: AppSignal Ruby Build and Tests agent: machine: type: e1-standard-2 os_image: ubuntu1804 # Cancel all running and queued workflows before this one auto_cancel: running: # Ignore main AND develop branch as we want it to build all workflows when: "branch != 'main' AND branch != 'develop'" global_job_config: env_vars: - name: _BUNDLER_CACHE value: "v2" - name: _GEMS_CACHE value: "v2" - name: BUNDLE_PATH value: "../.bundle/" - name: RUNNING_IN_CI value: "true" - name: RAILS_ENV value: "test" - name: JRUBY_OPTS value: "" - name: COV value: "1" prologue: commands: - checkout - rm -f $HOME/.rbenv/plugins/rbenv-gem-rehash/etc/rbenv.d/exec/~gem-rehash.bash - "if [ -n \"$_C_VERSION\" ]; then sem-version c $_C_VERSION; fi" - sem-version ruby $RUBY_VERSION - ./support/check_versions - cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) - cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE) - ./support/install_deps - bundle config set clean 'true' - ./support/bundler_wrapper install --jobs=3 --retry=3 epilogue: on_pass: commands: - cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) .bundle - cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE) $HOME/.gem on_fail: commands: - "[ -e ext/install.report ] && cat ext/install.report || echo 'No ext/install.report file found'" - "[ -f ext/mkmf.log ] && cat ext/mkmf.log || echo 'No ext/mkmf.log file found'" blocks: - name: Validation dependencies: [] task: jobs: - name: Validate CI setup env_vars: - name: RUBY_VERSION value: 2.6.5 - name: GEMSET value: no_dependencies - name: BUNDLE_GEMFILE value: gemfiles/no_dependencies.gemfile commands: - ./support/bundler_wrapper exec rake build_matrix:semaphore:validate - name: Linters dependencies: [] task: jobs: - name: RuboCop env_vars: - name: RUBY_VERSION value: 2.6.5 - name: GEMSET value: no_dependencies - name: BUNDLE_GEMFILE value: gemfiles/no_dependencies.gemfile commands: - ./support/bundler_wrapper exec rubocop matrix: defaults: rubygems: "latest" bundler: "latest" gemsets: # By default all gems are tested none: - "no_dependencies" old_rails: - "no_dependencies" - "rails-3.2" - "rails-4.2" minimal: - "no_dependencies" - "rails-5.2" - "rails-6.0" ruby: - ruby: "1.9.3-p551" rubygems: "2.7.8" bundler: "1.17.3" gems: "none" - ruby: "2.0.0-p648" rubygems: "2.7.8" bundler: "1.17.3" gems: "old_rails" - ruby: "2.1.10" rubygems: "2.7.8" bundler: "1.17.3" gems: "none" - ruby: "2.2.10" rubygems: "2.7.8" bundler: "1.17.3" gems: "none" - ruby: "2.3.8" gems: "none" - ruby: "2.4.9" gems: "none" - ruby: "2.5.7" gems: "minimal" - ruby: "2.6.5" - ruby: "2.7.1" - ruby: "3.0.1" - ruby: "jruby-9.2.19.0" gems: "minimal" env_vars: - name: "_C_VERSION" value: "8" gems: - gem: "no_dependencies" - gem: "capistrano2" - gem: "capistrano3" - gem: "grape" - gem: "padrino" - gem: "que" - gem: "que_beta" - gem: "rails-3.2" bundler: "1.17.3" exclude: ruby: - "2.6.5" - "2.7.1" - "3.0.1" - gem: "rails-4.2" bundler: "1.17.3" exclude: ruby: - "2.6.5" - "2.7.1" - "3.0.1" - gem: "rails-5.0" exclude: ruby: - "2.0.0-p648" - "3.0.1" - gem: "rails-5.1" exclude: ruby: - "2.0.0-p648" - "3.0.1" - gem: "rails-5.2" exclude: ruby: - "2.0.0-p648" - "3.0.1" - gem: "rails-6.0" exclude: ruby: - "2.1.10" - "2.2.10" - "2.3.8" - "2.4.9" - gem: "resque-1" bundler: "1.17.3" exclude: ruby: - "3.0.1" - gem: "resque-2" - gem: "sequel" - gem: "sequel-435" exclude: ruby: - "3.0.1" - gem: "sinatra" - gem: "webmachine"