Octopus.Script exported 2015-07-25 by bobjwalker belongs to ‘Web Deploy’ category.
Ensure that Web Deploy 3.5 is installed on the system. The installer is downloaded from http://www.iis.net/downloads/microsoft/web-deploy if required.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Publish Url
PublishUrl
Publish url to use when publishing the website.
Allow Untrusted Certificate
AllowUntrustedCertificate = False
Allow untrusted certificate at the publish URL.
Website Name
WebsiteName
Website name to use when publishing the website.
Username
Username
Username to use when authenticating with the HTTPS server.
null
Password
Password to use when authenticating with the HTTPS server. You should create a sensitive variable in your project variables, and then bind this value.
Package Step Name
WebDeployPackageStepName
Name of the previously-deployed package step that contains the files that you want to deploy.
Enable App Offline Rule
EnableAppOfflineRule = False
Enables the App Offline Rule. See here for more details
Skip Paths From Sync
SkipSyncPaths
Semi-colon separated, absolute reg-ex paths to skip/not-sync during deployment. Handy for folders that you don’t want deleted etc. (Escape slashes)
Preserve App_Data
PreserveApp_Data = True
The App_Data and its files will not be deleted when this option is enabled
Script body
Steps based on this template will execute the following PowerShell script.
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Deployment")
# A collection of functions that can be used by script steps to determine where packages installed
# by previous steps are located on the filesystem.
function Find-InstallLocations {
$result = @()
$OctopusParameters.Keys | foreach {
if ($_.EndsWith('].Output.Package.InstallationDirectoryPath')) {
$result += $OctopusParameters[$_]
}
}
return $result
}
function Find-InstallLocation($stepName) {
$result = $OctopusParameters.Keys | where {
$_.Equals("Octopus.Action[$stepName].Output.Package.InstallationDirectoryPath", [System.StringComparison]::OrdinalIgnoreCase)
} | select -first 1
if ($result) {
return $OctopusParameters[$result]
}
throw "No install location found for step: $stepName"
}
function Find-SingleInstallLocation {
$all = @(Find-InstallLocations)
if ($all.Length -eq 1) {
return $all[0]
}
if ($all.Length -eq 0) {
throw "No package steps found"
}
throw "Multiple package steps have run; please specify a single step"
}
function Test-LastExit($cmd) {
if ($LastExitCode -ne 0) {
Write-Host "##octopus[stderr-error]"
write-error "$cmd failed with exit code: $LastExitCode"
}
}
$stepName = $OctopusParameters['WebDeployPackageStepName']
$stepPath = ""
if (-not [string]::IsNullOrEmpty($stepName)) {
Write-Host "Finding path to package step: $stepName"
$stepPath = Find-InstallLocation $stepName
} else {
$stepPath = Find-SingleInstallLocation
}
Write-Host "Package was installed to: $stepPath"
Write-Host "##octopus[stderr-progress]"
$websiteName = $OctopusParameters['WebsiteName']
$publishUrl = $OctopusParameters['PublishUrl']
$destBaseOptions = new-object Microsoft.Web.Deployment.DeploymentBaseOptions
$destBaseOptions.UserName = $OctopusParameters['Username']
$destBaseOptions.Password = $OctopusParameters['Password']
$destBaseOptions.ComputerName = "https://$publishUrl/msdeploy.axd?site=$websiteName"
$destBaseOptions.AuthenticationType = "Basic"
$syncOptions = new-object Microsoft.Web.Deployment.DeploymentSyncOptions
$syncOptions.WhatIf = $false
$syncOptions.UseChecksum = $true
$enableAppOfflineRule = $OctopusParameters['EnableAppOfflineRule']
if($enableAppOfflineRule -eq $true)
{
$appOfflineRule = $null
$availableRules = [Microsoft.Web.Deployment.DeploymentSyncOptions]::GetAvailableRules()
if (!$availableRules.TryGetValue('AppOffline', [ref]$appOfflineRule))
{
throw "Failed to find AppOffline Rule"
}
else
{
$syncOptions.Rules.Add($appOfflineRule)
Write-Host "Enabled AppOffline Rule"
}
}
$preserveAppData = [boolean]::Parse($OctopusParameters['PreserveApp_Data'])
if ($preserveAppData -eq $true) {
Write-Host "Skipping delete actions on App_Data"
$skipAppDataFiles = new-object Microsoft.Web.Deployment.DeploymentSkipRule("appDataFiles", "Delete", "filePath", "\App_Data\.*", $null)
$skipAppDataDirectories = new-object Microsoft.Web.Deployment.DeploymentSkipRule("appDataDirectories", "Delete", "dirPath", "\App_Data(\.*|$)", $null)
$syncOptions.Rules.Add($skipAppDataFiles);
$syncOptions.Rules.Add($skipAppDataDirectories);
}
$SkipSyncPaths = $OctopusParameters['SkipSyncPaths']
if ([string]::IsNullOrEmpty($SkipSyncPaths) -eq $false)
{
$skipPaths = $SkipSyncPaths.Split(";", [System.StringSplitOptions]::RemoveEmptyEntries)
foreach($item in $skipPaths) {
$index = $skipPaths.IndexOf($item)
Write-Host "Skipping sync of AbsolutePath: $item."
$name = "SkipDirective$index"
$value = "absolutePath=$item"
$skipDirective = new-object Microsoft.Web.Deployment.DeploymentSkipDirective($name, $value)
$destBaseOptions.SkipDirectives.Add($skipDirective)
}
}
if ($OctopusParameters['AllowUntrustedCertificate'] -eq $true) {
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true; }
}
Write-Host "Publishing Website"
$deploymentObject = [Microsoft.Web.Deployment.DeploymentManager]::CreateObject("contentPath", $stepPath)
$changes = $deploymentObject.SyncTo("contentPath", $websiteName, $destBaseOptions, $syncOptions)
#Write out all the changes.
$changes | Select-Object -Property *
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "ba8581a6-c463-40fb-ab98-3800e761b6f4",
"Name": "Web Deploy - Publish Website (MSDeploy)",
"Description": "Ensure that Web Deploy 3.5 is installed on the system. The installer is downloaded from http://www.iis.net/downloads/microsoft/web-deploy if required.",
"Version": 2,
"ExportedAt": "2015-07-25T22:00:43.204+00:00",
"ActionType": "Octopus.Script",
"Author": "bobjwalker",
"Parameters": [
{
"Name": "PublishUrl",
"Label": "Publish Url",
"HelpText": "Publish url to use when publishing the website.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "AllowUntrustedCertificate",
"Label": "Allow Untrusted Certificate",
"HelpText": "Allow untrusted certificate at the publish URL.",
"DefaultValue": "False",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Name": "WebsiteName",
"Label": "Website Name",
"HelpText": "Website name to use when publishing the website.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "Username",
"Label": "Username",
"HelpText": "Username to use when authenticating with the HTTPS server.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "Password",
"Label": null,
"HelpText": "Password to use when authenticating with the HTTPS server. You should create a sensitive variable in your project variables, and then bind this value.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "WebDeployPackageStepName",
"Label": "Package Step Name",
"HelpText": "Name of the previously-deployed package step that contains the files that you want to deploy.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "EnableAppOfflineRule",
"Label": "Enable App Offline Rule",
"HelpText": "Enables the App Offline Rule. [See here for more details](http://www.iis.net/learn/publish/deploying-application-packages/taking-an-application-offline-before-publishing)",
"DefaultValue": "False",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Name": "SkipSyncPaths",
"Label": "Skip Paths From Sync",
"HelpText": "Semi-colon separated, absolute reg-ex paths to skip/not-sync during deployment. Handy for folders that you don't want deleted etc. (Escape slashes)",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "PreserveApp_Data",
"Label": "Preserve App_Data",
"HelpText": "The App_Data and its files will not be deleted when this option is enabled",
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptBody": "[System.Reflection.Assembly]::LoadWithPartialName(\"Microsoft.Web.Deployment\")\n\n# A collection of functions that can be used by script steps to determine where packages installed\n# by previous steps are located on the filesystem.\n \nfunction Find-InstallLocations {\n $result = @()\n $OctopusParameters.Keys | foreach {\n if ($_.EndsWith('].Output.Package.InstallationDirectoryPath')) {\n $result += $OctopusParameters[$_]\n }\n }\n return $result\n}\n \nfunction Find-InstallLocation($stepName) {\n $result = $OctopusParameters.Keys | where {\n $_.Equals(\"Octopus.Action[$stepName].Output.Package.InstallationDirectoryPath\", [System.StringComparison]::OrdinalIgnoreCase)\n } | select -first 1\n \n if ($result) {\n return $OctopusParameters[$result]\n }\n \n throw \"No install location found for step: $stepName\"\n}\n \nfunction Find-SingleInstallLocation {\n $all = @(Find-InstallLocations)\n if ($all.Length -eq 1) {\n return $all[0]\n }\n if ($all.Length -eq 0) {\n throw \"No package steps found\"\n }\n throw \"Multiple package steps have run; please specify a single step\"\n}\n\nfunction Test-LastExit($cmd) {\n if ($LastExitCode -ne 0) {\n Write-Host \"##octopus[stderr-error]\"\n write-error \"$cmd failed with exit code: $LastExitCode\"\n }\n}\n\n$stepName = $OctopusParameters['WebDeployPackageStepName']\n\n$stepPath = \"\"\nif (-not [string]::IsNullOrEmpty($stepName)) {\n Write-Host \"Finding path to package step: $stepName\"\n $stepPath = Find-InstallLocation $stepName\n} else {\n $stepPath = Find-SingleInstallLocation\n}\nWrite-Host \"Package was installed to: $stepPath\"\n\nWrite-Host \"##octopus[stderr-progress]\"\n \n$websiteName = $OctopusParameters['WebsiteName']\n$publishUrl = $OctopusParameters['PublishUrl']\n\n$destBaseOptions = new-object Microsoft.Web.Deployment.DeploymentBaseOptions\n$destBaseOptions.UserName = $OctopusParameters['Username']\n$destBaseOptions.Password = $OctopusParameters['Password']\n$destBaseOptions.ComputerName = \"https://$publishUrl/msdeploy.axd?site=$websiteName\"\n$destBaseOptions.AuthenticationType = \"Basic\"\n\n$syncOptions = new-object Microsoft.Web.Deployment.DeploymentSyncOptions\n$syncOptions.WhatIf = $false\n$syncOptions.UseChecksum = $true\n\n$enableAppOfflineRule = $OctopusParameters['EnableAppOfflineRule']\nif($enableAppOfflineRule -eq $true)\n{\n $appOfflineRule = $null\n $availableRules = [Microsoft.Web.Deployment.DeploymentSyncOptions]::GetAvailableRules()\n if (!$availableRules.TryGetValue('AppOffline', [ref]$appOfflineRule))\n {\n throw \"Failed to find AppOffline Rule\"\n }\n else\n {\n $syncOptions.Rules.Add($appOfflineRule)\n Write-Host \"Enabled AppOffline Rule\"\n }\n}\n\n$preserveAppData = [boolean]::Parse($OctopusParameters['PreserveApp_Data'])\n\nif ($preserveAppData -eq $true) {\n \n Write-Host \"Skipping delete actions on App_Data\"\n $skipAppDataFiles = new-object Microsoft.Web.Deployment.DeploymentSkipRule(\"appDataFiles\", \"Delete\", \"filePath\", \"\\App_Data\\.*\", $null)\n $skipAppDataDirectories = new-object Microsoft.Web.Deployment.DeploymentSkipRule(\"appDataDirectories\", \"Delete\", \"dirPath\", \"\\App_Data(\\.*|$)\", $null)\n\n $syncOptions.Rules.Add($skipAppDataFiles);\n $syncOptions.Rules.Add($skipAppDataDirectories);\n}\n\n$SkipSyncPaths = $OctopusParameters['SkipSyncPaths']\nif ([string]::IsNullOrEmpty($SkipSyncPaths) -eq $false)\n{\n $skipPaths = $SkipSyncPaths.Split(\";\", [System.StringSplitOptions]::RemoveEmptyEntries)\n foreach($item in $skipPaths) {\n $index = $skipPaths.IndexOf($item)\n Write-Host \"Skipping sync of AbsolutePath: $item.\"\n $name = \"SkipDirective$index\"\n $value = \"absolutePath=$item\"\n $skipDirective = new-object Microsoft.Web.Deployment.DeploymentSkipDirective($name, $value)\n $destBaseOptions.SkipDirectives.Add($skipDirective)\n }\n}\n\nif ($OctopusParameters['AllowUntrustedCertificate'] -eq $true) {\n [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true; }\n}\n\nWrite-Host \"Publishing Website\"\n$deploymentObject = [Microsoft.Web.Deployment.DeploymentManager]::CreateObject(\"contentPath\", $stepPath)\n\n$changes = $deploymentObject.SyncTo(\"contentPath\", $websiteName, $destBaseOptions, $syncOptions)\n\n#Write out all the changes.\n$changes | Select-Object -Property *",
"Octopus.Action.Script.Syntax": "PowerShell"
},
"Category": "Web Deploy",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/web-deploy-publish-website-msdeploy.json",
"Website": "/step-templates/ba8581a6-c463-40fb-ab98-3800e761b6f4",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Saturday, July 25, 2015