Expand my Community achievements bar.

SOLVED

Which is a better continuous integration tool for AEM, Jenkins or Bamboo

Avatar

Level 6

I am trying to work out which continuous integration system, between Bamboo and Jenkins,  would be more suitable for continuous integration.

My scenario is that developers will work on their local host  to develop components and OSGI bundles using Eclipse. So assuming everything is good to go their code was sent to a BitBucket git repository, and all merges are complete. Now I want to deploy the component code, and compile and deploy OSGI  bundles to the authoring server, do QA and then if QA is passed deploy component code, and compile and deploy OSGI  bundles bundles to production, which has two load balanced servers.

 So I know I can use Jenkins to do this. I had previously asked on the AEM experience manager forum how to use Jenkins with AEM. Titled -  "Jenkins and Continual Integration with AEM Authoring Server ".

And from the answers on it I found this link https://wiki.jenkins-ci.org/display/JENKINS/CRX+Content+Package+Deployer+Plugin.

So there is an AEM  Jenkins plugin.

I have not find a similar plugin for Bamboo, and the company has a preference for using Bamboo because of its tie in with Jira. So far it appears to me that Jenkins would be better to use for AEM continuous integration.

I would greatly appreciate it if anyone could help me by directing me to any sources of knowledge that would help be to evaluate which of the two continuous integration systems is better for use with AEM.

 

Regards

Clive Stewart

1 Accepted Solution

Avatar

Correct answer by
Level 1

Hi Clive, both Jenkins and Bamboo will get the job done. If cost is concern Jenkins is open source. However, I recommend Bamboo over Jenkins, if the team is using Jira and/or the rest of the Atlassian stack. I personally find a lot of value in Bamboo's ability to automatically generate a pipeline per branch.  At scale this permits a githubflow style of branch management. 

You should really consider the new bread build tools such as Wercker, Circle-CI and Travis which forgo the complex user interfaces in favor of a simple YML configuration file.

I'd also highly recommend Ansible for managing the provisioning and deployment of AEM infrastructure. Having your build server execute ansible playbooks really help makes things so much more manageable. Puppet, Chef are possible of course, the main point is to automate everything. Of course Ansible has Ansible Tower as a UI to help out.

View solution in original post

12 Replies

Avatar

Level 9

Clive,

To be honest, Jenkins is suitable if timeline does not allow. There are things available right now. I am not sure if anyone has done anything with Bamboo in AEM. It is unknown territory. And it will take time to build from scratch. Though could be interesting to explore.

Jenkins is also a another full proof solution which could be integrated with Jira. 

Jitendra

Avatar

Level 6

Thank you Jitendra,

What you say bears out with my research so far. I have not been able to find a use case study of Bamboo with AEM. Even on this forum a search on Bamboo returns no threads (except this one).

 

Regards

Clive Stewart

Avatar

Community Advisor

Hey Clive,

 

Have seen AEM build/deploy with Bamboo running nicely in the past.

 

Thanks,

Peter

Avatar

Level 9

Is it open for everyone?. 

Jitendra

Avatar

Level 8

We utilize Bamboo here because it integrates with JIRA and BitBucket.  Definitely wouldn't switch to Jenkins.

Avatar

Level 8

Hey Clive, I think maybe changing your train of thought would be a good idea.  You're really not integrating Bamboo (or Jenkins) with AEM - you're integrating it with Maven.  I don't know what specific needs you have from a CI server so it's a little difficult to give answers, but our integration simply kicks off a maven build and deploys the packages to the author/publish servers and then we have a script to flush the dispatcher cache.
We use the hosted Bamboo so we run it using AWS instances.

https://confluence.atlassian.com/bamboo/maven-289277038.html

Avatar

Level 6

Hi Leeasling,

I think you are correct and that I am looking at it the wrong way round.

Thank you, you have given me the answer I was looking for.

 

Regards

Clive Stewart

Avatar

Employee Advisor

Hi Clive,

you probably want to know for which of these 2 systems the tooling is better/more mature, correct?

I don't have any preference, but let me give you an advice: I wouldn't deploy via the buildserver to production instances. Normally these tools deploy all instances at once, which isn't really appropriate for production instances; with AEM you'll have a downtime on your publish servers then.

kind regards,
Jörg

Avatar

Level 6

Jörg Hoh wrote...

Hi Clive,

you probably want to know for which of these 2 systems the tooling is better/more mature, correct?

I don't have any preference, but let me give you an advice: I wouldn't deploy via the buildserver to production instances. Normally these tools deploy all instances at once, which isn't really appropriate for production instances; with AEM you'll have a downtime on your publish servers then.

kind regards,
Jörg

 

Hi Jörg,

I had not thought about how the build tools will effect the publish server. Thank you for explaining this.

However your answer has created a new question in my mind.

What then is the better way to deploy to the publish servers?

 

Regards

Clive

Avatar

Correct answer by
Level 1

Hi Clive, both Jenkins and Bamboo will get the job done. If cost is concern Jenkins is open source. However, I recommend Bamboo over Jenkins, if the team is using Jira and/or the rest of the Atlassian stack. I personally find a lot of value in Bamboo's ability to automatically generate a pipeline per branch.  At scale this permits a githubflow style of branch management. 

You should really consider the new bread build tools such as Wercker, Circle-CI and Travis which forgo the complex user interfaces in favor of a simple YML configuration file.

I'd also highly recommend Ansible for managing the provisioning and deployment of AEM infrastructure. Having your build server execute ansible playbooks really help makes things so much more manageable. Puppet, Chef are possible of course, the main point is to automate everything. Of course Ansible has Ansible Tower as a UI to help out.

Avatar

Employee Advisor

Hi Clive

you should have a look for a system to automate platform maintenance and deployments; there are many out there, e.g. Chef, puppet, ansible for Linux plattforms, and probably many others. There you have a better control which server is deployed at a time, and this allows you to coordinate the downtimes of publish systems to sustain the service during that time as well.

kind regards,
Jörg

Avatar

Level 1

If Jenkins/Bamboo feels too clunky for you I recommend trying Buddy. You can use it to run Maven builds with code from Bitbucket and deploy to the user server on push to branch + the whole configuration takes like 10-15 minutes (the UI/UX is just exceptional). Just don't confuse it with buddybuild which is 100% mobile-focused, the proper Buddy goes with https://buddy.works