Octopus.Script exported 2017-01-05 by dovetail-technologies belongs to ‘AWS’ category.
Deploy a .Net WebApp build to AWS Elastic Beanstalk. This template uses the awsdeploy tool. ALL step fields need to be populated for this template to work.
AWS Toolkit needs to be installed on your deployment server for this to work properly: https://aws.amazon.com/visualstudio/
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Profile Name
ProfileName
AWS Profile Name
Application Name
ApplicationName
AWS Application Name
Environment Name
EnvironmentName
AWS Environment Name
Region
Region
AWS Application Region
Upload Bucket
UploadBucket
AWS Application Upload Bucket
Access Key
AccessKey
AWS Access Key
Secret Key
SecretKey
AWS Secret Key
Build Directory
BuildDirectory
Path to the compiled code that needs to be packaged by MSDeploy.
MSDeploy Output Directory
MSDeployOutputDirectory
Path where MSDeploy should put the newly created package.
MSDeploy Params File Path
MSDeployParamsFilePath = parameters.xml
Subpath (relative to your #{BuildDirectory}) to the “parameters.xml” file. Include filename.
Script body
Steps based on this template will execute the following PowerShell script.
$env:Path += ";C:\Program Files (x86)\AWS Tools\Deployment Tool\;C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\"
$AwsDeployConfigFileName = "aws-deploy.config"
$AwsDeployConfigFile = Join-Path $BuildDirectory $AwsDeployConfigFileName
$MSDeployParamsFile = Join-Path $BuildDirectory $MSDeployParamsFilePath
$DeployArchive = Join-Path $MSDeployOutputDirectory.trim().replace(" ", "_") "deploy.zip"
if (!(Test-Path $AwsDeployConfigFile))
{
# Create an empty, dummy file (not used, awsdeploy params used instead)
New-Item -path $BuildDirectory -name $AwsDeployConfigFileName -type "file"
}
if (Test-Path $DeployArchive)
{
# Delete deploy archive if it exists
Remove-Item $DeployArchive
}
$EscapedBuildDirectory = $BuildDirectory -replace "\\","\\"
$EscapedBuildDirectory = $EscapedBuildDirectory -replace "\.","\."
$MSDeployParamsContent = (Get-Content $MSDeployParamsFile)
$MSDeployParamsContent = $MSDeployParamsContent -replace "{BUILD_DIRECTORY}",$EscapedBuildDirectory
Set-Content $MSDeployParamsFile $MSDeployParamsContent
Write-Host "Creating WebDeploy package file $DeployArchive with the contents of directory $BuildDirectory"
msdeploy.exe -verb:sync `
-source:iisApp="$BuildDirectory" `
-dest:package="$DeployArchive" `
-declareParamFile="$MSDeployParamsFile"
Write-Host "Starting AWSdeploy"
awsdeploy -r -v `
"-DAWSProfileName=$($ProfileName)" `
"-DApplication.Name=$($ApplicationName)" `
"-DEnvironment.Name=$($EnvironmentName)" `
"-DRegion=$($Region)" `
"-DUploadBucket=$($UploadBucket)" `
"-DAWSAccessKey=$($AccessKey)" `
"-DAWSSecretKey=$($SecretKey)" `
"-DTemplate=ElasticBeanstalk" `
"-DDeploymentPackage=$($DeployArchive)" `
"$AwsDeployConfigFile"
# Sleep to give time to the deployment process to start
Start-Sleep -Seconds 5
$i = 0
$isReady = $FALSE
# Wait no more than 10 minutes for the deployment to finish (or 120 sleeps of 5 seconds)
while ((!$isReady) -and ($i -lt 120)) {
$i++
$ebHealth = Get-EBEnvironment -AccessKey "$AccessKey" -SecretKey "$SecretKey" -Region "$Region" -EnvironmentName "$EnvironmentName"
if ($ebHealth.Status -eq "Ready") {
Write-Host "Deployment successful."
$isReady=$TRUE;
} else {
Write-Host "Deployment status: $($ebHealth.Status)"
}
Start-Sleep -Seconds 5
}
if (!$isReady) {
Write-Host "Deployment failed. Please check your AWS console."
}
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": "11060b54-15bc-4b12-a912-197c6c18b7b7",
"Name": "AWS Elastic Beanstalk .Net WebApp Deploy",
"Description": "Deploy a .Net WebApp build to AWS Elastic Beanstalk. This template uses the awsdeploy tool. ALL step fields need to be populated for this template to work.\n\nAWS Toolkit needs to be installed on your deployment server for this to work properly:\nhttps://aws.amazon.com/visualstudio/",
"Version": 2,
"ExportedAt": "2017-01-05T09:21:06.133Z",
"ActionType": "Octopus.Script",
"Author": "dovetail-technologies",
"Parameters": [
{
"Name": "ProfileName",
"Label": "Profile Name",
"HelpText": "AWS Profile Name",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "ApplicationName",
"Label": "Application Name",
"HelpText": "AWS Application Name",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "EnvironmentName",
"Label": "Environment Name",
"HelpText": "AWS Environment Name",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "Region",
"Label": "Region",
"HelpText": "AWS Application Region",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "UploadBucket",
"Label": "Upload Bucket",
"HelpText": "AWS Application Upload Bucket",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "AccessKey",
"Label": "Access Key",
"HelpText": "AWS Access Key",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "SecretKey",
"Label": "Secret Key",
"HelpText": "AWS Secret Key",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "BuildDirectory",
"Label": "Build Directory",
"HelpText": "Path to the compiled code that needs to be packaged by MSDeploy.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "MultiLineText"
}
},
{
"Name": "MSDeployOutputDirectory",
"Label": "MSDeploy Output Directory",
"HelpText": "Path where MSDeploy should put the newly created package.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "MultiLineText"
}
},
{
"Name": "MSDeployParamsFilePath",
"Label": "MSDeploy Params File Path",
"HelpText": "Subpath (relative to your #{BuildDirectory}) to the \"parameters.xml\" file. Include filename.",
"DefaultValue": "parameters.xml",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.ScriptBody": "$env:Path += \";C:\\Program Files (x86)\\AWS Tools\\Deployment Tool\\;C:\\Program Files (x86)\\IIS\\Microsoft Web Deploy V3\\\"\n$AwsDeployConfigFileName = \"aws-deploy.config\"\n$AwsDeployConfigFile = Join-Path $BuildDirectory $AwsDeployConfigFileName\n$MSDeployParamsFile = Join-Path $BuildDirectory $MSDeployParamsFilePath\n$DeployArchive = Join-Path $MSDeployOutputDirectory.trim().replace(\" \", \"_\") \"deploy.zip\"\n\nif (!(Test-Path $AwsDeployConfigFile))\n{\n # Create an empty, dummy file (not used, awsdeploy params used instead)\n New-Item -path $BuildDirectory -name $AwsDeployConfigFileName -type \"file\"\n}\n\nif (Test-Path $DeployArchive)\n{\n # Delete deploy archive if it exists\n Remove-Item $DeployArchive\n}\n\n$EscapedBuildDirectory = $BuildDirectory -replace \"\\\\\",\"\\\\\"\n$EscapedBuildDirectory = $EscapedBuildDirectory -replace \"\\.\",\"\\.\"\n$MSDeployParamsContent = (Get-Content $MSDeployParamsFile)\n$MSDeployParamsContent = $MSDeployParamsContent -replace \"{BUILD_DIRECTORY}\",$EscapedBuildDirectory\nSet-Content $MSDeployParamsFile $MSDeployParamsContent\n\nWrite-Host \"Creating WebDeploy package file $DeployArchive with the contents of directory $BuildDirectory\"\nmsdeploy.exe -verb:sync `\n -source:iisApp=\"$BuildDirectory\" `\n -dest:package=\"$DeployArchive\" `\n -declareParamFile=\"$MSDeployParamsFile\"\n\nWrite-Host \"Starting AWSdeploy\"\nawsdeploy -r -v `\n \"-DAWSProfileName=$($ProfileName)\" `\n \"-DApplication.Name=$($ApplicationName)\" `\n \"-DEnvironment.Name=$($EnvironmentName)\" `\n \"-DRegion=$($Region)\" `\n \"-DUploadBucket=$($UploadBucket)\" `\n \"-DAWSAccessKey=$($AccessKey)\" `\n \"-DAWSSecretKey=$($SecretKey)\" `\n \"-DTemplate=ElasticBeanstalk\" `\n \"-DDeploymentPackage=$($DeployArchive)\" `\n \"$AwsDeployConfigFile\"\n\n# Sleep to give time to the deployment process to start\nStart-Sleep -Seconds 5\n\n$i = 0\n$isReady = $FALSE\n# Wait no more than 10 minutes for the deployment to finish (or 120 sleeps of 5 seconds)\nwhile ((!$isReady) -and ($i -lt 120)) {\n $i++\n $ebHealth = Get-EBEnvironment -AccessKey \"$AccessKey\" -SecretKey \"$SecretKey\" -Region \"$Region\" -EnvironmentName \"$EnvironmentName\"\n\n if ($ebHealth.Status -eq \"Ready\") {\n Write-Host \"Deployment successful.\"\n $isReady=$TRUE;\n } else {\n Write-Host \"Deployment status: $($ebHealth.Status)\"\n }\n Start-Sleep -Seconds 5\n}\n\nif (!$isReady) {\n Write-Host \"Deployment failed. Please check your AWS console.\"\n}",
"Octopus.Action.Script.ScriptFileName": null,
"Octopus.Action.Package.NuGetFeedId": null,
"Octopus.Action.Package.NuGetPackageId": null
},
"Category": "AWS",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/aws-elastic-beanstalk-dotnet-webapp-deploy.json",
"Website": "/step-templates/11060b54-15bc-4b12-a912-197c6c18b7b7",
"Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF////9o0R/eLD/Nu0/erS95Qg+bhr95sv/vHh+r96/vjw+bFc/NSl+KI++82W+saI+KpNeDqM1wAAA41JREFUeNrsnG2XazAURiuo0Cr//9feliIvR3DvXJFZe3+a6XpW5+xWEpyY2w0AAAAAAAAAAAAAAAAAAADgf1J0bda/9N70q83a3enzUHWVjbR1sW0xp6sd6fPI72VmUt3zA+kymD6N5vnIBMrHsxHTjsUXOX0e+iVaTNU5Q0A/Q+k+4oAp+ixMbw6A4rGVVjGHR92ulNXWuTAlBNJN/FFyr5yy3qN9rawmF9IxR4hqX4U1WMplmGtruVBDuiuswbKkzaGhX+cfXsqbZlXXv0dsYR13nw9fLenGXD7f6U5Ony4yTpzyZLNMUcpMr0xNzfwdRRMR1/LP2cqMctNqKx1LZFydm2U022ueEtLL6HbHfmSRYRn4HDXaXyzU4XRkkZWK/+JlRBBBBBFEEEEEEUQQQQQRRBBB5B9uYJc7SyuLw+nI7R2ptKWJcywd18Utza0rnM4iN66M6qzS5E93Lf1zLaviUL/ISs/Nt6W00DEyuRgiP2Yxvrd15z/Y26ncG76jy1Ta5jEy/L0p/VMWy33woVm8UYN1Y9fqKrzfZ5iedtaV34+kNxHak2Wg2SSkY7djx/bQWkNP6nkE0lH3Lyx7D1aak1Z1erWJ+U130Vz0Sude7mZqv995nW7mZxJd27Sg5XQppuMdWY3xl1XXOge8MasWjZfund0KbvrkE9fK7OPNne+2U9YEWX3nemtSbvLv6LJ7gZ9X45yBl9ZxrZ9d3vjT8rz62tOsny7jXkpYPX9jQmvF8yF55TdaslGviZy1vAmfoTobsZztGNEv7qZZSr/6HRc/0yzlb3HiKhURRBBBBBFEEEEEEUQQQQQRRBD5XSLav38tllbVzeH02Ww/UWA+6XgsHdXFKc2vK5Quoz/duVRnlrb26crpizzXOVU3l2Zb5Pfe+d1OX8ViqW7qH9gt51K44bukr2XxrW54vMaoy7mxa/cgvPRVKcQG7uOCD58HLQLt3r17Iy6AqjYeDG7TUenWW+p9Ot/IOF/lwuHV1nk6o8M469PWXhtr+0BeX/x7Ue40W3xacfb2gXFxUZcX8TYB3Kyfp+GThsjKti2zgZuMiLshxW3gpiQyrn/DXhR/i1NqIte5pkUEEUQQQQQRRBBBBBFEEEEEEUR+g4jQUZBEqjqFO9mOiyeShoXvYoukZOG4GCLpWZgu83/vTNRidhlE0rYAAAAAAAAAAAAAAAAAAACAZPkjwAAMDi+bsnPP/wAAAABJRU5ErkJggg==",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Thursday, January 5, 2017