As mentioned in my last post, I’ve spent the best part of the last year optimizing the processes involved in developing Sitecore solutions in multi developer setups.
In this post I’ll describe the core areas we’ve focused on, and shortly describe what we’ve done. As I said in my last post this has been a team effort in the development department in 1508 A/S. I’m not going to mention any names (then I won’t forget any).
Establishing a shared standard
We’ve implemented a code bible setting standards for some of the basics in .Net and Sitecore development. This ensures a common way of developing making it easier to support etc. I’m not going to waste more space explaining why this is a good idea (since it’s just common sense)...
To ensure that everyone adheres to these standards, we are using StyleCop.
As any other development company we are using a Source control system – we are using SVN. We commit all of the code specialized in each Sitecore solution to SVN. We also commit a serialized version of the Master database (and if we make changes to the Core database this is serialized and committed too). We also commit other technical assets like external references.
As of Sitecore 6, Item serialization has been available. Due to my involvement in the development of Sitecore Intranet Portal we had an early preview of this in version 5.3, and – though a bit unstable – it was clear that this had to be the future of DB-versioning in Sitecore development environments. It adds the ability to commit partial database changes – just like you do with the source code.
Standard Sitecore implementation
One of the things we brought from Enzym to 1508 was a standardized Sitecore solution called XPAC. This has been redeveloped from scratch using all of the best concepts, conventions and techniques. We now have an extremely strong foundation for all our Sitecore solutions, including a thought through frontend framework, a well tested .Net API and much more. This has been implemented throughout 1508 including IA and Design.
Handling deploy of development environments
One of the tedious and time consuming processes of developing Sitecore solutions is setting up a new environment (whether it’s a new solution, or you just have to implement some changes to an existing solution). And it’s not only boring and lengthy… if you work with other developers you also have to keep the same conventions when naming databases, IIS site, folder structure etc.
We have solved this by automating the entire process. We now deploy any solution to a developer workstation in under 30 minutes – including everything from setting up Sitecore, creating IIS site, restoring databases, adding entries in the hosts file, updating from SVN... etc! It has been the best part of this process.
Build and Test
The latest part of our setup is a build and test server performing nightly builds generating various useful reports. We use CruiseControl / NAnt. We are also using StyleCop in the buildsetup. Nice...
We are currently planning other initiatives including Configuration management and Deploy management. We are currently working on establishing a large scale virtual development / test / QA environment. This will ensure that we develop, test and run QA in environments as close to the Production environment as possible.