I have started on a new project and am looking forward to implementing continuous integration (CI). There are quite a few decisions that need to be made as far as how we want to handle the build and deployment process. I am working with a small group of people who have worked together in the past. They have some practices that have worked well for them. I don't want to rock the boat too much, so I am evaluating their process with what I know and am familiar with myself. The biggest difference between us... Java for them and .Net for me.
The first significant divergence is related to database change management. They have used a process maintaining change scripts for their clients while updating the creation scripts for source control. This allows them to easily query their source control system for a specific revision and build both the application and the database. Personally, it feels like there is extra work involved in updating the creation scripts. I like the idea of storing the change scripts (including data manipulation to accommodate updating schemas) in source control and letting the build tool of choice execute the scripts in the proper order.
I will be working with the team to determine what makes the most sense for us. If there are no compelling reasons to change this aspect of the build process, then I will leave it alone. Another consideration is making it easy for developers to submit change scripts in reference to user story or defect ids. The team already has something similar for their previous projects but I think that it is specific to a client.
If anyone has experience with either of these approaches (or with other approaches altogether) feel free to provide feedback. Expect an update in a couple of days.