Bundle install on build in TeamCity

continuous integrationruby-on-railsteamcity

I'm trying to run a build in TeamCity. The application that i'm trying to build for unit tests is coded in Ruby on Rails.

I configured the VCS root to get from my repository, after cloning the build fails. Here it is:

Bundler::GemNotFound: Could not find gem 'devise (= 2.1.0) ruby' in the gems available on this machine.

Stacktrace:
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:287:in `resolve'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:346:in `block in resolve_requirement'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:344:in `catch'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:344:in `resolve_requirement'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:295:in `block in resolve'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:294:in `reverse_each'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:294:in `resolve'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:161:in `start'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:128:in `block in resolve'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:127:in `catch'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/resolver.rb:127:in `resolve'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/definition.rb:192:in `resolve'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/definition.rb:127:in `specs'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/definition.rb:172:in `specs_for'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/definition.rb:161:in `requested_specs'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/environment.rb:23:in `requested_specs'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:11:in `setup'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler.rb:107:in `setup'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/bundler-1.1.4/lib/bundler/setup.rb:17:in `<top (required)>'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
/root/TeamCity/buildAgent/work/a85b8d8560bb396b/config/boot.rb:10:in `<top (required)>'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/root/TeamCity/buildAgent/work/a85b8d8560bb396b/config/application.rb:1:in `<top (required)>'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/local/rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/root/TeamCity/buildAgent/work/a85b8d8560bb396b/Rakefile:5:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/root/TeamCity/buildAgent/plugins/rake-runner/rb/runner/rake_ext.rb:314:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/root/TeamCity/buildAgent/plugins/rake-runner/rb/runner/rake_ext.rb:314:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p320@global/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/root/TeamCity/buildAgent/plugins/rake-runner/rb/runner/rake_ext.rb:179:in `run'
/root/TeamCity/buildAgent/plugins/rake-runner/rb/runner/rakerunner.rb:40:in `<main>'

Source: /root/TeamCity/buildAgent/work/a85b8d8560bb396b/Rakefile:5:in `<top (required)>'

It seems that it needs to run bundle install first, but how & where in configuration can do this on TeamCity?

Best Answer

Under the build configuration setting on "Configuration Step 3" -> "Build Steps" add as first step a "Command Line" step which calls bundle install.

Don't forget to set the Ruby environment (as above under "Configuration Step 3" -> "Build Steps") by adding a "Build feature" and selecting "Ruby environment configurator". You can then select your rvm ruby version and gemset. Looking at your stacktrace this would be ruby-1.9.2-p320 as interpreter name and global as gemset.

Related Topic