Every module have an associate build in our CI server, https://ci.openmrs.org/allPlans.action . On every commit to master, a build is triggered; if all the tests pass, the SNAPSHOT maven artifacts will be deployed to http://mavenrepo.openmrs.org/nexus/index.html (remote maven).
Some builds are configured to trigger other plans after successfully completing; you can get the full picture in Build > Build Dependencies.The majority of the builds are configured to send success and fail notifications to firstname.lastname@example.org.
Some builds are already configured to execute maven releases from Bamboo.
We also have a Continuous Deployment set up.
The Bamboo server, the one discovering code changes and collecting tests results, is a single server. But the builds actually run not in the server, but in Bamboo agents instead (in Jenkins they would be called 'slaves').
Both machines are Ubuntu 14.04. The agents are provisioned using puppet, so do not install anything from the build. Each agent inside the same machine will run isolated in a different user (
bamboo-agent-2), having isolated maven local repository (
~/.m2/repository) and default java tmp dir (
~/bamboo-agent/.agent_tmp). Both the private tmp diretories and the main /tmp will be cleaned up regularly.
Unit tests and tmp folder
When running unit and integration tests from Maven (surefire maven plugin or failsafe plugin), by default the temp folder defined per Bamboo agent will be ignored. Surefire by default fork the JVM when running the tests, and java.io.tmp is not passed to the forked JVM
In case your build needs to create files using a specific name in /tmp, make sure so configure surefire to pass the received tmp configuration to the forked JVM:
Otherwise, different users can try to run your build, and the second one won't have permission to override or delete the file that already exists.
In case you need to test something in the Bamboo agents, check openmrs-contrib-bambooagent has a vagrant configuration (so, vagrant up is all you need). The same process is described in Developer How-To Launch a Local Instance of the Reference Application.
If you feel like doing some experimentation with Bamboo, check https://ci-stg.openmrs.org/ . In case you need build agents, you can always configure your vagrant box to ci-stg (in install.pp).