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; is 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 already configured to execute maven releases from Bamboo.
We also have a Continuous Deployment set up.
...
- Before every build, a plugin called Predator will delete old build working directories. But if the same agent runs the same build twice in a row, left overs from previous runs can still be there. It's possible to mark 'Force clean directory' in the Bamboo checkout task if that's important.
- The very same plugin removes all SNAPSHOTs from the maven local repository. Refer to 25558377 Continuous Integration for more details. The deploying snapshots blogpost explains the big picture, but the idea is that if the snapshot doesn't exist anymore, we want to fail fast.
- Maven is configured with updatePolicy to always. Which means that if there's a new version of a plugin or dependency and you defined a range version (or no version at all), the very next build will pick the new version (the same effect as having -U in all the build)
...