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
Solved! Go to Solution.
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
Hey Clive,
Have seen AEM build/deploy with Bamboo running nicely in the past.
Thanks,
Peter
Views
Replies
Total Likes
Is it open for everyone?.
Jitendra
Views
Replies
Total Likes
We utilize Bamboo here because it integrates with JIRA and BitBucket. Definitely wouldn't switch to Jenkins.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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
Views
Replies
Total Likes
Views
Likes
Replies
Views
Like
Replies