Work around for lack of dynamic variables - rollback

Share your PowerShell scripts for Deployment Manager

Moderators: Mike Upton, justin.caldicott, csmith, chirayu, DavidSimner

Work around for lack of dynamic variables - rollback

Postby jtucker@inflexxion.com » Mon Jan 13, 2014 2:04 pm

Red Gate DM is a fine tool, but lacks dynamic variables. That is, a variable that is set at the time of deployment. We need the ability to run a deployment and if it doesn't work properly, revert it. To do so we package up the deployment once and have special code to revert if a variable $IsRollback is true. We simply look at the $RedGateDeploymentComments variable (that IS dynamic - the only one) for a special string.

Code: Select all
# This IsRollingBack routine looks at whether the current project is rolling back the deployment just done.
# It should be called by ALL Deploy, PreDeploy or PostDeploy scripts.
# It utilizes a side-database hosted by ILBUILD02 called DynamicDeployment on SQL2012 instance
# Signature is IsRollingBack($environment, $projectName, $packageDirectoryPath, $forceImportSQLPS)
# where $environment is {Local, Dev, QA, Staging, Live}
#   projectName is the name found in Red Gate DM {painCAS, Assessment Platform, InsideADHD, ...}
#   packageDirectoryPath is the path to which we extract binaries for deployment on the target web server without a trailing backslash (see Variables for your project)
#   forceImportSQLPS should be "true" unless testing this locally

function IsRollingBack($environment, $projectName, $packageDirectoryPath, $forceImportSQLPS)
{
   

   # These values are constant since we only look at dev for these settings
   "Entering Powershell Library: IsRollingBack function..." | Write-Host
   "PackageDirectoryPath is " + $packageDirectoryPath | Write-Host
   "Project is " + $projectName | Write-Host
   "Environment is " + $environment | Write-Host

   
   if ([string]::IsNullOrEmpty($packageDirectoryPath))
   {
      $packageDirectoryPath = "D:\\On Deck Circle"   
   }
   $cur = Get-Location
   set-location $packageDirectoryPath

   $IsRollbackResultsFile = $packageDirectoryPath + "\\IsRollbackResults.txt"
   "Output of IsRollback in " + $IsRollbackResultsFile | Write-host
   
   $RedGateDeploymentComments | Select-String -Pattern "DoRollbackSaveTheWhales " -AllMatches | out-file $IsRollbackResultsFile -Force

   
   # this stored procedure call will query all the dynamic deployment settings for this environment and project, but we only are concerned with rollback
   # We attempt to select just that row.  If there are no rows in the output file, then rollback is false (but we better flag it).  If True is found in the row, then
   # rollback is true.

   
   $IsRollingBackTrueRowCount = (Get-Content $IsRollbackResultsFile | Select-String "DoRollbackSaveTheWhales" | Measure-Object).Count
   if ($IsRollingBackTrueRowCount -eq 1)
   {
      return 1
   }
   return 0
}
jtucker@inflexxion.com
 
Posts: 12
Joined: Thu Jun 27, 2013 10:23 pm
Location: Boston

Return to Deployment Manager PowerShell Scripts

Who is online

Users browsing this forum: No registered users and 0 guests