Azure - Upload Files to Azure

Octopus.Script exported 2016-10-25 by kemyke belongs to ‘Azure’ category.

Uploads files and folders to an Azure container from a specified location.

IMPORTANT: Azure PowerShell must be installed on the tentacle server for this step to work. This can be downloaded from http://bit.ly/AzurePowershellDownload

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Azure Storage Account Name

storageAccountName

Name of the account that the files and folders will be uploaded to.

Azure Storage Account Key

storageAccountKey

The key that is used to log into the account.

Azure Container Name

containerName

The name of the container the files and folder will be uploaded to.

Name of the Parent Folder

localFolder

Name of the Parent Folder being uploaded

Recursive

doRecurse = True

null

Force

doForce = False

Override is enabled or not

Script body

Steps based on this template will execute the following PowerShell script.

#Sets the Permissions to public if the selection is true
if ([boolean]::Parse($doRecurse)) 
{
    
	$recurse = "-Recurse"

}

if ([boolean]::Parse($doForce)) 
{
    
	$force = "-Force"

}

#--------------------------------------------------------------------
#Checking to see if Azure is installed on the computer
$name = 'Azure'

Write-Output "Checking if Azure Powershell is installed"

if(Get-Module -ListAvailable | Where-Object {$_.name -eq $name})
{
	(Get-Module -ListAvailable | Where-Object{ $_.Name -eq $name}) |
	Select Version, Name, Author, PowerShellVersion | Format-List;
	Write-Output "Azure Powershell is installed"
}
else
{
	#Provides the link to install Azure Powershell, if it is not installed
	Write-Warning "Please install Azure Powershell. To install Azure Powershell go to http://bit.ly/AzurePowershellDownload"
	Exit 1
}



#--------------------------------------------------------------------

#Initialises the Azure Credentials based on the Storage Account Name and the Storage Account Key, 
#so that we can invoke the APIs further down. 
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

#--------------------------------------------------------------------

Get-ChildItem -Path $localFolder -File $recurse | Set-AzureStorageBlobContent -Container $containerName -Blob $blobName -Context $storageContext $force

