Notes on deployment policies
- Major version number will remain 0 until we make a "marketing" decision that we are calling Synapse production instead of under development. Minor version number will correspond to Sprint number.
- Code should never be deployed to any production system on Amazon directly from a development environment build. All deployed artifacts should be produced by a successful Bamboo build and deployed to Artifactory by that build process. Only deploy artifacts to AWS that have been obtained from Artifactory.
- Code from the tip of trunk or development should always have a maven version of 0.x-SNAPSHOT where x is the sprint (minor version) number.
- For weekly dev-team integration deployments, it's not necessary to create a new version. We will simply deploy snapshots off trunk, and include the svn build number and date in the version label when deploying to Beanstalk. Any deployments to customer-facing stacks need to be tagged in SVN and archived in Artifactory.
Creating an Initial Minor Release
For end of sprint x, the branching and tagging procedure is:
- Send email to platform declaring a check-in freeze on trunk
- Verify that most recent check-in results in a clean Bamboo build of trunk
- Do a svn copy of trunk to branches/Synapse-0.x. If we need to do work to create a patch release, it will go in this branch, and continue to be labeled 0.x-SNAPSHOT.
- Do a svn copy of branches/Synapse-0.x to tags/Synapse-0.x.0
- Check out tags/Synapse-0.x.0 and change the root pom.xml file to update application version from 0.x-SNAPSHOT to 0.x.0 and check that in. Eclipse will give you a warning that you shouldn't be checking in to a tag. Do it anyways, and then delete the code from your workspace so you never accidently modify the tagged version again.
- Create a copy of the Bamboo build of trunk and reconfigure it to point it at tags/Synapse-0.x.0
- Manually kick off a build, which should pass and create the 0.x.0 artifacts in Artifactory
- Reconfigure the Bamboo build to point to branches/Synapse-0.x
- Update trunk pom.xml to 0.[x+1]-SNAPSHOT and check it in. This should generate a bamboo build of trunk that pushes 0.[x+1]-SNAPSHOT to Artifactory for the first time. Verify that this in fact happens.
- Send email to platform declaring trunk and branch open for check-ins.
Creating a Patch Release
A patch release is a build of Synapse deployed to a production system facing end users, including internal alpha testers. All Patch releases should have the form 0.x.y, where 0.x.0 is the initial sprint deliverable, and subsequent patches that are customer facing increment the 3rd position of the version number. The procedure to create patch y on branch x is:
- Send email to platform declaring a check-in freeze on the branch
- Verify that the most recent check-in on the branch resulted in a clean Bamboo build
- Do a svn copy of branches/Synapse-0.x to tags/Synapse-0.x.y
- Check out tags/Synapse-0.x.y and change the root pom.xml file to update application version from 0.x-SNAPSHOT to 0.x.y and check that in. Eclipse will give you a warning that you shouldn't be checking in to a tag. Do it anyways, and then delete the code from your workspace so you never accidently modify the tagged version again.
- Reconfigure the Bamboo build of the branch to point to tags/Synapse-0.x.y
- Manually kick of a Bamboo build and verify that a clean build generates Synapse-0.x.y artifacts in Artifactory
- Reconfigure the bamboo build to point back to branches/Synapse-0.x
- Send email to platform declaring branch open for checkouts.