Home / BVA Auctions / Our move from Jenkins to Bamboo to Jenkins 2.0

Our move from Jenkins to Bamboo to Jenkins 2.0

In the past (5+ years ago) we used a Jenkins server to build all our projects. Then one day, it crashed… hard! The way it crashed was however not normal. Googling some of the last messages in the logs resulted in a handful of hits. None of them giving a fix on how to get it starting again… in the end it never did. Result of the crash was, that all our configuration was gone. And even worse was, that there was no backup.

At that moment we lost our faith in Jenkins and started looking at other CI servers. One of them being Atlassian‘s Bamboo. It seemed to do what we wanted and it was built by the same company as our wiki (Confluence) and issue tracking tool (Jira). So there were some extra possibilities/integrations we could possibly use.

From that moment on we have been using Bamboo without many complaints. It always fitted our purpose. But recently it is starting to hold us back. Some of the reasons are:

  • Pretty expensive if you want to run remote agents
  • Build and deploy pipelines are not integrated (I will come back to this one in a bit)
  • Slow development of the product itself (feature request take years to be added)

Especially the second item I mentioned is not helping when you are moving more and more toward continuous deployments.

So what were we trying to do?

First let me tell you that our build pipeline is not that difficult and pretty much straightforward. We do what everybody does. Build and test. Since our tests also include functional/Selenium tests, we wanted to do a build (and test), deploy it to a server and then run the functional tests against the deployed version. In Bamboo this will be a build plan, followed by a deploy plan, followed by a build plan again. And that last part is not that obvious in Bamboo. You cannot trigger a build plan after you have done a deployment. Well, you can, but it requires a workaround where you fire an API request to trigger a new build. But even that does not work without any issues. Our current script which we call from our deployment plan looks as follows:

code=$(curl --user ${bamboo.username}:${bamboo.password} -X POST \
        -H "Accept: application/json" \
        --silent --output /dev/stderr --write-out "%{http_code}" \
        http://bambooserver/rest/api/latest/queue/BVA-KEY
    )

if test $code -ne 200; then
    echo "curl request did not return 200 but" $code
    exit 1
fi

Of course it can be improved. We could do return code checking, building loops and whatnot. Main point here is, that this is a pretty common pattern when moving towards CD. The feature which could make this a lot easier in Bamboo has been requested by the community for over a year ago (maybe even longer).

For us this indicates that it is time to move on. We are developing at high speed, want to move towards CD and the current situation is not helping. So we started looking around again and saw that Jenkins 2.0 was ready to be launched. And for me, as a developer, one feature really stands out. It brings us “Pipeline as code“. So how your pipeline is defined, is stored with your code. Which is also the place it should be at in my opinion.

Think of the situation in which you modify your code (on a branch) which also requires a change in your build pipeline. How awesome would it be if you do not have to change your build pipeline on a CI server and potentially break all builds of other branches! Or create a new project and by just adding the repository to Jenkins it will automatically create the pipeline!

This really sounds like a very nice feature… and we are aware that probably there are other CI/CD solutions that also offer such a feature. So why not choose CI/CD solution X? We like the size of the community, the control we have over the environment. One thing we did not do was to have an extensive comparison between a lot of solutions. Jenkins we had experience with from the past (and up until the crash it was a very good experience), it came with a new version just around the same moment we started looking around. And it has some really nice features.

Currently we are setting up the new Jenkins server and just trying out things on it. But for now it looks very promising.

Interested joining BVA Auctions?

Take a look to our vacancies

About Marcel van den Brink

Marcel van den Brink is a software engineer with almost 20 years of experience in web development. He is passionate about the development process, CI, CD, metrics and getting the most out of a team.

Leave a Reply

Your email address will not be published. Required fields are marked *

css.php