You are here:   Blogs
REGISTER   |  LOGIN

Jenasys Design Blogs

MINIMISE

Software Delivery Process Revised

Nov 25

WRITTEN BY:
25/11/2011 12:59 PM  RssIcon

Software Delivery

Reviewing our existing software release process was well overdue.  Most of our software solutions are set-up the same way, but the build process had become radically different and inefficient. More importantly time was being wasted apply process improvements and bug fixes, reducing productivity.  It was time to review, standardise and speed-up the processes for all our customers.

Source Control restructured

Back in the early 2002 days Jenasys Design was involved with a software project with a distributed team of software developers (3-5) where we tried to merge the code every night. This turned out to be very time consuming and painful task. As a result of a number of issues and the source control software regularly breaking and eventually a hard disk failure, distributed software development was avoided. Branching and merging code were dirty word for us.  
Rolling forward a few years and working with other software developers in a multiple feature upgrade process, we quickly found things have improved significantly.  Branch and merge software is much better and a good range of distributed source control solutions are now available. Tools like Mecurial and GIT (and many more) have much better solutions to accommodate this style of software development.
Armed with this knowledge we have completely restructured and standardised all Source Control repositories to accommodate distributed development with more advanced branch and merging strategies. We are very excited with this evolution of our process.

Asynchronous Build actions

Deploying both x86 and x64 editions of software is much faster now all the .net applications are compiled in parallel rather than sequentially. Out continuous build server now works a lot harder and faster to push software out to customers. It was fun to watch our multi CPU core server run at 100% for extended periods of time.

PowerShell Script example

Our web solutions often include multiple web.config files configured in different ways for development, testing and production both in-house and at customers. To make it easy to upgrade web sites, we use this simple little PowerShell script to convert Visual Studio project files like "**\CustomerSolution\WebProject\JenasysDesignDevelopmentServer.web.config" into a deployment folder like "**\Configuration\JenasysDesignDevelopmentServer\Web.config".  This allows the files to be copied into the appropriate IIS virtual directories very quickly.

01.Function ConvertNametoFolder([string]$FileName="VirtualServerInstanceName.web.config", [string]$FileSuffix="web.config")
02.{
03.   [string]$Result = ""
04.   if ($FileLen -ne "")
05.    {
06.      [int]$FileLen = $FileName.Length
07.      [int]$SuffixLen = $FileSuffix.Length
08.      $Result = $FileName
09. 
10.      $Result = $FileName.SubString(0,($FileLen-$SuffixLen)-1)
11. 
12.      # String join method (not safe)
13.      #$Result =  $Result + "\" + $FileSuffix
14. 
15.      # .net Framework safe method for combining folder\file paths to Windows Standards.
16.      $Result = [System.IO.Path]::Combine($Result, $FileSuffix)
17.    }
18.    Return $Result
19.}
20. 
21.$FileIn = $FBVariables.GetVariable("varWebConfigFilePath") # Passed-in at runtime
22.[string]$PathOut =  ConvertNametoFolder $FileIn  $FBVariables.GetVariable("varIisSettingFile")
23.$FBVariables.SetVariable("varWebConfigFileDestinationPath", $PathOut)

COPYRIGHT ©2011

Disclaimer

MINIMISE
Any views expressed in these blogs or attachment/s are those of the individual author, and are not necessarily the views of Jenasys Design Pty Ltd. Please let us know if there are inappropriate or incorrect information displayed.

Search Blog entries

MINIMISE