Project Description
DeploymentWang provides a library of MSBuild tasks and operations to help reduce errors in your application deployment.

News

Check out the News page to get the latest information on planned and completed releases.

Features

  • Spreadsheet driven validation of your application xml configuration
  • Update your application xml configuration from the same easy to use spreadsheet
  • MSBuild integration - validate/update your application configuration at deployment time with the custom MSBuild Tasks provided
  • MSBuild task to read a delimited file into an ItemGroup
    • Columns can be selected or skipped
    • Delimiter is configurable
  • MSBuild task to "warm up" your website pages - as a bonus will check for broken links (http 404) on any static resources (images, css, js etc)
    • Uses a custom Fiddler .Net extension to discover the broken (404) links and saves them to file
    • The urls to check can be stored in an excel spreadsheet or created directly as an ItemGroup
  • MSBuild task to launch Fiddler and pass it a command via the ExecAction.exe that ships with Fiddler

deploymentwangmsbuild.png

Er, dude...what's with the project name?

Check this out for an explanation of the name!

What is DeploymentWang and what problem does it solve?

I was fed up of chasing bugs only to find someone had updated the application config to an invalid value or somehow it had been mis-set or completely bypassed in the deployment phase and was left with a "default" development value. I wanted some sort of automated test that I could run to prove that the application configuration values are set to the expected values - in effect a "deployment validation test". My solution to this is DeploymentWang.

DeploymentWang is a .Net library to update and validate application configuration settings. Targetted primarily at xml configuration files, DeploymentWang can update xml element values (supports namespaces in the xpath) but most importantly it can validate the settings are as expected. Built around a simple core library so that you can access this directly via your own .Net code I have also provided a MSBuild Task wrapper so that the update and validate operations can easily be made part of your deployment steps.

By default DeploymentWang expects your application configuration settings to be stored in an excel spreadsheet. I found this to be the best way of managing tabular data and personally use Google Docs ( http://docs.google.com ) to generate my excel spreadsheet - this has the advantages.... a) it's free b) it can be shared and tracked easily between the team c) it will export to excel format which is handy as DeploymentWang uses the excellent LinqToExcel code (http://solidcoding.blogspot.com/2008/01/linq-to-excel-provider-25.html) from K Jacobson to read the settings.

DeploymentWang is programmed to my usual style - interface and component based and thus easy to test and extend. The current code includes implementations for xml file based configuration and the settings being stored in a spreadsheet but ALL components could be overridden and custom implementations created. For instance it would be simple to store your settings in a database instead of a spreadsheet; your application might encrypt its xml configuration - simple to create the components required to support this. There is no IoC/DI framework in place - I don't need that (KISS/YAGNI) BUT it could be integrated in without a major problem - I think MEF (http://www.codeplex.com/MEF) would be the ideal candidate and could be integrated fairly simply however this is something to add to a later version if there is any interest/requirement.

So - DeploymentWang will validate that your application configuration is correct. If you have an existing system to set your deployment time configuration values you will need to either write a plugin to retrieve these values OR duplicate them into a spreadsheet - so there is an overhead to using DeploymentWang that you should be aware of. For anyone without an automated deployment/configuration setting mechanism DeploymentWang provides a pretty easy way of updating AND validating those configuration values.

Limitations

DeploymentWang is aimed at solving xml configuration issues. It reads your xml config file into an xml document and uses xpath to locate the nodes. It doesn't support updating attribute values (validate should work fine) - it would be a simple enhancement to support attribute updates though.

Help and Guidance with DeploymentWang

I'll be adding further wiki pages to help anyone wanting to use DeploymentWang here

The Future

Well DeploymentWang solves my original problem so to borrow a phrase... "stick a fork in me I'm done"

I'd be more than happy to accept change requests and I might even implement them ;) and if you'd like to contribute to the project source directly or via patches then great but this all has to fit in round the day job...

There are some other deployment itches DeploymentWang will probably scratch in the future - however my "pain" threshold has to be reached in order to trigger me into writing some code to do something about it...on the cards/ideas to extend DeploymentWang include....
  • I am also fed up of infrastructure problems plaguing software deployment (and ultimately whether it works). I'd like to include a simple port checker in DeploymentWang to ensure that the required firewall ports are open - again possibly spreadsheet based to list the port connections between the tiers/servers that should be available and DeploymentWang to validate they actually are. E.g. if the application server talks to Sql server over TCP port X then is that network connection actually possible? Something similar to DTCPing.exe. I'd see this being run at infrastructure preparation time ahead of deployment.
  • Include more MSBuild tasks - I'm a big fan of MSBuildExtensions (http://msbuildextensionpack.codeplex.com) but sometimes it just doesn't have the task you need. I'd be keen to contribute to this but sometimes you need a task right now so waiting for it to be included in a new build of another project isn't feasible - however contribution to MSBuildExtensions would be my preferred route but I'd place any new Tasks in DeploymentWang as well.

If you like DeploymentWang you might also like....

My other projects from the "Wang" series include...
  • MonitorWang - this is a .Net Windows Service that can automate your software/system monitoring
  • DataWang - this is a .Net wrapper around the Google Sets Api and allows you to generate your mock data objects with realistic data values. A better explanation (and why the daft names) can be found on my blog here...http://jimblogdog.blogspot.com/search/label/DataWang

Last edited Jan 3, 2011 at 8:49 PM by jimbobdog, version 31