I don't want to maintain this plugin anymore since I don't use bamboo at all now, and rarely write Ruby code, and even less so Java code.
I have had this plugin archived in the marketplace, hopefully this frees up space for someone else to start a new plugin for ruby.
Ruby Bamboo Plugin
This is a bamboo plugin project which when installed enables configuration of tasks which run various ruby based build tools including bundler, rake, and capistrano.
Via a Bamboo task, this plugin enables you to run:
To use this Bamboo plugin you will need a ruby runtime. This can either be the one installed by default on OSX or one installed via package manager in for example Ubuntu. If your build server is not running as root, which is preferable, you will need to install all the gems used by your project prior to running a build.
Bundler Install task by default is setup to quickly execute
bundle install dependencies during the build process. Note will only work when RVM is installed in the home directory of the user the build server is running under.
Bundler CLI is setup to allow for any variations on command line execution of
Bundle exec with Rake
Rake task has the option to be run from
Alternatively you could install RVM and use a separate gemset for your project.
As an example follow the following steps to setup a project and run some tests using this plugin. This assumes your using either OSX or Linux. If your on OSX you will need to install XCode, and if your installing version 4.1 then you will also need GCC Installer as this version omits gcc in favor of llvm and clang.
Install RVM (once installed it may list some dependencies you need to install).
$ curl -L https://get.rvm.io | bash -s stable
Install a ruby.
rvm install 1.9.3
Switch to using this ruby.
rvm use 1.9.3
Create a new gemset for rails.
rvm gemset create rails3
Switch to this gemset.
rvm use 1.9.3@rails3
Install the rails gem and rspec
gem install rails rspec-rails
Build a new rails project
rails bamboo-build-test -T
Add RSpec to project by appending this line to the bottom of the Gemfile in the newly created project.
gem "rspec-rails", :group => [:test, :development]
Run bundler to ensure all the dependencies are installed into the gemset you created.
Configure rspec in this project.
rails generate rspec:install
Using scaffold build a data entry interface for a model.
rails generate scaffold Post name:string title:string content:text
Remove the two pending specs, not necessary for this example.
rm ./spec/helpers/posts_helper_spec.r ./spec/models/post_spec.rb
Run the database migration script.
Run rspec to ensure all the generated tests, should be all green.
Add this project to your favourite online project hosting site.
Navigate to the capability admin interface and click the "Auto Detection" link, this should detect the installed ruby and it's associated gemsets.
Create a plan which uses the online project site and add a job with a Rake Task which runs the spec target using the 1.9.3@rails3 runtime.
This plugin should pickup ruby runtimes installed using rbenv, I use a subset of the rvm steps to test this.
To enable test reporting do as follows.
- Add the this fragment to your Gemfile.
group :test do gem "rspec_junit_formatter" end
- Edit your the .rspec file in the base of your project and replace the contents with.
--format RspecJunitFormatter --out rspec.xml
- Add a JUnit test task to your Job and configure it to look for rspec.xml which contains the test results.
config/cucumber.yml and change the
std_opts to include the
junit formatter as well as specifiy the output directory. For example:
std_opts = "-r features/support/ -r features/step_definitions --quiet -f pretty -f junit -o test-reports --strict --tags ~@wip --tags ~@todo"
Ruby Runtime Manager Support
In version 1.5 I added support for more than one ruby version manager. The ones which were initially supported are:
- System Ruby Runtime Manager which will search /usr/bin and /usr/local/bin for ruby and gem commands. Note it is done this way to avoid PATH overrides in the default shell, commonly done by developers or RVM.
- RVM Runtime Manager.
- rbenv Runtime Manager.
- Windows Runtime Manager.
To enable this feature a concept of runtime labels was introduced, these are in the form of ruby runtime manager then ruby version and gemset (for those without gemsets everything it is set to default) for example 'RVM 1.9.3-p0@rails32'.
When the plugin encounters a runtime label which has no ruby runtime manager as with existing installations it will just use RVM.
System Ruby Support
This will search /usr/bin and /usr/local/bin for ruby and gem commands. Note it is done this way to avoid PATH overrides in the default shell, commonly done by developers or RVM.
As of version 2.0 I added a ruby runtime manager which supports detection of ruby(s) on windows systems.
- I test this using the rails installer project installed on the system. On my test system I verified there was only on installation of ruby.exe using the which command.
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\markw>where ruby.exe C:\RailsInstaller\Ruby1.9.3\bin\ruby.exe C:\Users\markw>
- I have also tested jruby 1.7 on windows the only caveat is this must be added to the %PATH%.
Note: updates the %PATH% variable you will require you to restart your bamboo server.
I have tested this with a simple gem project built with bundler and a rails 3.2 project.