development environment version control

How do you handle a situation where there are no seperate development and integration environments? Like we have a development web server and database server. Each developer using TFS gets code into their local machine, checks out-makes changes-checks in. While doing this they are changing the development database using stored procedures etc. Sometimes this is breaking build. when this happens some developers are stuck until others are done fixing it. I am not sure if they will add another integration environment. In my previous projects we had a build engineer to do the automation builds.

How do i add automation to build in this current environment? we work with visual studio 2013 for asp.net, TFS and sql server 2012. I haven't worked with tfs earlier(i mean using API for automating builds etc) .

Should we have another copy of sql server development database?

Thanks for your time.
JyozealAsked:
Who is Participating?
 
LajuanTaylorCommented:
This can be tricky because good technology can't always compensate for development snafus or process workflow break downs...

I would first make sure to document the process i.e. workflow that the Team needs to adhere to before releasing any code or change that might impact your systems.

You could implement a Software Change Management process without buying anything for starters.
Example:
http://www.itassetmanagement.net/2013/09/10/process-month-software-change-management-process/

Your automated build process could be handled by using a Release Management package. The following link is from Microsoft Virtual Academy and it focuses on Release Management for Visual Studio:
http://www.microsoftvirtualacademy.com/training-courses/devops-visual-studio-release-management-jump-start

Also, take a look at the following RedGate article that discuses the benefits Automated Deployment. It provides some product recommendations - Octopus Deploy which, has a free Community Edition
http://blog.red-gate.com/5-big-benefits-automated-deployment/
0
 
LajuanTaylorCommented:
In general it's considered a best practice to have separate servers for development, staging, and production. That's where having an infrastructure that can support vritualized devices can be very beneficial...

If you are currently limited in requesting new server builds, there are some options. Although, they are not ideal it could possibly benefit your current situation.

Please note this information is general because I don't know the specs of your devices - physical, virtual, RAM, disk space, processor, etc.

Assuming that you are stuck with one web server and on database server, here's what I suggest:
Single Web Server -
Configure IIS to support multiple host names on a single IP address. You could then have dev.mydomain.com, staging.mydomain.com, and prod.mydomain.com.
See one of many video tutorials https://www.youtube.com/watch?v=nK0wsS9xF4E 

Single Database Server
Since you would need an additional licenses and system resources to run a second instance SQL Server on the same machine, I suggest that you make copy of your database for development and staging on the same server. There's plenty scripts and tools to keep the data synced.

You could add conditional logic in your application to automatically switch databases depending on which site the code is running from...

A great and affordable product that can be used as a standalone or with TFS is called "Beyond Compare". I believe it can help you facilitate automation of your source code changes:
http://www.scootersoftware.com/support.php?zz=kb_scc_tfs
0
 
JyozealAuthor Commented:
Thanks for your comment. we do have separate servers for development,staging and production. But while doing development few times build is broken and other developers wait for particular piece to be up and running. I would like to know how to avoid this?

from your comment i think having another copy of DB on DB server seems like good option. So developers can use their local machines with this DB and development server can use another copy.

I would like to know if more options are available and also about automating the build process.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.