Bamboo Rails CI howto?

Using Bamboo 5 rc1. Setting up 100% fresh. I've added rake-bamboo-plugin

Regarding plan configuration, setup, stages, tasks, cucumber, through to the deployment project capability:

Is there a howto? Best practices? Anything current? Everything I find is pretty old or lacking in one way or the other. Certainly I can configure Bamboo to execute the necessary steps, but I was hoping for a little enlightenment and best practices.

Any pointers or a new wiki page from Atlassian would be appreciated. I already upvoted the request for documentation issue.

4 answers

1 accepted

Accepted Answer
0 votes

I had enough trials and tribulations that I ended up forking and creating the bamboozled-ruby-plugin.

a) https://marketplace.atlassian.com/plugins/com.alienfast.bamboozled.ruby.bamboozled-ruby-plugin

and

b) elastic beanstalk gem: https://github.com/alienfast/elastic-beanstalk

The elastic beanstalk has an eb:package command for creating artifacts that the bamboozled-ruby-plugin can use for deployment. If you are deploying elsewhere, you could look at using the capistrano task etc.

So this link was a start, but not much mare than a walkthrough of the rake-bamboo-plugin. I'm still hoping for a best practices type of resource.

I'm in process of getting this going in the OnDemand version. It's even more restrictive since we can't use any ruby plugins.

I've ended up customizing an ec2 image to have rvm and various rubies installed. Next steps are to get deployment plans going.

Since ruby apps are typically deployed from source, there aren't any binary artifacts like a java build project will typically have. Best I can come up with is have the build process write a file containing the revision that was just built, and mark that file as an artifact. Then have the deployment plan copy that and have my deployment scripts read that revision as the one to deploy.

Hi guys,

I'm currently setting up a Rails build and here is what I've done so far.

Note - I'm on Bamboo 5.5.1 and my Git repo is not publically accessible so I end up packaging up my RoR project as a .deb and sending to my servers.

Details:

- Setup a regular project with 5 tasks (all running in the Default Stage/Default Job)

a) Source code checkout (I'm also using the Plan branch feature so I can build branches as well)

b) Script task - cleanup of old .deb packages

c) Script task - generate a build.html file with Bamboo build #, Git branch, etc.

d) Script task - copy in any RoR "secrets" Yaml files (eg. custom files with API keys, etc).

e) Script task - package up RoR "build" as a Debian package using the FPM gem. It actually executes a shell script that I used to wrap FPM.

In this job, I'm also defining the .deb package as an "Artifact definition" to be shared later with the Deployment Project.

Deployment Project:

Defined a staging and QA environment each with the same set of tasks

a) Artifact download - this is using the .deb package I created in the build plan

b) SCP Task - sends .deb package to remote server

c) SSH Task - Here I'm just running a bunch of commands to unpack the .deb file, change ownership, and then run "bundle install, bundle exec rake db:migrate, bower install, and finally, restart nginx"

The one thing that I found is annoying is that there isn't an option to set a bunch of servers and then choose them from a list (like Jenkins).

In the deployment project, you need to re-specify the servers and their keys for every SCP task. So, if I were to send to 3 separate servers, I have to manually re-key in the same task (with a hostname change) each time. There isn't even an option to copy a task. If you manage more than a handful of servers, it will get tedious real fast. It makes more sense to allow you to list all of your servers & keys, and then create some sort of group so that the deployment project can SCP/SSH to them in parallel.

I don't think this is the best way of doing this, but it at least works. NOTE that I never used the rake-bamboo plugin.

Hi Ken,

I almost have a same approach but I have been failing. The ssh task is great to run commands on a remote server but when I do bundle or rake, it just says command not found.

After further fix it says - /usr/bin/env: ruby_executable_hooks: No such file or directory

Any idea what is wrong?

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Monday in Jira Ops

Jira Ops Early Access Program Update #1: Announcing our next feature and a new integration

Thanks for signing up for Jira Ops! I’m Matt Ryall, leader for the Jira Ops product team at Atlassian. Since this is a brand new product, we’ll be delivering improvements quickly and sharing updates...

305 views 0 6
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you