Looking for some advice.
Can someone point me to some best practices regarding how to begin setting up for automated builds and deployments?
We use Finalbuilder for doing our deployments now, but each developer compiles their own code and deploys manually to a development environment. Then they use a tool that creates deployment scripts which the deployment process uses to automate the deployments to alpha and prod.
We want to begin doing automated builds while maintaining automated deployments. The problem lies in that right now the developer is responsible for knowing the deployment instructions for each object moving. The scripting tool allows them to drag in files and specify what they need done to it (web files, ASP.NET apps, .NET apps, SQL scripts, MSMQ queue creations, etc...).
We want to move away from the developer needing to specify this everytime- just set it up once, and then let Finalbuilder use the information to do the builds/ deployments when the objects need to move.
I am struggling with where to put this info and want to know how other places do it, what works, etc. I've designed an elaborate database for storing it (kind of a medadata database), but it just seems too complex. I've thought about storing it in text files and storing them in the SCM repository, but am not sure if that's the right way to go either.
It seems like we need instructions for both builds and deployments. These are the kinds of questions the instructions need to answer:
Builds:
Where is the project in the SCM repository?
What is the name of the object?
What are my dependencies/ references?
What unit tests are associated with this object?
Is this object COM or .NET?
Deployments:
To which servers am I deployed?
Do any services need to stopped for me to be deployed?
Do I need to be GAC'd? Registered? REGASM'd?
If I am an ASP.NET project what is my app pool?
Also- for doing automated builds, do most people have a separate FB project for each binary in their application? We have hundreds of binaries, so I am not sure how we would manage that. Do you store the FB project alongside the code in the SCM?
I appreaciate any feedback on this thread. These questions have been nagging at me for the last 4 years, but now I am getting very close to the point where I am able to make this change happen.
Owen