Write-Output "All files in $localFolder uploaded to $containerName!"

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "bc18b460-06a7-412f-850f-44098f1b497a",
  "Name": "Azure - Upload Files to Azure",
  "Description": "Uploads files and folders to an Azure container from a specified location.\n\n**IMPORTANT:** Azure PowerShell must be installed on the tentacle server for this step to work. This can be downloaded from http://bit.ly/AzurePowershellDownload",
  "Version": 8,
  "ExportedAt": "2016-10-25T19:17:25.877+00:00",
  "ActionType": "Octopus.Script",
  "Author": "kemyke",
  "Parameters": [
    {
      "Id": "4cb76611-ff29-4256-9475-3769fd890e0f",
      "Name": "storageAccountName",
      "Label": "Azure Storage Account Name",
      "HelpText": "Name of the account that the files and folders will be uploaded to.",
      "DefaultValue": null,
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "cc0eb63d-4545-4d9d-aca3-7844e1e0a54e",
      "Name": "storageAccountKey",
      "Label": "Azure Storage Account Key",
      "HelpText": "The key that is used to log into the account.",
      "DefaultValue": null,
      "DisplaySettings": {
        "Octopus.ControlType": "Sensitive"
      }
    },
    {
      "Id": "8245c4b0-014d-467c-a95d-ab6aac230075",
      "Name": "containerName",
      "Label": "Azure Container Name",
      "HelpText": "The name of the container the files and folder will be uploaded to.",
      "DefaultValue": null,
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "45f6df33-d04d-44bd-8a26-1ab45c634afc",
      "Name": "localFolder",
      "Label": "Name of the Parent Folder",
      "HelpText": "Name of the Parent Folder being uploaded",
      "DefaultValue": null,
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "8c559f0f-2d6e-4202-8614-65cabb29e643",
      "Name": "doRecurse",
      "Label": "Recursive",
      "HelpText": null,
      "DefaultValue": "True",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      }
    },
    {
      "Id": "8a06615b-69a2-4d32-be29-981b6c5725fc",
      "Name": "doForce",
      "Label": "Force",
      "HelpText": "Override is enabled or not",
      "DefaultValue": "False",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptBody": "#Sets the Permissions to public if the selection is true\nif ([boolean]::Parse($doRecurse)) \n{\n    \n\t$recurse = \"-Recurse\"\n\n}\n\nif ([boolean]::Parse($doForce)) \n{\n    \n\t$force = \"-Force\"\n\n}\n\n#--------------------------------------------------------------------\n#Checking to see if Azure is installed on the computer\n$name = 'Azure'\n\nWrite-Output \"Checking if Azure Powershell is installed\"\n\nif(Get-Module -ListAvailable | Where-Object {$_.name -eq $name})\n{\n\t(Get-Module -ListAvailable | Where-Object{ $_.Name -eq $name}) |\n\tSelect Version, Name, Author, PowerShellVersion | Format-List;\n\tWrite-Output \"Azure Powershell is installed\"\n}\nelse\n{\n\t#Provides the link to install Azure Powershell, if it is not installed\n\tWrite-Warning \"Please install Azure Powershell. To install Azure Powershell go to http://bit.ly/AzurePowershellDownload\"\n\tExit 1\n}\n\n\n\n#--------------------------------------------------------------------\n\n#Initialises the Azure Credentials based on the Storage Account Name and the Storage Account Key, \n#so that we can invoke the APIs further down. \n$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey\n\n#--------------------------------------------------------------------\n\nGet-ChildItem -Path $localFolder -File $recurse | Set-AzureStorageBlobContent -Container $containerName -Blob $blobName -Context $storageContext $force\n\nWrite-Output \"All files in $localFolder uploaded to $containerName!\"\n",
    "Octopus.Action.Script.ScriptSource": "Inline",
    "Octopus.Action.RunOnServer": "false",
    "Octopus.Action.Script.ScriptFileName": null,
    "Octopus.Action.Package.FeedId": null,
    "Octopus.Action.Package.PackageId": null
  },
  "Category": "Azure",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/azure-upload-files.json",
  "Website": "/step-templates/bc18b460-06a7-412f-850f-44098f1b497a",
  "Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF////AHjXf7vrv931QJrh7/f8EIDaIIncMJHfYKvmz+b3n8zw3+76j8Ttr9XycLPpUKLkkKvYFAAABGZJREFUeNrsnNmCqjoQRc1MEiD8/9cer7Yt2KBJZQC8ez07sKlKTQlcLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzoUSnt8YxXlFuGHSbIaxvj+fip4btkLn1blkWLaF5v03yLhLOYlVuGYfMOMZzNGxCOzhjTJqFkXnjq3Dr1yyvPI3hGl3Ih3zzHHNKudRstRhX5O58vIcShY67Gq6EPIESlzUWvazaGAOGbvU7ArDu/g8M4o8opDZWvbvPzlL/MMBE8jT9T9W7PbAJlHPTBFRf9yVTEcs63msXz2UHLSgf650G/d5t+wjbxxB2UCMqGrk8/LFSD7uJMeNt5bcJCyQZyAe5Fo9KYfWS2flQrr4b4tpuzaeWjYs49rt9LHf9uZD7+VbyVi9EBNrjYjuq2sxQOrl+p+HuBVu45qvqfq691ttYFQ5KyKbyJgaIY/NGxrlWZwlwGvmvu1oY3PuAv0niTq6tZ78jk//9uc1r1r4lQki7y7sp2Tu4V1y2iLoqFTqi1lIGcpFiebrZNZ1dOkF0cCIlO8jQ47nCkam9Lilz9GhDF1I6XGLzfnhwDIIZVfI7+8SSgfHsijqXENOGJF5QorG4EcW0OrScqX/dDrXpr70Ut/BII+1OfECPuYz/NWxYmgrCsUskxPvyhgmrw+WGZ6lGTuOlIyCYWTFyWjpM5KIZRUIOwjRNYRQ6tZF9BXtk8hWAHPtLNJ727Fq0JSkC1FDRRF0Jalj0d5qVh2KEpM2TuSsCYTCT6ZkdmFYI9LrYp5QayWbo6NXlZwcRD/61pth5Fq5EX423QQxNjhqWvvklkljOLkYjrmphXPZOJOk6Pg7HKMsrtQKcowzZoK3rx1ZUelGMdQA/HaKkjAt2RgqpZeYqbNbH7Hp2ct4nqfSPOfe0ftiSTZJydOV6rG5bQbyLK+nRuCC0343PzDgiOXyQA5c14BTZi98uR/5KJ1SnatLdoO50WWBQZPTq0VgsklU3h932actuo17ayrHrb/3ykiegd3KbqF2wbV6RrlsJ07yLcpsWFTul9RyK6ZScr+tk7oNrFj0o7HQUlj4EiEvJ6rPLKSmlMZCrksl1OnLaRkxc+/HB1naMhNtT/6yM2bDs6azCRHrM3aVPN7aW8irD/10B8njpAMcsl8okXcdKrl4sPsLmQVy/Sj90ucPRc/d/Bxxj+dXSpCayen32D+hLi16MsIV8gfCXrYp6ySsiJKRUF0XXiLpVbFU+fNv4r7mOwhFsX4ZdwpSi1DYs2jb6ebZ9788cblTzMrYhu7sf/17IFdtuviJ2ioHA6pMHkoH4CLUeMBU7iGkxuM/YgcdderF9ibRdc7O982F1HpYhjfWUe+x5a6pjop9iNLfoePvlsdZdTSMwfxSmTY20Q0eHnUNzga1edeNmmqbg18aMVR1L9vwSXHF9TfIWBxpKLs2hj3eQeBC0USvp2HHF3eIkRdhFOd6ER8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/I/4J8AAo/80BciBec4AAAAASUVORK5CYII=",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Tuesday, October 25, 2016