Octopus.Script exported 2020-08-20 by ApexSQLtechops belongs to ‘ApexSQL’ category.
This step will execute schema and data synchronization scripts created as deployment resource after comparison is done.
ApexSQL DevOps toolkit - Sync and/or ApexSQL DevOps toolkit - Sync data steps are reqiured
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Retrieve package from
DownloadPackageStepName =
Select the step from which the synchronization sripts package can be sourced
Export location
ExportPath =
The location for exported deployment resources. Provide the path used for synchronization steps. All tentacles used in database deployment steps should have access to the chosen location
SQL Server
ServerName =
Provide the SQL Server name for the deployment target database
Database
Database =
The target database for the deployment of schema and data synchronization scripts.
Username
Username =
The account name used for SQL authentication method. Windows authentication method with the account that runs the Tentacle service will be used for SQL Server connection if left empty
Password
Password =
Enter password for chosen account used for SQL authentication method. Leave empty if Windows authentication method is used
Script body
Steps based on this template will execute the following PowerShell script.
$schemaSyncScript = ''
$dataSyncScript = ''
$schemaSyncQuery = ''
$dataSyncQuery= ''
$query = ''
function AddArtifact() {
Param(
[Parameter(Mandatory = $true)]
[string]$artifact
)
if (Test-Path $artifact) {
New-OctopusArtifact $artifact
}
}
function Get-ParamValue
{
param
(
[Parameter(Mandatory = $true)]
[String] $ParamName
)
if($OctopusParameters -and ($OctopusParameters["$($ParamName)"] -ne $null))
{
# set the variable value
return $OctopusParameters["$($ParamName)"]
}
else
{
# warning
return $null
}
}
$exportPath = '#{ExportPath}'
$PackageDownloadStepName = '#{PackageDownloadStepName}'
$projectId = $OctopusParameters["Octopus.Project.Id"]
$releaseNumber = $OctopusParameters["Octopus.Release.Number"]
$nugetPackageId = $OctopusParameters["Octopus.Action[$PackageDownloadStepName].Package.NuGetPackageId"]
$exportPath = Join-Path (Join-Path $exportPath $projectId) $releaseNumber
$defaultSchemaSyncScript = $OctopusParameters["Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath"] + '\SchemaSyncScript.sql'
$defaultDataSyncScript = $OctopusParameters["Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath"] + '\DataSyncScript.sql'
New-Item -Path $exportPath -Name "DeploySummary.txt" -ItemType "file" -Force | Out-Null
$deploySummary = $exportPath + "\DeploySummary.txt"
$schemaSyncScript = $exportPath + '\SchemaSyncScript.sql'
$dataSyncScript = $exportPath + '\DataSyncScript.sql'
$serverName = Get-ParamValue -ParamName 'ServerName'
$database = Get-ParamValue -ParamName 'Database'
$username = Get-ParamValue -ParamName 'Username'
$password = Get-ParamValue -ParamName 'Password'
$auth = ''
if (-not ($null -eq $username -and $null -eq $password))
{
$auth = " -U ""$($username)"" -P ""$($password)"""
}
else
{
$auth = " -E"
}
$sqlcmdProps = "sqlcmd.exe -S ""$($serverName)"" -d ""$($database)""$auth -b -i"
if(Test-Path $schemaSyncScript)
{
$result = Invoke-Expression -Command "$sqlcmdProps ""$schemaSyncScript"""
$content = "Sync summary: " + $result
if (Test-Path $deploySummary)
{
Add-Content $deploySummary $content
}
}
if(Test-Path $dataSyncScript)
{
$result = Invoke-Expression -Command "$sqlcmdProps ""$dataSyncScript"""
$content = "Sync data summary: " + $result
if (Test-Path $deploySummary)
{
Add-Content $deploySummary $content
}
}
if(Test-Path $defaultSchemaSyncScript)
{
$result = Invoke-Expression -Command "$sqlcmdProps ""$defaultSchemaSyncScript"""
}
if(Test-Path $defaultDataSyncScript)
{
$result = Invoke-Expression -Command "$sqlcmdProps ""$defaultDataSyncScript"""
}
AddArtifact("$deploySummary")
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": "42412324-a768-4943-baf8-bfe26ed2dff3",
"Name": "ApexSQL DevOps toolkit - Deploy",
"Description": "This step will execute schema and data synchronization scripts created as deployment resource after comparison is done. \n\nApexSQL DevOps toolkit - Sync and/or ApexSQL DevOps toolkit - Sync data steps are reqiured",
"Version": 2,
"ExportedAt": "2020-08-20T11:36:52.048Z",
"ActionType": "Octopus.Script",
"Author": "ApexSQLtechops",
"Packages": [],
"Parameters": [
{
"Id": "ad2fad54-09c4-4210-adbc-ab238632cd67",
"Name": "DownloadPackageStepName",
"Label": "Retrieve package from",
"HelpText": "Select the step from which the synchronization sripts package can be sourced",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "StepName"
}
},
{
"Id": "b899f7a2-49dd-4193-8640-54e815996e02",
"Name": "ExportPath",
"Label": "Export location",
"HelpText": "The location for exported deployment resources. Provide the path used for synchronization steps. All tentacles used in database deployment steps should have access to the chosen location",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "f0886e0e-f592-4fd7-ba04-8191224f3436",
"Name": "ServerName",
"Label": "SQL Server",
"HelpText": "Provide the SQL Server name for the deployment target database",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "d1358f62-a3ff-4e24-b46c-036e33ff40f4",
"Name": "Database",
"Label": "Database",
"HelpText": "The target database for the deployment of schema and data synchronization scripts.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "6572b012-7386-4bae-ae31-e72ac19e5171",
"Name": "Username",
"Label": "Username",
"HelpText": "The account name used for SQL authentication method. Windows authentication method with the account that runs the Tentacle service will be used for SQL Server connection if left empty",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "d97dbe49-ccec-4be3-81a8-e356365aa250",
"Name": "Password",
"Label": "Password",
"HelpText": "Enter password for chosen account used for SQL authentication method. Leave empty if Windows authentication method is used",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "$schemaSyncScript = ''\n$dataSyncScript = ''\n$schemaSyncQuery = ''\n$dataSyncQuery= ''\n$query = ''\n\nfunction AddArtifact() {\n Param(\n [Parameter(Mandatory = $true)]\n [string]$artifact\n )\n if (Test-Path $artifact) {\n New-OctopusArtifact $artifact\n }\n}\n\nfunction Get-ParamValue\n{\n param\n (\n [Parameter(Mandatory = $true)]\n [String] $ParamName\n )\n if($OctopusParameters -and ($OctopusParameters[\"$($ParamName)\"] -ne $null))\n {\n # set the variable value\n return $OctopusParameters[\"$($ParamName)\"]\n }\n else\n {\n # warning\n return $null\n }\n}\n\n$exportPath = '#{ExportPath}'\n$PackageDownloadStepName = '#{PackageDownloadStepName}'\n\n$projectId = $OctopusParameters[\"Octopus.Project.Id\"]\n$releaseNumber = $OctopusParameters[\"Octopus.Release.Number\"]\n$nugetPackageId = $OctopusParameters[\"Octopus.Action[$PackageDownloadStepName].Package.NuGetPackageId\"]\n$exportPath = Join-Path (Join-Path $exportPath $projectId) $releaseNumber\n\n$defaultSchemaSyncScript = $OctopusParameters[\"Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath\"] + '\\SchemaSyncScript.sql'\n$defaultDataSyncScript = $OctopusParameters[\"Octopus.Action[$PackageDownloadStepName].Output.Package.InstallationDirectoryPath\"] + '\\DataSyncScript.sql'\n\nNew-Item -Path $exportPath -Name \"DeploySummary.txt\" -ItemType \"file\" -Force | Out-Null\n$deploySummary = $exportPath + \"\\DeploySummary.txt\"\n\n$schemaSyncScript = $exportPath + '\\SchemaSyncScript.sql'\n$dataSyncScript = $exportPath + '\\DataSyncScript.sql'\n$serverName = Get-ParamValue -ParamName 'ServerName'\n $database = Get-ParamValue -ParamName 'Database'\n $username = Get-ParamValue -ParamName 'Username'\n $password = Get-ParamValue -ParamName 'Password'\n $auth = ''\n \n if (-not ($null -eq $username -and $null -eq $password))\n {\t\n $auth = \" -U \"\"$($username)\"\" -P \"\"$($password)\"\"\"\n }\n else\n {\t\n $auth = \" -E\"\n }\n\n$sqlcmdProps = \"sqlcmd.exe -S \"\"$($serverName)\"\" -d \"\"$($database)\"\"$auth -b -i\"\n\tif(Test-Path $schemaSyncScript) \n {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$schemaSyncScript\"\"\"\n $content = \"Sync summary: \" + $result\n if (Test-Path $deploySummary)\n {\n \tAdd-Content $deploySummary $content\n }\n\t}\n \tif(Test-Path $dataSyncScript) \n {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$dataSyncScript\"\"\"\n $content = \"Sync data summary: \" + $result\n if (Test-Path $deploySummary)\n {\n \tAdd-Content $deploySummary $content\n }\n\t}\n\n\tif(Test-Path $defaultSchemaSyncScript) \n {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$defaultSchemaSyncScript\"\"\"\n\t}\n if(Test-Path $defaultDataSyncScript) \n {\n\t\t$result = Invoke-Expression -Command \"$sqlcmdProps \"\"$defaultDataSyncScript\"\"\"\n\t}\n\nAddArtifact(\"$deploySummary\")",
"Octopus.Action.EnabledFeatures": ""
},
"Category": "ApexSQL",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/apexsql-devops-toolkit-deploy.json",
"Website": "/step-templates/42412324-a768-4943-baf8-bfe26ed2dff3",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Thursday, August 20, 2020