diff --git a/Tasks/AzureFunctionDeploymentV1/README.md b/Tasks/AzureFunctionDeploymentV1/README.md
new file mode 100644
index 000000000000..fb1bb00d6dd5
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/README.md
@@ -0,0 +1,117 @@
+# Azure Function Deployment: ARM
+
+## Overview
+
+The Azure Function Deployment task is used to update Azure App Service to deploy [Functions](https://docs.microsoft.com/en-us/azure/azure-functions/) to Azure. The task works on cross platform Azure Pipelines agents running Windows, Linux or Mac and uses the underlying deployment technologies of RunFromPackage, Zip Deploy and [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API).
+
+The task works for [ASP.NET](https://www.visualstudio.com/en-us/docs/release/examples/azure/azure-web-apps-from-build-and-release-hubs), [ASP.NET Core](https://www.visualstudio.com/en-us/docs/release/examples/azure/aspnet-core10-azure-web-apps), PHP, Java, Python, Go and [Node.js](https://www.visualstudio.com/en-us/docs/release/examples/nodejs/node-to-azure-webapps) based web applications.
+
+## Contact Information
+
+Please report a problem at [Developer Community Forum](https://developercommunity.visualstudio.com/spaces/21/index.html) if you are facing problems in making this task work. You can also share feedback about the task like, what more functionality should be added to the task, what other tasks you would like to have, at the same place.
+
+## Pre-requisites for the task
+
+The following pre-requisites need to be setup in the target machine(s) for the task to work properly.
+
+##### Azure Function
+
+The task is used to deploy a Web project to an existing Azure Web App. The Web App should exist prior to running the task. The Web App can be created from the [Azure portal](https://azure.microsoft.com/en-in/documentation/videos/azure-app-service-web-apps-with-yochay-kiriaty/) and [configured](https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/) there. Alternatively, the [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell) can be used to run [AzureRM PowerShell scripts](https://msdn.microsoft.com/en-us/library/mt619237.aspx) to provision and configure the Web App.
+
+The task can be used to deply [Azure Functions](https://azure.microsoft.com/en-in/services/functions/) (Windows/Linux).
+
+##### Azure Subscription
+
+To deploy to Azure, an Azure subscription has to be linked to Team Foundation Server or to Azure Pipelines using the Services tab in the Account Administration section. Add the Azure subscription to use in the Build or Release Management definition by opening the Account Administration screen (gear icon on the top-right of the screen) and then click on the Services Tab.
+
+Create the [ARM](https://azure.microsoft.com/en-in/documentation/articles/resource-group-overview/) service endpoint, use **'Azure Resource Manager'** endpoint type, for more details follow the steps listed in the link [here](https://go.microsoft.com/fwlink/?LinkID=623000&clcid=0x409).
+
+The task does not work with the Azure Classic service endpoint and it will not list these connections in the parameters in the task.
+
+## Deployment
+
+Several deployment methods are available in this task. Web Deploy (msdeploy.exe) is the default option. To change the deployment option, expand Additional Deployment Options and enable Select deployment method to choose from additional package-based deployment options.
+
+Based on the type of Azure App Service and Azure Pipelines agent, the task chooses a suitable deployment technology. The different deployment technologies used by the task are:
+
+* *Kudu REST APIs*
+
+* *Zip Deploy*
+
+* *RunFromPackage*
+
+By default the task tries to select the appropriate deployment technology given the input package, app service type and agent OS.
+
+* When post deployment script is provided, use Zip Deploy
+* When the App Service type is Web App on Linux App, use Zip Deploy
+* If War file is provided, use War Deploy
+* If Jar file is provided, use Run From Zip
+* For all others, use Run From Package (via Zip Deploy)
+
+On non-Windows agent (for any App service type), the task relies on [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API) to deploy the Web App.
+
+
+### [Kudu REST APIs](https://github.com/projectkudu/kudu/wiki/REST-API)
+Works on a Windows as well as Linux automation agent when the target is a Web App on Windows or Web App on Linux (built-in source) or Function App. The task uses Kudu to copy over files to the Azure App service.
+
+### Zip Deploy
+Creates a .zip deployment package of the chosen Package or folder and deploys the file contents to the wwwroot folder of the App Service name function app in Azure. This option overwrites all existing contents in the wwwroot folder. For more information, see [Zip deployment for Azure Functions](https://docs.microsoft.com/azure/azure-functions/deployment-zip-push).
+
+### RunFromPackage
+Creates the same deployment package as Zip Deploy. However, instead of deploying files to the wwwroot folder, the entire package is mounted by the Functions runtime. With this option, files in the wwwroot folder become read-only. For more information, see [Run your Azure Functions from a package file](https://docs.microsoft.com/azure/azure-functions/run-functions-from-deployment-package).
+
+### Parameters of the task
+The task is used to deploy a Web project to an existing Azure Web App or Function. The mandatory fields are highlighted with a *.
+
+* **Azure Subscription\*:** Select the AzureRM Subscription. If none exists, then click on the **Manage** link, to navigate to the Services tab in the Administrators panel. In the tab click on **New Service Endpoint** and select **Azure Resource Manager** from the dropdown.
+
+* **App Service type\*:** Select the Azure App Service type. The different app types supported are Function App, Web App on Windows, Web App on Linux, Web App for Containers and Azure App Service Environments
+
+* **App Service Name\*:** Select the name of an existing Azure App Service. Enter the name of the Web App if it was provisioned dynamically using the [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell) and [AzureRM PowerShell scripts](https://msdn.microsoft.com/en-us/library/mt619237.aspx).
+
+* **Deploy to Slot:** Select the option to deploy to an existing slot other than the Production slot. Do not select this option if the Web project is being deployed to the Production slot. The Web App itself is the Production slot.
+
+* **Resource Group:** Select the Azure Resource Group that contains the Azure App Service specified above. Enter the name of the Azure Resource Group if has been dynamically provisioned using [Azure Resource Group Deployment task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/DeployAzureResourceGroup) or [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell). This is a required parameter if the option to Deploy to Slot has been selected.
+
+* **Slot:** Select the Slot to deploy the Web project to. Enter the name of the Slot if has been dynamically provisioned using [Azure Resource Group Deployment task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/DeployAzureResourceGroup) or [Azure PowerShell task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzurePowerShell). This is a required parameter if the option to Deploy to Slot has been selected.
+
+* **Package or Folder\*:** Location of the Web App zip package or folder on the automation agent or on a UNC path accessible to the automation agent like, \\\\BudgetIT\\Web\\Deploy\\Fabrikam.zip. Predefined system variables and wild cards like, $(System.DefaultWorkingDirectory)\\\***.zip can be also used here.
+
+* **Select deployment method:** Select the option to to choose from Zip Deploy, RunFromPackage
+
+By default the task tries to select the appropriate deployment technology given the input package, app service type and agent OS.
+
+* **Generate Web.config:** A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. For example, for [Nodejs application, web.config](https://github.com/projectkudu/kudu/wiki/Using-a-custom-web.config-for-Node-apps) will have startup file and iis_node module values. Similarly for Python (Bottle, Django, Flask) the web.config will have details of WSGI handler, Python path etc. The task will generate a new web.config only when the artifact package/folder does not contain an existing web.config. The default values populated by the task can be overriden in the task by using the Web.config parameters field.
+
+* **Web.config parameters:** Edit values like startup file in the task generated web.config file. The default values populated by the task can be overridden in the task by passing the web.config parameters. This edit feature is **only for the generated web.config**. Feature is useful when [Azure App Service Manage task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzureAppServiceManage) is used to install specific Python version by using extensions or when you want to provide a different startup file for Node.js.
+In case of Python, the path can be set as an output variable of the [Azure App Service Manage task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzureAppServiceManage) and then set as the Python path in the web.config generated by this deploy task. You can try out this feature by selecting any Python, Nodejs, PHP release definition template.
+
+* **Runtime Stack:**
+Web App on Linux offers two different options to publish your application, one is Custom image deployment (Web App for Containers) and the other is App deployment with a built-in platform image (Web App on Linux). You will see this parameter only when you selected 'Linux Web App' in the App type selection option in the task.
+
+For Web **Function on Linux** you need to provide the following details:
+* *Runtime stack:* Select the framework and version your web app will run on.
+
+* *Startup command:*
+Start up command for the app. For example if you are using PM2 process manager for Nodejs then you can specify the PM2 file here.
+
+* *Application and Configuration Settings*
+
+**App settings**: [App settings](https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure#app-settings) contains name/value pairs that your web app will load on start up. Edit web app application settings by following the syntax '-key value'. Value containing spaces should be enclosed in double quotes.
+>Example : -Port 5000 -RequestTimeout 5000
+>-WEBSITE_TIME_ZONE "Eastern Standard Time"
+
+**Configuration settings**:
+Edit web app [configuration settings](https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure) following the syntax -key value. Value containing spaces should be enclosed in double quotes.
+>Example : -phpVersion 5.6 -linuxFxVersion: node|6.11
+
+### Output Variables
+
+* **Web App Hosted URL:** Provide a name, like FabrikamWebAppURL for the variable for the Azure App Service Hosted URL. The variable can be used as $(variableName), like $(FabrikamWebAppURL) to refer to the Hosted URL of the Azure App Service in subsequent tasks like in the [Run Functional Tests task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/RunDistributedTests) or the [Visual Studio Test task](https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/VsTest).
+
+
+### FAQ
+* To ignore SSL error set a Variable of name VSTS_ARM_REST_IGNORE_SSL_ERRORS with value : true in the release definition.
+* The task works with the [Azure Resource Manager APIs](https://msdn.microsoft.com/en-us/library/azure/dn790568.aspx) only.
+* For avoiding deployment failure with error code ERROR_FILE_IN_USE, in case of .NET apps targeting Web App on Windows, ensure that 'Rename locked files' and 'Take App Offline' are enabled. For zero downtime deployment use slot swap.
+* When deploying to an App Service with App Insights configured, if you have enabled “Remove additional files at destination” then you also need to enable “Exclude files from the App_Data folder” in order to keep App insights extension in safe state. This is required because App Insights continuous web job gets installed into the App_Data folder.
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/de-de/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/de-de/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/de-de/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/en-US/resources.resjson
new file mode 100644
index 000000000000..d8c06dbdd244
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/en-US/resources.resjson
@@ -0,0 +1,183 @@
+{
+ "loc.friendlyName": "Azure Function",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurefunctiondeployreadme)",
+ "loc.description": "Update Azure Function on Windows, Function on Linux with built-in images, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications",
+ "loc.instanceNameFormat": "Azure Function Deploy: $(appName)",
+ "loc.releaseNotes": "What's new in version 1.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurefunctiondeployreadme) for more information.",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.appType": "App Type",
+ "loc.input.label.appName": "App Name",
+ "loc.input.help.appName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.deployToSlotOrASE": "Deploy to Slot or App Service Environment",
+ "loc.input.help.deployToSlotOrASE": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.resourceGroupName": "Resource group",
+ "loc.input.help.resourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.slotName": "Slot",
+ "loc.input.help.slotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.package": "Package or folder",
+ "loc.input.help.package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.runtimeStack": "Runtime Stack",
+ "loc.input.label.startUpCommand": "Startup command ",
+ "loc.input.label.webConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.webConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.appSettings": "App settings",
+ "loc.input.help.appSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.configurationStrings": "Configuration settings",
+ "loc.input.help.configurationStrings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.deploymentMethod": "Deployment method",
+ "loc.input.help.deploymentMethod": "Choose the deployment method for the app.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromPackage options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromPackage might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s",
+ "loc.messages.InvalidDockerImageName": "Invalid Docker hub image name provided.",
+ "loc.messages.MsBuildPackageNotSupported": "Deployment of msBuild generated package is not supported. Change package format or use Azure App Service Deploy task."
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/es-es/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/es-es/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/es-es/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/fr-fr/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/fr-fr/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/fr-fr/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/it-IT/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/it-IT/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/it-IT/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ja-jp/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ja-jp/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ja-jp/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ko-KR/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ko-KR/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ko-KR/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ru-RU/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ru-RU/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/ru-RU/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/zh-CN/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/zh-CN/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/zh-CN/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/zh-TW/resources.resjson b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/zh-TW/resources.resjson
new file mode 100644
index 000000000000..c301fa20ad68
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/Strings/resources.resjson/zh-TW/resources.resjson
@@ -0,0 +1,225 @@
+{
+ "loc.friendlyName": "Azure App Service Deploy",
+ "loc.helpMarkDown": "[More information](https://aka.ms/azurermwebdeployreadme)",
+ "loc.description": "Update Azure App Services on Windows, Web App on Linux with built-in images or Docker containers, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications, Function Apps on Windows or Linux with Docker Containers, Mobile Apps, API applications, Web Jobs using Web Deploy / Kudu REST APIs",
+ "loc.instanceNameFormat": "Azure App Service Deploy: $(WebAppName)",
+ "loc.releaseNotes": "What's new in version 4.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurermwebdeployreadme) for more information.",
+ "loc.group.displayName.FileTransformsAndVariableSubstitution": "File Transforms & Variable Substitution Options",
+ "loc.group.displayName.AdditionalDeploymentOptions": "Additional Deployment Options",
+ "loc.group.displayName.PostDeploymentAction": "Post Deployment Action",
+ "loc.group.displayName.ApplicationAndConfigurationSettings": "Application and Configuration Settings",
+ "loc.input.label.ConnectionType": "Connection type",
+ "loc.input.help.ConnectionType": "Select the service connection type to use to deploy the Web App.",
+ "loc.input.label.ConnectedServiceName": "Azure subscription",
+ "loc.input.help.ConnectedServiceName": "Select the Azure Resource Manager subscription for the deployment.",
+ "loc.input.label.PublishProfilePath": "Publish profile path",
+ "loc.input.label.PublishProfilePassword": "Publish profile password",
+ "loc.input.help.PublishProfilePassword": "It is recommended to store password in a secret variable and use that variable here e.g. $(Password).",
+ "loc.input.label.WebAppKind": "App Service type",
+ "loc.input.help.WebAppKind": "Choose from Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers and Mobile App.",
+ "loc.input.label.WebAppName": "App Service name",
+ "loc.input.help.WebAppName": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed.",
+ "loc.input.label.DeployToSlotOrASEFlag": "Deploy to Slot or App Service Environment",
+ "loc.input.help.DeployToSlotOrASEFlag": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "loc.input.label.ResourceGroupName": "Resource group",
+ "loc.input.help.ResourceGroupName": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "loc.input.label.SlotName": "Slot",
+ "loc.input.help.SlotName": "Enter or Select an existing Slot other than the Production slot.",
+ "loc.input.label.DockerNamespace": "Registry or Namespace",
+ "loc.input.help.DockerNamespace": "A globally unique top-level domain name for your specific registry or namespace.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerRepository": "Image",
+ "loc.input.help.DockerRepository": "Name of the repository where the container images are stored.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.DockerImageTag": "Tag",
+ "loc.input.help.DockerImageTag": "Tags are optional, it is the mechanism that registries use to give Docker images a version.
Note: Fully qualified image name will be of the format: '`/`:`'. For example, 'myregistry.azurecr.io/nginx:latest'.",
+ "loc.input.label.VirtualApplication": "Virtual application",
+ "loc.input.help.VirtualApplication": "Specify the name of the Virtual application that has been configured in the Azure portal. The option is not required for deployments to the App Service root.",
+ "loc.input.label.Package": "Package or folder",
+ "loc.input.help.Package": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war.",
+ "loc.input.label.RuntimeStack": "Runtime Stack",
+ "loc.input.help.RuntimeStack": "Select the framework and version.",
+ "loc.input.label.RuntimeStackFunction": "Runtime Stack",
+ "loc.input.help.RuntimeStackFunction": "Select the framework and version.",
+ "loc.input.label.StartupCommand": "Startup command ",
+ "loc.input.help.StartupCommand": "Enter the start up command.",
+ "loc.input.label.ScriptType": "Deployment script type",
+ "loc.input.help.ScriptType": "Customize the deployment by providing a script that will run on the Azure App service once the task has completed the deployment successfully . For example restore packages for Node, PHP, Python applications. [Learn more](https://go.microsoft.com/fwlink/?linkid=843471).",
+ "loc.input.label.InlineScript": "Inline Script",
+ "loc.input.label.ScriptPath": "Deployment script path",
+ "loc.input.label.WebConfigParameters": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "loc.input.help.WebConfigParameters": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "loc.input.label.AppSettings": "App settings",
+ "loc.input.help.AppSettings": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "loc.input.label.ConfigurationSettings": "Configuration settings",
+ "loc.input.help.ConfigurationSettings": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "loc.input.label.UseWebDeploy": "Select deployment method",
+ "loc.input.help.UseWebDeploy": "If unchecked we will auto-detect the best deployment method based on your app type, package format and other parameters.
Select the option to view the supported deployment methods and choose one for deploying your app.",
+ "loc.input.label.DeploymentType": "Deployment method",
+ "loc.input.help.DeploymentType": "Choose the deployment method for the app.",
+ "loc.input.label.TakeAppOfflineFlag": "Take App Offline",
+ "loc.input.help.TakeAppOfflineFlag": "Select the option to take the Azure App Service offline by placing an app_offline.htm file in the root directory of the App Service before the sync operation begins. The file will be removed after the sync operation completes successfully.",
+ "loc.input.label.SetParametersFile": "SetParameters file",
+ "loc.input.help.SetParametersFile": "Optional: location of the SetParameters.xml file to use.",
+ "loc.input.label.RemoveAdditionalFilesFlag": "Remove additional files at destination",
+ "loc.input.help.RemoveAdditionalFilesFlag": "Select the option to delete files on the Azure App Service that have no matching files in the App Service package or folder.
Note: This will also remove all files related to any extension installed on this Azure App Service. To prevent this, select 'Exclude files from App_Data folder' checkbox. ",
+ "loc.input.label.ExcludeFilesFromAppDataFlag": "Exclude files from the App_Data folder",
+ "loc.input.help.ExcludeFilesFromAppDataFlag": "Select the option to prevent files in the App_Data folder from being deployed to/ deleted from the Azure App Service.",
+ "loc.input.label.AdditionalArguments": "Additional arguments",
+ "loc.input.help.AdditionalArguments": "Additional Web Deploy arguments following the syntax -key:value .
These will be applied when deploying the Azure App Service. Example: -disableLink:AppPoolExtension -disableLink:ContentExtension.
For more examples of Web Deploy operation settings, refer to [this](https://go.microsoft.com/fwlink/?linkid=838471).",
+ "loc.input.label.RenameFilesFlag": "Rename locked files",
+ "loc.input.help.RenameFilesFlag": "Select the option to enable msdeploy flag MSDEPLOY_RENAME_LOCKED_FILES=1 in Azure App Service application settings. The option if set enables msdeploy to rename locked files that are locked during app deployment",
+ "loc.input.label.XmlTransformation": "XML transformation",
+ "loc.input.help.XmlTransformation": "The config transforms will be run for `*.Release.config` and `*..config` on the `*.config file`.
Config transforms will be run prior to the Variable Substitution.
XML transformations are supported only for Windows platform.",
+ "loc.input.label.XmlVariableSubstitution": "XML variable substitution",
+ "loc.input.help.XmlVariableSubstitution": "Variables defined in the build or release pipelines will be matched against the 'key' or 'name' entries in the appSettings, applicationSettings, and connectionStrings sections of any config file and parameters.xml. Variable Substitution is run after config transforms.
Note: If same variables are defined in the release pipeline and in the environment, then the environment variables will supersede the release pipeline variables.
",
+ "loc.input.label.JSONFiles": "JSON variable substitution",
+ "loc.input.help.JSONFiles": "Provide new line separated list of JSON files to substitute the variable values. Files names are to be provided relative to the root folder.
To substitute JSON variables that are nested or hierarchical, specify them using JSONPath expressions.
For example, to replace the value of ‘ConnectionString’ in the sample below, you need to define a variable as ‘Data.DefaultConnection.ConnectionString’ in the build or release pipeline (or release pipeline's environment).
{
\"Data\": {
\"DefaultConnection\": {
\"ConnectionString\": \"Server=(localdb)\\SQLEXPRESS;Database=MyDB;Trusted_Connection=True\"
}
}
}
Variable Substitution is run after configuration transforms.
Note: pipeline variables are excluded in substitution.",
+ "loc.messages.Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "loc.messages.SetParamFilenotfound0": "Set parameters file not found: %s",
+ "loc.messages.XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "loc.messages.GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "loc.messages.ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "loc.messages.UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "loc.messages.Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "loc.messages.Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "loc.messages.Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "loc.messages.Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "loc.messages.Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "loc.messages.PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "loc.messages.PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "loc.messages.Runningcommand": "Running command: %s",
+ "loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "loc.messages.Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "loc.messages.Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "loc.messages.Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "loc.messages.Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "loc.messages.Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "loc.messages.Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "loc.messages.NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "loc.messages.Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "loc.messages.Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "loc.messages.AppOfflineModeenabled": "App offline mode enabled.",
+ "loc.messages.Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "loc.messages.AppOflineModedisabled": "App offline mode disabled.",
+ "loc.messages.FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "loc.messages.XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "loc.messages.Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromZip options do not support war file deployment.",
+ "loc.messages.Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromZip might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "loc.messages.ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "loc.messages.EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "loc.messages.ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "loc.messages.FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "loc.messages.RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "loc.messages.Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "loc.messages.KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "loc.messages.FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "loc.messages.FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "loc.messages.VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "loc.messages.JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "loc.messages.JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "loc.messages.XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "loc.messages.failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "loc.messages.failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "loc.messages.ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "loc.messages.FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "loc.messages.FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "loc.messages.ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "loc.messages.ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "loc.messages.FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "loc.messages.FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "loc.messages.ScriptFileNotFound": "Script file '%s' not found.",
+ "loc.messages.InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "loc.messages.RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "loc.messages.stdoutFromScript": "Standard output from script: ",
+ "loc.messages.stderrFromScript": "Standard error from script: ",
+ "loc.messages.WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "loc.messages.SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "loc.messages.FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "loc.messages.FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "loc.messages.FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "loc.messages.ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "loc.messages.PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "loc.messages.InvalidPollOption": "Invalid polling option provided: %s.",
+ "loc.messages.MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "loc.messages.AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "loc.messages.FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "loc.messages.FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "loc.messages.FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "loc.messages.AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "loc.messages.UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "loc.messages.UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "loc.messages.UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "loc.messages.FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "loc.messages.SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "loc.messages.FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "loc.messages.UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "loc.messages.UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "loc.messages.Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "loc.messages.UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "loc.messages.UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "loc.messages.AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "loc.messages.SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "loc.messages.FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "loc.messages.RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "loc.messages.FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "loc.messages.WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "loc.messages.FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "loc.messages.FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "loc.messages.FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "loc.messages.FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "loc.messages.RetryToDeploy": "Retrying to deploy the package.",
+ "loc.messages.FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "loc.messages.FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "loc.messages.FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "loc.messages.FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "loc.messages.FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "loc.messages.UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "loc.messages.UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "loc.messages.UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "loc.messages.UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "loc.messages.MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "loc.messages.PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "loc.messages.PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "loc.messages.WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "loc.messages.FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "loc.messages.GoExeNameNotPresent": "Go exe name is not present",
+ "loc.messages.WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "loc.messages.Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "loc.messages.CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "loc.messages.CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "loc.messages.XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "loc.messages.PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "loc.messages.InvalidConnectionType": "Invalid service connection type",
+ "loc.messages.InvalidImageSourceType": "Invalid Image source Type",
+ "loc.messages.InvalidPublishProfile": "Publish profile file is invalid.",
+ "loc.messages.ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "loc.messages.ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "loc.messages.DeployLogsURL": "Deploy logs can be viewed at %s",
+ "loc.messages.AppServiceApplicationURL": "App Service Application URL: %s",
+ "loc.messages.ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "loc.messages.FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "loc.messages.JarPathNotPresent": "Java jar path is not present",
+ "loc.messages.FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s"
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/ThirdPartyNotices.txt b/Tasks/AzureFunctionDeploymentV1/ThirdPartyNotices.txt
new file mode 100644
index 000000000000..23bf6b698d0c
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/ThirdPartyNotices.txt
@@ -0,0 +1,2248 @@
+
+THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
+Do Not Translate or Localize
+
+Azure App Service Deploy incorporates third party material from the projects listed below. The original copyright notice and the license under which Microsoft received such third party material are set forth below. Microsoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise.
+
+1. abbrev (https://github.com/isaacs/abbrev-js)
+2. Archiver (https://github.com/archiverjs/node-archiver)
+3. archiver-utils (https://github.com/archiverjs/archiver-utils)
+4. async (https://github.com/caolan/async)
+5. balanced-match (https://github.com/juliangruber/balanced-match)
+6. binary (https://github.com/substack/node-binary)
+7. bl (Buffer List) (https://github.com/rvagg/bl)
+8. brace-expansion (https://github.com/juliangruber/brace-expansion)
+9. buffer-crc32 (https://github.com/brianloveswords/buffer-crc32)
+10. buffers (DefinitelyTyped) (https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/buffers)
+11. buffer-equal-constant-time (https://github.com/salesforce/buffer-equal-constant-time)
+12. buffer-shims (https://github.com/calvinmetcalf/buffer-shims)
+13. chainsaw (https://github.com/substack/node-chainsaw)
+14. compress-commons (https://github.com/archiverjs/node-compress-commons)
+15. concat-map (https://github.com/substack/node-concat-map)
+16. core-util-is (https://github.com/isaacs/core-util-is)
+17. Crc32-stream (https://github.com/archiverjs/node-crc32-stream)
+18. Ctt (https://ctt.codeplex.com)
+19. decompress-zip (https://github.com/bower/decompress-zip)
+20. end-of-stream (https://github.com/mafintosh/end-of-stream)
+21. fs.realpath (https://github.com/isaacs/fs.realpath)
+22. Glob (https://github.com/isaacs/node-glob)
+23. graceful-fs (https://github.com/isaacs/node-graceful-fs)
+24. hoek (https://github.com/hapijs/hoek)
+25. inflight (https://github.com/npm/inflight)
+26. inherits (https://github.com/isaacs/inherits)
+27. isarray (https://github.com/juliangruber/isarray/)
+28. isemail (https://github.com/hapijs/isemail)
+29. joi (https://github.com/hapijs/joi)
+30. jsonwebtoken (https://github.com/auth0/node-jsonwebtoken)
+31. lazystream (https://github.com/jpommerening/node-lazystream)
+32. lodash (https://lodash.com/)
+ Includes:File(s) copyright John Resig (http://ejohn.org/blog/javascript-micro-templating/)
+ Includes:File(s) copyright Laura Doktorova (https://github.com/olado/doT)
+33. lodash.once (https://github.com/lodash/lodash)
+34. Ltx (https://github.com/node-xmpp/ltx)
+35. minimatch (https://github.com/isaacs/minimatch)
+36. mkpath (https://github.com/jrajav/mkpath)
+37. Mockery (https://github.com/mfncooper/mockery)
+38. Moment (https://github.com/moment/moment)
+39. ms (https://github.com/zeit/ms)
+40. Node.js (https://nodejs.org/)
+41. node-ecdsa-sig-formatter (https://github.com/Brightspace/node-ecdsa-sig-formatter)
+42. node-jwa (https://github.com/brianloveswords/node-jwa)
+43. node-jws (https://github.com/brianloveswords/node-jws)
+44. node-tar (https://github.com/npm/node-tar/)
+45. node-uuid (https://github.com/broofa/node-uuid/)
+46. nopt (https://github.com/npm/nopt)
+47. normalize-path (https://github.com/jonschlinkert/normalize-path)
+48. OpenSSL (http://www.openssl.org)
+49. once (https://github.com/isaacs/once)
+50. path-is-absolute (https://github.com/sindresorhus/path-is-absolute)
+51. process-nextick-args (https://github.com/calvinmetcalf/process-nextick-args)
+52. Q (https://github.com/kriskowal/q)
+53. readable-stream (https://github.com/isaacs/readable-stream)
+54. safe-buffer (https://github.com/feross/safe-buffer)
+55. sax js (https://github.com/isaacs/sax-js)
+56. semver (https://github.com/npm/node-semver/)
+57. ShellJS (https://github.com/shelljs/shelljs)
+58. string_decoder (https://github.com/rvagg/string_decoder)
+59. tar-stream (https://github.com/mafintosh/tar-stream)
+60. topo (https://github.com/hapijs/topo)
+61. touch (https://github.com/isaacs/node-touch)
+62. traverse (https://github.com/substack/js-traverse)
+63. tunnel (https://github.com/koichik/node-tunnel)
+64. underscore.js (http://underscorejs.org/; https://github.com/jashkenas/underscore)
+65. util-deprecate (https://github.com/TooTallNate/util-deprecate)
+66. VSTS-task-lib (https://github.com/Microsoft/vsts-task-lib)
+67. winreg (https://github.com/fresc81/node-winreg)
+68. wrappy (https://github.com/npm/wrappy)
+69. Xml2JS (https://github.com/Leonidas-from-XIV/node-xml2js)
+70. Xmlbuilder (https://github.com/oozcitak/xmlbuilder-js)
+71. xtend (https://github.com/Raynos/xtend)
+72. zip-stream (https://github.com/archiverjs/node-zip-stream)
+73. uuid (https://github.com/kelektiv/node-uuid)
+74. @types/node (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+75. @types/q (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+76. @types/mocha (https://github.com/DefinitelyTyped/DefinitelyTyped.git)
+
+
+%% abbrev NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF abbrev NOTICES, INFORMATION, AND LICENSE
+
+%% Archiver NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF Archiver NOTICES, INFORMATION, AND LICENSE
+
+%% archiver-utils NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2015 Chris Talkington.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF archiver-utils NOTICES, INFORMATION, AND LICENSE
+
+%% async NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+
+Copyright (c) 2010-2016 Caolan McMahon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF async NOTICES, INFORMATION, AND LICENSE
+
+%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF balanced-match NOTICES, INFORMATION, AND LICENSE
+
+%% binary NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012 James Halliday
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF binary NOTICES, INFORMATION, AND LICENSE
+
+%% bl (Buffer List) NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+Copyright (c) 2014 bl contributors
+
+bl contributors listed at https://github.com/rvagg/bl#contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF bl (Buffer List) NOTICES, INFORMATION, AND LICENSE
+
+%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF brace-expansion NOTICES, INFORMATION, AND LICENSE
+
+%% buffer-crc32 NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License
+
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF buffer-crc32 NOTICES, INFORMATION, AND LICENSE
+
+%% buffer-equal-constant-time NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013, GoInstant Inc., a salesforce.com company
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+* Neither the name of salesforce.com, nor GoInstant, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF buffer-equal-constant-time NOTICES, INFORMATION, AND LICENSE
+
+%% buffers (DefinitelyTyped) NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This project is licensed under the MIT license.
+
+Copyrights are respective of each contributor listed at the beginning of each definition file.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF buffers (DefinitelyTyped) NOTICES, INFORMATION, AND LICENSE
+
+%% buffer-shims NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+# Copyright (c) 2016 Calvin Metcalf
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.**
+
+=========================================
+END OF buffer-shims NOTICES, INFORMATION, AND LICENSE
+
+%% chainsaw NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010 James Halliday (mail@substack.net)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF chainsaw NOTICES, INFORMATION, AND LICENSE
+
+%% compress-commons NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF compress-commons NOTICES, INFORMATION, AND LICENSE
+
+%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) James Halliday/substack
+
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF concat-map NOTICES, INFORMATION, AND LICENSE
+
+%% core-util-is NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright Node.js contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+=========================================
+END OF core-util-is NOTICES, INFORMATION, AND LICENSE
+
+%% Crc32-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF Crc32-stream NOTICES, INFORMATION, AND LICENSE
+
+%% Ctt NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Microsoft Public License (Ms-PL)
+
+This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
+
+1. Definitions
+
+The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
+
+A "contribution" is the original software, or any additions or changes to the software.
+
+A "contributor" is any person that distributes its contribution under this license.
+
+"Licensed patents" are a contributor's patent claims that read directly on its contribution.
+
+2. Grant of Rights
+
+(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
+
+(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
+
+3. Conditions and Limitations
+
+(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
+
+(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
+
+(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
+
+(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
+
+(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
+=========================================
+END OF Ctt NOTICES, INFORMATION, AND LICENSE
+
+%% decompress-zip NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) Bower Team
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF decompress-zip NOTICES, INFORMATION, AND LICENSE
+
+%% end-of-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF end-of-stream NOTICES, INFORMATION, AND LICENSE
+
+%% fs.realpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+----
+
+This library bundles a version of the `fs.realpath` and `fs.realpathSync`
+methods from Node.js v0.10 under the terms of the Node.js MIT license, as follows:
+
+ Copyright Joyent, Inc. and other Node contributors.
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF fs.realpath NOTICES, INFORMATION, AND LICENSE
+
+%% Glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF Glob NOTICES, INFORMATION, AND LICENSE
+
+%% graceful-fs NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF graceful-fs NOTICES, INFORMATION, AND LICENSE
+
+%% hoek NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+
+Copyright (c) 2011-2014, Walmart and other contributors.
+Copyright (c) 2011, Yahoo Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/hapi/graphs/contributors
+Portions of this project were initially based on the Yahoo! Inc. Postmile project,
+published at https://github.com/yahoo/postmile.
+=========================================
+Includes code from Deep-eql
+
+Copyright (c) 2013 Jake Luer jake@alogicalparadox.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF hoek NOTICES, INFORMATION, AND LICENSE
+
+%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF inflight NOTICES, INFORMATION, AND LICENSE
+
+%% inherits NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF inherits NOTICES, INFORMATION, AND LICENSE
+
+%% isarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF isarray NOTICES, INFORMATION, AND LICENSE
+
+%% isemail NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2008-2011, Dominic Sayers
+Copyright (c) 2013-2014, GlobeSherpa
+Copyright (c) 2014-2015, Eli Skeggs
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+- Neither the name of Dominic Sayers nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF isemail NOTICES, INFORMATION, AND LICENSE
+
+%% joi NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014, Walmart and other contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/joi/graphs/contributors
+=========================================
+END OF joi NOTICES, INFORMATION, AND LICENSE
+
+%% jsonwebtoken NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2015 Auth0, Inc. (http://auth0.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF jsonwebtoken NOTICES, INFORMATION, AND LICENSE
+
+%% lazystream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013 J. Pommerening, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF lazystream NOTICES, INFORMATION, AND LICENSE
+
+%% lodash NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright jQuery Foundation and other contributors
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+=========================================
+// Based on John Resig's `tmpl` implementation (http://ejohn.org/blog/javascript-micro-templating/)
+
+Copyright 2008 John Resig
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+// Based on Laura Doktorova's doT.js (https://github.com/olado/doT).
+
+Copyright (c) 2011 Laura Doktorova
+
+Software includes portions from jQote2 Copyright (c) 2010 aefxx,
+http://aefxx.com/ licensed under the MIT license.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash NOTICES, INFORMATION, AND LICENSE
+
+%% lodash.once NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright jQuery Foundation and other contributors
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+=========================================
+END OF lodash.once NOTICES, INFORMATION, AND LICENSE
+
+%% Ltx NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2010 Stephan Maka
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+=========================================
+END OF Ltx NOTICES, INFORMATION, AND LICENSE
+
+%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF minimatch NOTICES, INFORMATION, AND LICENSE
+
+%% mkpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (C) 2012 Jonathan Rajavuori
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF mkpath NOTICES, INFORMATION, AND LICENSE
+
+%% Mockery NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyrights for code authored by Yahoo! Inc. is licensed under the following
+terms:
+
+ MIT License
+
+ Copyright (c) 2011 Yahoo! Inc. All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+=========================================
+END OF Mockery NOTICES, INFORMATION, AND LICENSE
+
+%% Moment NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) JS Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+Files with code from Closure
+
+Copyright (c) 2006 The Closure Library Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+=========================================
+END OF Moment NOTICES, INFORMATION, AND LICENSE
+
+%% ms NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2014 Guillermo Rauch
+Copyright (c) 2016 Zeit, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the Software), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF ms NOTICES, INFORMATION, AND LICENSE
+
+%% Node.js NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Node.js is licensed for use as follows:
+
+"""
+Copyright Node.js contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+"""
+
+This license applies to parts of Node.js originating from the
+https://github.com/joyent/node repository:
+
+"""
+Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+"""
+
+The Node.js license applies to all parts of Node.js that are not externally
+maintained libraries.
+=========================================
+END OF Node.js NOTICES, INFORMATION, AND LICENSE
+
+%% node-ecdsa-sig-formatter NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+ Copyright 2015 D2L Corporation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+=========================================
+END OF node-ecdsa-sig-formatter NOTICES, INFORMATION, AND LICENSE
+
+%% node-jwa NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF node-jwa NOTICES, INFORMATION, AND LICENSE
+
+%% node-jws NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2013 Brian J. Brennan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF node-jws NOTICES, INFORMATION, AND LICENSE
+
+%% node-tar NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+Copyright (c) Isaac Z. Schlueter and Contributors
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF node-tar NOTICES, INFORMATION, AND LICENSE
+
+%% node-uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2010-2012 Robert Kieffer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF node-uuid NOTICES, INFORMATION, AND LICENSE
+
+%% nopt NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF nopt NOTICES, INFORMATION, AND LICENSE
+
+%% normalize-path NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014-2015, Jon Schlinkert.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF normalize-path NOTICES, INFORMATION, AND LICENSE
+
+%% OpenSSL NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+ LICENSE ISSUES
+ ==============
+
+ The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+ the OpenSSL License and the original SSLeay license apply to the toolkit.
+ See below for the actual license texts. Actually both licenses are BSD-style
+ Open Source licenses. In case of any license issues related to OpenSSL
+ please contact openssl-core@openssl.org.
+
+ OpenSSL License
+ ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgment:
+ * This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)
+ *
+ * 4. The names OpenSSL Toolkit and OpenSSL Project must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called OpenSSL
+ * nor may OpenSSL appear in their names without prior written
+ * permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com). This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to. The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes cryptographic software written by
+ * Eric Young (eay@cryptsoft.com)
+ * The word 'cryptographic' can be left out if the rouines from the library
+ * being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ * the apps directory (application code) you must include an acknowledgement:
+ * This product includes software written by Tim Hudson (tjh@cryptsoft.com)
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+=========================================
+END OF OpenSSL NOTICES, INFORMATION, AND LICENSE
+
+%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF once NOTICES, INFORMATION, AND LICENSE
+
+%% path-is-absolute NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+path-is-absolute
+
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+node.js:
+
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+Software), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF path-is-absolute NOTICES, INFORMATION, AND LICENSE
+
+%% process-nextick-args NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2015 Calvin Metcalf
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF process-nextick-args NOTICES, INFORMATION, AND LICENSE
+
+%% Q NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2009�2014 Kristopher Michael Kowal. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+The file q.js is prefaced by the following additional third-party subcomponent information:
+
+/*!
+ *
+ * Copyright 2009-2012 Kris Kowal under the terms of the MIT
+ * license found at http://github.com/kriskowal/q/raw/master/LICENSE
+ *
+ * With parts by Tyler Close
+ * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found
+ * at http://www.opensource.org/licenses/mit-license.html
+ * Forked at ref_send.js version: 2009-05-11
+ *
+ * With parts by Mark Miller
+ * Copyright (C) 2011 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+=========================================
+END OF Q NOTICES, INFORMATION, AND LICENSE
+
+%% readable-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+=========================================
+END OF readable-stream NOTICES, INFORMATION, AND LICENSE
+
+%% safe-buffer NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Feross Aboukhadijeh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF safe-buffer NOTICES, INFORMATION, AND LICENSE
+
+
+%% sax js NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+====
+
+`String.fromCodePoint` by Mathias Bynens used according to terms of MIT
+License, as follows:
+
+ Copyright Mathias Bynens
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF sax js NOTICES, INFORMATION, AND LICENSE
+
+%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF semver NOTICES, INFORMATION, AND LICENSE
+
+%% ShellJS NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012, Artur Adib
+All rights reserved.
+
+You may use this project under the terms of the New BSD license as follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Artur Adib nor the
+ names of the contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF ShellJS NOTICES, INFORMATION, AND LICENSE
+
+%% string_decoder NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+Software), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF string_decoder NOTICES, INFORMATION, AND LICENSE
+
+%% tar-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF tar-stream NOTICES, INFORMATION, AND LICENSE
+
+%% topo NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014, Walmart and other contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The names of any contributors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ * * *
+
+The complete list of contributors can be found at: https://github.com/hapijs/topo/graphs/contributors
+=========================================
+END OF topo NOTICES, INFORMATION, AND LICENSE
+
+%% touch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF touch NOTICES, INFORMATION, AND LICENSE
+
+%% traverse NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010 James Halliday (mail@substack.net)
+
+This project is free software released under the MIT/X11 license:
+http://www.opensource.org/licenses/mit-license.php
+
+Copyright 2010 James Halliday (mail@substack.net)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF traverse NOTICES, INFORMATION, AND LICENSE
+
+%% tunnel NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2012 Koichi Kobayashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF tunnel NOTICES, INFORMATION, AND LICENSE
+
+%% underscore.js NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2009-2017 Jeremy Ashkenas, DocumentCloud and Investigative
+Reporters & Editors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+=========================================
+END OF underscore.js NOTICES, INFORMATION, AND LICENSE
+
+%% util-deprecate NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2014 Nathan Rajlich
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the Software), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF util-deprecate NOTICES, INFORMATION, AND LICENSE
+
+%% VSTS-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF VSTS-task-lib NOTICES, INFORMATION, AND LICENSE
+
+%% winreg NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This project is released under BSD 2-Clause License.
+
+Copyright (c) 2016, Paul Bottin All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF winreg NOTICES, INFORMATION, AND LICENSE
+
+%% wrappy NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF wrappy NOTICES, INFORMATION, AND LICENSE
+
+%% Xml2JS NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010, 2011, 2012, 2013. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+=========================================
+END OF Xml2JS NOTICES, INFORMATION, AND LICENSE
+
+%% Xmlbuilder NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2013 Ozgur Ozcitak
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF Xmlbuilder NOTICES, INFORMATION, AND LICENSE
+
+%% xtend NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014 Raynos.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF xtend NOTICES, INFORMATION, AND LICENSE
+
+%% zip-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Chris Talkington, contributors.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF zip-stream NOTICES, INFORMATION, AND LICENSE
+
+%% uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2010-2016 Robert Kieffer and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Includes Chris Veness' SHA1
+
+Copyright (c) 2014 Chris Veness
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF uuid NOTICES, INFORMATION, AND LICENSE
+
+%% @types/mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF @types/mocha NOTICES, INFORMATION, AND LICENSE
+
+%% @types/node NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF @types/node NOTICES, INFORMATION, AND LICENSE
+
+%% @types/q NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF @types/q NOTICES, INFORMATION, AND LICENSE
diff --git a/Tasks/AzureFunctionDeploymentV1/azurermwebappdeployment.ts b/Tasks/AzureFunctionDeploymentV1/azurermwebappdeployment.ts
new file mode 100644
index 000000000000..4b52d18002d0
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/azurermwebappdeployment.ts
@@ -0,0 +1,38 @@
+import tl = require('vsts-task-lib/task');
+import path = require('path');
+import { TaskParameters, TaskParametersUtility } from './taskparameters';
+import { DeploymentFactory } from './deploymentProvider/DeploymentFactory';
+import * as Endpoint from 'azurermdeploycommon/azure-arm-rest/azure-arm-endpoint';
+
+async function main() {
+ let isDeploymentSuccess: boolean = true;
+
+ try {
+ tl.setResourcePath(path.join( __dirname, 'task.json'));
+ var taskParams: TaskParameters = await TaskParametersUtility.getParameters();
+ var deploymentFactory: DeploymentFactory = new DeploymentFactory(taskParams);
+ var deploymentProvider = await deploymentFactory.GetDeploymentProvider();
+
+ tl.debug("Predeployment Step Started");
+ await deploymentProvider.PreDeploymentStep();
+
+ tl.debug("Deployment Step Started");
+ await deploymentProvider.DeployWebAppStep();
+ }
+ catch(error) {
+ tl.debug("Deployment Failed with Error: " + error);
+ isDeploymentSuccess = false;
+ tl.setResult(tl.TaskResult.Failed, error);
+ }
+ finally {
+ if(deploymentProvider != null) {
+ await deploymentProvider.UpdateDeploymentStatus(isDeploymentSuccess);
+ }
+
+ Endpoint.dispose();
+ tl.debug(isDeploymentSuccess ? "Deployment Succeded" : "Deployment failed");
+
+ }
+}
+
+main();
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..25ee455c6d06
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
@@ -0,0 +1,60 @@
+import { IWebAppDeploymentProvider } from './IWebAppDeploymentProvider';
+import { TaskParameters } from '../taskparameters';
+import { KuduServiceUtility } from 'azurermdeploycommon/operations/KuduServiceUtility';
+import { AzureAppService } from 'azurermdeploycommon/azure-arm-rest/azure-arm-app-service';
+import { Kudu } from 'azurermdeploycommon/azure-arm-rest/azure-arm-app-service-kudu';
+import { AzureAppServiceUtility } from 'azurermdeploycommon/operations/AzureAppServiceUtility';
+import tl = require('vsts-task-lib/task');
+import * as ParameterParser from 'azurermdeploycommon/operations/ParameterParserUtility'
+import { addReleaseAnnotation } from 'azurermdeploycommon/operations/ReleaseAnnotationUtility';
+
+export class AzureRmWebAppDeploymentProvider implements IWebAppDeploymentProvider {
+ protected taskParams:TaskParameters;
+ protected appService: AzureAppService;
+ protected kuduService: Kudu;
+ protected appServiceUtility: AzureAppServiceUtility;
+ protected kuduServiceUtility: KuduServiceUtility;
+ protected virtualApplicationPath: string = "";
+ protected activeDeploymentID;
+
+ constructor(taskParams: TaskParameters) {
+ this.taskParams = taskParams;
+ }
+
+ public async PreDeploymentStep() {
+ this.appService = new AzureAppService(this.taskParams.azureEndpoint, this.taskParams.ResourceGroupName, this.taskParams.WebAppName,
+ this.taskParams.SlotName, this.taskParams.WebAppKind);
+ this.appServiceUtility = new AzureAppServiceUtility(this.appService);
+
+ this.kuduService = await this.appServiceUtility.getKuduService();
+ this.kuduServiceUtility = new KuduServiceUtility(this.kuduService);
+ }
+
+ public async DeployWebAppStep() {}
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await addReleaseAnnotation(this.taskParams.azureEndpoint, this.appService, isDeploymentSuccess);
+ this.activeDeploymentID = await this.kuduServiceUtility.updateDeploymentStatus(isDeploymentSuccess, null, {'type': 'Deployment', slotName: this.appService.getSlot()});
+ tl.debug('Active DeploymentId :'+ this.activeDeploymentID);
+ }
+
+ let appServiceApplicationUrl: string = await this.appServiceUtility.getApplicationURL();
+ console.log(tl.loc('AppServiceApplicationURL', appServiceApplicationUrl));
+ tl.setVariable('AppServiceApplicationUrl', appServiceApplicationUrl);
+ }
+
+ protected async PostDeploymentStep() {
+ if(this.taskParams.AppSettings) {
+ var customApplicationSettings = ParameterParser.parse(this.taskParams.AppSettings);
+ await this.appServiceUtility.updateAndMonitorAppSettings(customApplicationSettings);
+ }
+
+ if(this.taskParams.ConfigurationSettings) {
+ var customApplicationSettings = ParameterParser.parse(this.taskParams.ConfigurationSettings);
+ await this.appServiceUtility.updateConfigurationSettings(customApplicationSettings);
+ }
+
+ await this.appServiceUtility.updateScmTypeAndConfigurationDetails();
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..12b08174f53d
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
@@ -0,0 +1,95 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('vsts-task-lib/task');
+import { PackageType } from 'azurermdeploycommon/webdeployment-common/packageUtility';
+import path = require('path');
+import * as ParameterParser from 'azurermdeploycommon/operations/ParameterParserUtility'
+
+var webCommonUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
+var zipUtility = require('azurermdeploycommon/webdeployment-common/ziputility.js');
+
+const linuxFunctionStorageSetting: string = '-WEBSITES_ENABLE_APP_SERVICE_STORAGE true';
+const linuxFunctionRuntimeSettingName: string = '-FUNCTIONS_WORKER_RUNTIME ';
+
+const linuxFunctionRuntimeSettingValue = new Map([
+ [ 'DOCKER|microsoft/azure-functions-dotnet-core2.0:2.0', 'dotnet ' ],
+ [ 'DOCKER|microsoft/azure-functions-node8:2.0', 'node ' ]
+]);
+
+export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymentProvider {
+ private zipDeploymentID: string;
+
+ public async DeployWebAppStep() {
+ tl.debug('Performing Linux built-in package deployment');
+ var isNewValueUpdated: boolean = false;
+
+ var linuxFunctionRuntimeSetting = "";
+ if(this.taskParams.RuntimeStack){
+ linuxFunctionRuntimeSetting = linuxFunctionRuntimeSettingName + linuxFunctionRuntimeSettingValue.get(this.taskParams.RuntimeStack);
+ }
+ var linuxFunctionAppSetting = linuxFunctionRuntimeSetting + linuxFunctionStorageSetting;
+ var customApplicationSetting = ParameterParser.parse(linuxFunctionAppSetting);
+ isNewValueUpdated = await this.appServiceUtility.updateAndMonitorAppSettings(customApplicationSetting);
+
+ if(!isNewValueUpdated) {
+ await this.kuduServiceUtility.warmpUp();
+ }
+
+ switch(this.taskParams.Package.getPackageType()){
+ case PackageType.folder:
+ let tempPackagePath = webCommonUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false);
+ let archivedWebPackage = await zipUtility.archiveFolder(this.taskParams.Package.getPath(), "", tempPackagePath);
+ tl.debug("Compressed folder into zip " + archivedWebPackage);
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(archivedWebPackage);
+ break;
+ case PackageType.zip:
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(this.taskParams.Package.getPath());
+ break;
+
+ case PackageType.jar:
+ tl.debug("Initiated deployment via kudu service for webapp jar package : "+ this.taskParams.Package.getPath());
+ var folderPath = await webCommonUtility.generateTemporaryFolderForDeployment(false, this.taskParams.Package.getPath(), PackageType.jar);
+ var jarName = webCommonUtility.getFileNameFromPath(this.taskParams.Package.getPath(), ".jar");
+ var destRootPath = "/home/site/wwwroot/";
+ var script = 'java -jar "' + destRootPath + jarName + '.jar' + '" --server.port=80';
+ var initScriptFileName = "startupscript_" + jarName + ".sh";
+ var initScriptFile = path.join(folderPath, initScriptFileName);
+ var destInitScriptPath = destRootPath + initScriptFileName;
+ if(!this.taskParams.AppSettings) {
+ this.taskParams.AppSettings = "-INIT_SCRIPT " + destInitScriptPath;
+ }
+ if(this.taskParams.AppSettings.indexOf("-INIT_SCRIPT") < 0) {
+ this.taskParams.AppSettings += " -INIT_SCRIPT " + destInitScriptPath;
+ }
+ this.taskParams.AppSettings = this.taskParams.AppSettings.trim();
+ tl.writeFile(initScriptFile, script, { encoding: 'utf8' });
+ var output = await webCommonUtility.archiveFolderForDeployment(false, folderPath);
+ var webPackage = output.webDeployPkg;
+ tl.debug("Initiated deployment via kudu service for webapp jar package : "+ webPackage);
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(webPackage);
+ break;
+
+ case PackageType.war:
+ tl.debug("Initiated deployment via kudu service for webapp war package : "+ this.taskParams.Package.getPath());
+ var warName = webCommonUtility.getFileNameFromPath(this.taskParams.Package.getPath(), ".war");
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingWarDeploy(this.taskParams.Package.getPath(),
+ { slotName: this.appService.getSlot() }, warName);
+ break;
+
+ default:
+ throw new Error(tl.loc('Invalidwebapppackageorfolderpathprovided', this.taskParams.Package.getPath()));
+ }
+
+ await this.appServiceUtility.updateStartupCommandAndRuntimeStack(this.taskParams.RuntimeStack, this.taskParams.StartupCommand);
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ if(this.zipDeploymentID && this.activeDeploymentID && isDeploymentSuccess) {
+ await this.kuduServiceUtility.postZipDeployOperation(this.zipDeploymentID, this.activeDeploymentID);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/DeploymentFactory.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/DeploymentFactory.ts
new file mode 100644
index 000000000000..0dc8c8913409
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/DeploymentFactory.ts
@@ -0,0 +1,62 @@
+import { TaskParameters, DeploymentType } from '../TaskParameters';
+import { BuiltInLinuxWebAppDeploymentProvider } from './BuiltInLinuxWebAppDeploymentProvider';
+import { IWebAppDeploymentProvider } from './IWebAppDeploymentProvider';
+import { WindowsWebAppZipDeployProvider } from './WindowsWebAppZipDeployProvider';
+import { WindowsWebAppRunFromZipProvider } from './WindowsWebAppRunFromZipProvider';
+import tl = require('vsts-task-lib/task');
+import { PackageType } from 'azurermdeploycommon/webdeployment-common/packageUtility';
+import { WindowsWebAppWarDeployProvider } from './WindowsWebAppWarDeployProvider';
+
+export class DeploymentFactory {
+
+ private _taskParams: TaskParameters;
+
+ constructor(taskParams: TaskParameters) {
+ this._taskParams = taskParams;
+ }
+
+ public async GetDeploymentProvider(): Promise {
+ if(this._taskParams.isLinuxApp) {
+ tl.debug("Depolyment started for linux app service");
+ return new BuiltInLinuxWebAppDeploymentProvider(this._taskParams);
+ } else {
+ tl.debug("Depolyment started for windows app service");
+ return await this._getWindowsDeploymentProvider()
+ }
+ }
+
+ private async _getWindowsDeploymentProvider(): Promise {
+ tl.debug("Package type of deployment is: "+ this._taskParams.Package.getPackageType());
+ switch(this._taskParams.Package.getPackageType()){
+ case PackageType.war:
+ return new WindowsWebAppWarDeployProvider(this._taskParams);
+ case PackageType.jar:
+ return new WindowsWebAppZipDeployProvider(this._taskParams);
+ default:
+ return await this._getWindowsDeploymentProviderForZipAndFolderPackageType();
+ }
+ }
+
+ private async _getWindowsDeploymentProviderForZipAndFolderPackageType(): Promise {
+ if(this._taskParams.DeploymentType != DeploymentType.auto) {
+ return await this._getUserSelectedDeploymentProviderForWindow();
+ } else {
+ var _isMSBuildPackage = await this._taskParams.Package.isMSBuildPackage();
+ if(_isMSBuildPackage) {
+ throw new Error(tl.loc('MsBuildPackageNotSupported', this._taskParams.Package.getPath()));
+ } else {
+ return new WindowsWebAppRunFromZipProvider(this._taskParams);
+ }
+ }
+ }
+
+ private _getUserSelectedDeploymentProviderForWindow(): IWebAppDeploymentProvider {
+ switch(this._taskParams.DeploymentType){
+ case DeploymentType.zipDeploy:
+ return new WindowsWebAppZipDeployProvider(this._taskParams);
+ case DeploymentType.runFromPackage:
+ return new WindowsWebAppRunFromZipProvider(this._taskParams);
+ }
+ }
+
+}
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/IWebAppDeploymentProvider.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/IWebAppDeploymentProvider.ts
new file mode 100644
index 000000000000..3ed6e50c86f4
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/IWebAppDeploymentProvider.ts
@@ -0,0 +1,5 @@
+export interface IWebAppDeploymentProvider{
+ PreDeploymentStep();
+ DeployWebAppStep();
+ UpdateDeploymentStatus(isDeploymentSuccess: boolean);
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
new file mode 100644
index 000000000000..b80a094a1f9f
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
@@ -0,0 +1,57 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('vsts-task-lib/task');
+import * as ParameterParser from 'azurermdeploycommon/operations/ParameterParserUtility'
+import { DeploymentType } from '../taskparameters';
+import { PackageType } from 'azurermdeploycommon/webdeployment-common/packageUtility';
+import { addReleaseAnnotation } from 'azurermdeploycommon/operations/ReleaseAnnotationUtility';
+import { FileTransformsUtility } from 'azurermdeploycommon/operations/FileTransformsUtility.js';
+const oldRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_ZIP';
+const runFromZipAppSetting: string = '-WEBSITE_RUN_FROM_PACKAGE 1';
+var deployUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
+var zipUtility = require('azurermdeploycommon/webdeployment-common/ziputility.js');
+
+export class WindowsWebAppRunFromZipProvider extends AzureRmWebAppDeploymentProvider {
+
+ public async DeployWebAppStep() {
+ var webPackage = await FileTransformsUtility.applyTransformations(this.taskParams.Package.getPath(), this.taskParams.WebConfigParameters, this.taskParams.Package.getPackageType());
+
+ if(this.taskParams.DeploymentType === DeploymentType.runFromPackage) {
+ var _isMSBuildPackage = await this.taskParams.Package.isMSBuildPackage();
+ if(_isMSBuildPackage) {
+ throw Error(tl.loc("Publishusingzipdeploynotsupportedformsbuildpackage"));
+ }
+ else if(this.taskParams.Package.getPackageType() === PackageType.war) {
+ throw Error(tl.loc("Publishusingzipdeploydoesnotsupportwarfile"));
+ }
+ }
+
+ if(tl.stats(webPackage).isDirectory()) {
+ let tempPackagePath = deployUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false);
+ webPackage = await zipUtility.archiveFolder(webPackage, "", tempPackagePath);
+ tl.debug("Compressed folder into zip " + webPackage);
+ }
+
+ tl.debug("Initiated deployment via kudu service for webapp package : ");
+
+ var addCustomApplicationSetting = ParameterParser.parse(runFromZipAppSetting);
+ var deleteCustomApplicationSetting = ParameterParser.parse(oldRunFromZipAppSetting);
+ var isNewValueUpdated: boolean = await this.appServiceUtility.updateAndMonitorAppSettings(addCustomApplicationSetting, deleteCustomApplicationSetting);
+
+ if(!isNewValueUpdated) {
+ await this.kuduServiceUtility.warmpUp();
+ }
+
+ await this.kuduServiceUtility.deployUsingRunFromZip(webPackage,
+ { slotName: this.appService.getSlot() });
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ await addReleaseAnnotation(this.taskParams.azureEndpoint, this.appService, isDeploymentSuccess);
+
+ let appServiceApplicationUrl: string = await this.appServiceUtility.getApplicationURL();
+ console.log(tl.loc('AppServiceApplicationURL', appServiceApplicationUrl));
+ tl.setVariable('AppServiceApplicationUrl', appServiceApplicationUrl);
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts
new file mode 100644
index 000000000000..3719199e7cce
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts
@@ -0,0 +1,32 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('vsts-task-lib/task');
+var webCommonUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
+
+
+export class WindowsWebAppWarDeployProvider extends AzureRmWebAppDeploymentProvider {
+
+ private zipDeploymentID: string;
+
+ public async DeployWebAppStep() {
+
+ tl.debug("Initiated deployment via kudu service for webapp war package : "+ this.taskParams.Package.getPath());
+
+ await this.kuduServiceUtility.warmpUp();
+
+ var warName = webCommonUtility.getFileNameFromPath(this.taskParams.Package.getPath(), ".war");
+
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingWarDeploy(this.taskParams.Package.getPath(),
+ { slotName: this.appService.getSlot() }, warName);
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ if(this.zipDeploymentID && this.activeDeploymentID && isDeploymentSuccess) {
+ await this.kuduServiceUtility.postZipDeployOperation(this.zipDeploymentID, this.activeDeploymentID);
+ }
+ }
+ }
+}
diff --git a/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts
new file mode 100644
index 000000000000..b7b3b177ba36
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts
@@ -0,0 +1,58 @@
+import { AzureRmWebAppDeploymentProvider } from './AzureRmWebAppDeploymentProvider';
+import tl = require('vsts-task-lib/task');
+import * as ParameterParser from 'azurermdeploycommon/operations/ParameterParserUtility'
+import { DeploymentType } from '../taskparameters';
+import { PackageType } from 'azurermdeploycommon/webdeployment-common/packageUtility';
+import { FileTransformsUtility } from 'azurermdeploycommon/operations/FileTransformsUtility.js';
+const deleteOldRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_ZIP';
+const removeRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_PACKAGE 0';
+var deployUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
+var zipUtility = require('azurermdeploycommon/webdeployment-common/ziputility.js');
+
+export class WindowsWebAppZipDeployProvider extends AzureRmWebAppDeploymentProvider {
+
+ private zipDeploymentID: string;
+
+ public async DeployWebAppStep() {
+ var webPackage = await FileTransformsUtility.applyTransformations(this.taskParams.Package.getPath(), this.taskParams.WebConfigParameters, this.taskParams.Package.getPackageType());
+
+ if(this.taskParams.DeploymentType === DeploymentType.zipDeploy) {
+ var _isMSBuildPackage = await this.taskParams.Package.isMSBuildPackage();
+ if(_isMSBuildPackage) {
+ throw Error(tl.loc("Publishusingzipdeploynotsupportedformsbuildpackage"));
+ }
+ else if(this.taskParams.Package.getPackageType() === PackageType.war) {
+ throw Error(tl.loc("Publishusingzipdeploydoesnotsupportwarfile"));
+ }
+ }
+
+ if(tl.stats(webPackage).isDirectory()) {
+ let tempPackagePath = deployUtility.generateTemporaryFolderOrZipPath(tl.getVariable('AGENT.TEMPDIRECTORY'), false);
+ webPackage = await zipUtility.archiveFolder(webPackage, "", tempPackagePath);
+ tl.debug("Compressed folder into zip " + webPackage);
+ }
+
+ tl.debug("Initiated deployment via kudu service for webapp package : ");
+
+ var updateApplicationSetting = ParameterParser.parse(removeRunFromZipAppSetting)
+ var deleteApplicationSetting = ParameterParser.parse(deleteOldRunFromZipAppSetting)
+ var isNewValueUpdated: boolean = await this.appServiceUtility.updateAndMonitorAppSettings(updateApplicationSetting, deleteApplicationSetting);
+
+ if(!isNewValueUpdated) {
+ await this.kuduServiceUtility.warmpUp();
+ }
+
+ this.zipDeploymentID = await this.kuduServiceUtility.deployUsingZipDeploy(webPackage);
+
+ await this.PostDeploymentStep();
+ }
+
+ public async UpdateDeploymentStatus(isDeploymentSuccess: boolean) {
+ if(this.kuduServiceUtility) {
+ await super.UpdateDeploymentStatus(isDeploymentSuccess);
+ if(this.zipDeploymentID && this.activeDeploymentID && isDeploymentSuccess) {
+ await this.kuduServiceUtility.postZipDeployOperation(this.zipDeploymentID, this.activeDeploymentID);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/icon.png b/Tasks/AzureFunctionDeploymentV1/icon.png
new file mode 100644
index 000000000000..76a581b1090d
Binary files /dev/null and b/Tasks/AzureFunctionDeploymentV1/icon.png differ
diff --git a/Tasks/AzureFunctionDeploymentV1/make.json b/Tasks/AzureFunctionDeploymentV1/make.json
new file mode 100644
index 000000000000..f33624a43e97
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/make.json
@@ -0,0 +1,27 @@
+{
+ "common": [
+ {
+ "module": "../Common/AzureRmDeploy-common",
+ "type": "node",
+ "dest": "./",
+ "compile" : true
+ }
+ ],
+ "externals": {
+ "archivePackages": [
+ {
+ "archiveName": "ctt.zip",
+ "url": "https://vstsagenttools.blob.core.windows.net/tools/ctt/1.6/ctt.zip",
+ "dest": "./"
+ }
+ ]
+ },
+ "rm": [
+ {
+ "items": [
+ "node_modules/azurermdeploycommon/node_modules/vsts-task-lib"
+ ],
+ "options": "-Rf"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/package-lock.json b/Tasks/AzureFunctionDeploymentV1/package-lock.json
new file mode 100644
index 000000000000..8147f66339d2
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/package-lock.json
@@ -0,0 +1,612 @@
+{
+ "name": "vsts-tasks-azurefunctiondeployment",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/mocha": {
+ "version": "2.2.48",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz",
+ "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw=="
+ },
+ "@types/node": {
+ "version": "6.0.68",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.68.tgz",
+ "integrity": "sha1-DEO2uLlEX+uGoPvTRX4/S8WR5m0="
+ },
+ "@types/q": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.0.7.tgz",
+ "integrity": "sha512-0WS7XU7sXzQ7J1nbnMKKYdjrrFoO3YtZYgUzeV8JFXffPnHfvSJQleR70I8BOAsOm14i4dyaAZ3YzqIl1YhkXQ=="
+ },
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU="
+ },
+ "archiver": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.2.0.tgz",
+ "integrity": "sha1-+1xq9UQ7P6akJjRHU7rSp7REqt0=",
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "async": "2.1.4",
+ "buffer-crc32": "0.2.13",
+ "glob": "7.1.1",
+ "lodash": "4.17.2",
+ "readable-stream": "2.2.2",
+ "tar-stream": "1.5.2",
+ "zip-stream": "1.1.0"
+ }
+ },
+ "archiver-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
+ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
+ "requires": {
+ "glob": "7.1.1",
+ "graceful-fs": "4.1.11",
+ "lazystream": "1.0.0",
+ "lodash": "4.17.2",
+ "normalize-path": "2.0.1",
+ "readable-stream": "2.2.2"
+ }
+ },
+ "async": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz",
+ "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=",
+ "requires": {
+ "lodash": "4.17.2"
+ }
+ },
+ "azurermdeploycommon": {
+ "version": "file:../../_build/Tasks/Common/azurermdeploycommon-1.0.0.tgz",
+ "requires": {
+ "@types/mocha": "2.2.48",
+ "@types/node": "6.0.68",
+ "@types/q": "1.0.7",
+ "archiver": "1.2.0",
+ "decompress-zip": "0.3.0",
+ "jsonwebtoken": "7.3.0",
+ "ltx": "2.6.2",
+ "q": "1.4.1",
+ "typed-rest-client": "0.12.0",
+ "vsts-task-lib": "2.0.5",
+ "winreg": "1.2.2",
+ "xml2js": "0.4.13"
+ }
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+ "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
+ },
+ "binary": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
+ "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
+ "requires": {
+ "buffers": "0.1.1",
+ "chainsaw": "0.1.0"
+ }
+ },
+ "bl": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
+ "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=",
+ "requires": {
+ "readable-stream": "2.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
+ "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=",
+ "requires": {
+ "balanced-match": "0.4.2",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
+ "buffer-shims": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
+ "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
+ },
+ "buffers": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
+ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
+ },
+ "chainsaw": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
+ "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
+ "requires": {
+ "traverse": "0.3.9"
+ }
+ },
+ "compress-commons": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.1.0.tgz",
+ "integrity": "sha1-n0RguxKIVkx0c5FuApiqPDINyts=",
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "crc32-stream": "1.0.0",
+ "normalize-path": "2.0.1",
+ "readable-stream": "2.2.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "crc32-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-1.0.0.tgz",
+ "integrity": "sha1-6hVeXh1zjtN3hDj/6S/+KhQa6z8=",
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "readable-stream": "2.2.2"
+ }
+ },
+ "decompress-zip": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz",
+ "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=",
+ "requires": {
+ "binary": "0.3.0",
+ "graceful-fs": "4.1.11",
+ "mkpath": "0.1.0",
+ "nopt": "3.0.6",
+ "q": "1.5.1",
+ "readable-stream": "1.1.14",
+ "touch": "0.0.3"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz",
+ "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=",
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "end-of-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz",
+ "integrity": "sha1-6TUyWLqpEIll78QcsO+K3i88+wc=",
+ "requires": {
+ "once": "1.3.3"
+ },
+ "dependencies": {
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ }
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.3",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isemail": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz",
+ "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo="
+ },
+ "joi": {
+ "version": "6.10.1",
+ "resolved": "http://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
+ "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=",
+ "requires": {
+ "hoek": "2.16.3",
+ "isemail": "1.2.0",
+ "moment": "2.21.0",
+ "topo": "1.1.0"
+ }
+ },
+ "jsonwebtoken": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.3.0.tgz",
+ "integrity": "sha1-hRGNanDj/M3xQ4n056HD+cip+7o=",
+ "requires": {
+ "joi": "6.10.1",
+ "jws": "3.1.5",
+ "lodash.once": "4.1.1",
+ "ms": "0.7.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "jwa": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz",
+ "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==",
+ "requires": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.10",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "jws": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz",
+ "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==",
+ "requires": {
+ "jwa": "1.1.6",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "requires": {
+ "readable-stream": "2.2.2"
+ }
+ },
+ "lodash": {
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2.tgz",
+ "integrity": "sha1-NKMFW6vgTOQkZ7YH1wAHLH/2v0I="
+ },
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
+ },
+ "ltx": {
+ "version": "2.6.2",
+ "resolved": "http://registry.npmjs.org/ltx/-/ltx-2.6.2.tgz",
+ "integrity": "sha1-cD5EN9XjlNJsAxT9j9Xevtjgmdk=",
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=",
+ "requires": {
+ "brace-expansion": "1.1.6"
+ }
+ },
+ "mkpath": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
+ "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE="
+ },
+ "mockery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz",
+ "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8="
+ },
+ "moment": {
+ "version": "2.21.0",
+ "resolved": "http://registry.npmjs.org/moment/-/moment-2.21.0.tgz",
+ "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ=="
+ },
+ "ms": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz",
+ "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8="
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "requires": {
+ "abbrev": "1.0.9"
+ }
+ },
+ "normalize-path": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz",
+ "integrity": "sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
+ },
+ "q": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+ "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4="
+ },
+ "readable-stream": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz",
+ "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=",
+ "requires": {
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "sax": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
+ "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
+ },
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
+ },
+ "shelljs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
+ "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "tar-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz",
+ "integrity": "sha1-+8bG6DwaGdTLSMfZYXH8JI7/x78=",
+ "requires": {
+ "bl": "1.1.2",
+ "end-of-stream": "1.1.0",
+ "readable-stream": "2.2.2",
+ "xtend": "4.0.1"
+ }
+ },
+ "topo": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
+ "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "touch": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
+ "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
+ "requires": {
+ "nopt": "1.0.10"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "requires": {
+ "abbrev": "1.0.9"
+ }
+ }
+ }
+ },
+ "traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk="
+ },
+ "tunnel": {
+ "version": "0.0.4",
+ "resolved": "http://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz",
+ "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM="
+ },
+ "typed-rest-client": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.12.0.tgz",
+ "integrity": "sha1-Y3b1Un9CfaEh3K/f1+QeEyHgcgw=",
+ "requires": {
+ "tunnel": "0.0.4",
+ "underscore": "1.8.3"
+ }
+ },
+ "underscore": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
+ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
+ "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
+ },
+ "vsts-task-lib": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.0.5.tgz",
+ "integrity": "sha1-y9WrIy6rtxDJaXkFMYcmlZHA1RA=",
+ "requires": {
+ "minimatch": "3.0.3",
+ "mockery": "1.7.0",
+ "q": "1.5.1",
+ "semver": "5.4.1",
+ "shelljs": "0.3.0",
+ "uuid": "3.2.1"
+ },
+ "dependencies": {
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+ },
+ "uuid": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
+ }
+ }
+ },
+ "winreg": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.2.tgz",
+ "integrity": "sha1-hQmvo7ccW70RCm18YkfsZ3NsWY8="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "xml2js": {
+ "version": "0.4.13",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.13.tgz",
+ "integrity": "sha1-+EQ+B0Oeb/ktmVKPSbvTScyfMGs=",
+ "requires": {
+ "sax": "1.2.1",
+ "xmlbuilder": "8.2.2"
+ }
+ },
+ "xmlbuilder": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
+ "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M="
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ },
+ "zip-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.1.0.tgz",
+ "integrity": "sha1-KtR5//wWjgWoiOjDSP9oE7PxNzM=",
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "compress-commons": "1.1.0",
+ "lodash": "4.17.2",
+ "readable-stream": "2.2.2"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/package.json b/Tasks/AzureFunctionDeploymentV1/package.json
new file mode 100644
index 000000000000..cc1fc8e5bfa3
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "vsts-tasks-azurefunctiondeployment",
+ "version": "1.0.0",
+ "description": "Azure Pipelines Azure Function Deployment",
+ "main": "azurermWebappdeployment.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/Microsoft/vsts-tasks.git"
+ },
+ "author": "Microsoft Corporation",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/Microsoft/vsts-tasks/issues"
+ },
+ "homepage": "https://github.com/Microsoft/vsts-tasks#readme",
+ "dependencies": {
+ "@types/mocha": "2.2.48",
+ "@types/node": "6.0.68",
+ "@types/q": "1.0.7",
+ "azurermdeploycommon": "file:../../_build/Tasks/Common/azurermdeploycommon-1.0.0.tgz",
+ "moment": "2.21.0",
+ "q": "1.4.1",
+ "uuid": "3.1.0",
+ "xml2js": "0.4.13"
+ }
+}
diff --git a/Tasks/AzureFunctionDeploymentV1/task.json b/Tasks/AzureFunctionDeploymentV1/task.json
new file mode 100644
index 000000000000..dbd3ee545172
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/task.json
@@ -0,0 +1,381 @@
+{
+ "id": "501DD25D-1785-43E4-B4E5-A5C78CCC0573",
+ "name": "AzureFunctionDeployment",
+ "friendlyName": "Azure Function",
+ "description": "Update Azure Function on Windows, Function on Linux with built-in images, ASP.NET, .NET Core, PHP, Python or Node.js based Web applications",
+ "helpMarkDown": "[More information](https://aka.ms/azurefunctiondeployreadme)",
+ "category": "Deploy",
+ "visibility": [
+ "Build",
+ "Release"
+ ],
+ "preview": "true",
+ "runsOn": [
+ "Agent",
+ "DeploymentGroup"
+ ],
+ "author": "Microsoft Corporation",
+ "version": {
+ "Major": 1,
+ "Minor": 0,
+ "Patch": 0
+ },
+ "releaseNotes": "What's new in version 1.* (preview)
Supports Zip Deploy, Run From Package, War Deploy
Supports App Service Environments
Improved UI for discovering different App service types supported by the task
Run From Package is the preferred deployment method, which makes files in wwwroot folder read-only
Click [here](https://aka.ms/azurefunctiondeployreadme) for more information.",
+ "minimumAgentVersion": "2.104.1",
+ "groups": [
+ {
+ "name": "AdditionalDeploymentOptions",
+ "displayName": "Additional Deployment Options",
+ "isExpanded": false,
+ "visibleRule": "appType != functionAppLinux && appType != \"\" && package NotEndsWith .war && Package NotEndsWith .jar"
+ },
+ {
+ "name": "ApplicationAndConfigurationSettings",
+ "displayName": "Application and Configuration Settings",
+ "isExpanded": false
+ }
+ ],
+ "inputs": [
+ {
+ "name": "ConnectedServiceName",
+ "aliases": [
+ "azureSubscription"
+ ],
+ "type": "connectedService:AzureRM",
+ "label": "Azure subscription",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "Select the Azure Resource Manager subscription for the deployment."
+ },
+ {
+ "name": "appType",
+ "type": "pickList",
+ "label": "App Type",
+ "defaultValue": "",
+ "required": true,
+ "options": {
+ "functionApp": "Function App on Windows",
+ "functionAppLinux": "Function App on Linux"
+ }
+ },
+ {
+ "name": "appName",
+ "type": "pickList",
+ "label": "App Name",
+ "defaultValue": "",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "Enter or Select the name of an existing Azure App Service. App services based on selected app type will only be listed."
+ },
+ {
+ "name": "deployToSlotOrASE",
+ "type": "boolean",
+ "label": "Deploy to Slot or App Service Environment",
+ "defaultValue": "false",
+ "required": false,
+ "helpMarkDown": "Select the option to deploy to an existing deployment slot or Azure App Service Environment.
For both the targets, the task needs Resource group name.
In case the deployment target is a slot, by default the deployment is done to the production slot. Any other existing slot name can also be provided.
In case the deployment target is an Azure App Service environment, leave the slot name as ‘production’ and just specify the Resource group name.",
+ "visibleRule": "appType != \"\""
+ },
+ {
+ "name": "resourceGroupName",
+ "type": "pickList",
+ "label": "Resource group",
+ "defaultValue": "",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "The Resource group name is required when the deployment target is either a deployment slot or an App Service Environment.
Enter or Select the Azure Resource group that contains the Azure App Service specified above.",
+ "visibleRule": "deployToSlotOrASE = true"
+ },
+ {
+ "name": "slotName",
+ "type": "pickList",
+ "label": "Slot",
+ "defaultValue": "production",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "Enter or Select an existing Slot other than the Production slot.",
+ "visibleRule": "deployToSlotOrASE = true"
+ },
+ {
+ "name": "package",
+ "type": "filePath",
+ "label": "Package or folder",
+ "defaultValue": "$(System.DefaultWorkingDirectory)/**/*.zip",
+ "required": true,
+ "helpMarkDown": "File path to the package or a folder containing app service contents generated by MSBuild or a compressed zip or war file.
Variables ( [Build](https://docs.microsoft.com/vsts/pipelines/build/variables) | [Release](https://docs.microsoft.com/vsts/pipelines/release/variables#default-variables)), wildcards are supported.
For example, $(System.DefaultWorkingDirectory)/\\*\\*/\\*.zip or $(System.DefaultWorkingDirectory)/\\*\\*/\\*.war."
+ },
+ {
+ "name": "runtimeStack",
+ "type": "pickList",
+ "label": "Runtime Stack",
+ "defaultValue": "",
+ "required": false,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "options": {
+ "DOCKER|microsoft/azure-functions-dotnet-core2.0:2.0": ".NET",
+ "DOCKER|microsoft/azure-functions-node8:2.0": "JavaScript"
+ },
+ "visibleRule": "appType = functionAppLinux"
+ },
+ {
+ "name": "startUpCommand",
+ "type": "string",
+ "label": "Startup command ",
+ "defaultValue": "",
+ "required": false,
+ "visibleRule": "appType = functionAppLinux"
+ },
+ {
+ "name": "webConfigParameters",
+ "type": "multiLine",
+ "label": "Generate web.config parameters for Python, Node.js, Go and Java apps",
+ "required": false,
+ "defaultValue": "",
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "A standard Web.config will be generated and deployed to Azure App Service if the application does not have one. The values in web.config can be edited and vary based on the application framework. For example for node.js application, web.config will have startup file and iis_node module values. This edit feature is only for the generated web.config. [Learn more](https://go.microsoft.com/fwlink/?linkid=843469).",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.webconfig-parameters-grid"
+ },
+ "visibleRule": "appType != functionAppLinux && package NotEndsWith .war"
+ },
+ {
+ "name": "appSettings",
+ "type": "multiLine",
+ "label": "App settings",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "Edit web app application settings following the syntax -key value . Value containing spaces should be enclosed in double quotes.
Example : -Port 5000 -RequestTimeout 5000
-WEBSITE_TIME_ZONE \"Eastern Standard Time\"",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.parameters-grid"
+ }
+ },
+ {
+ "name": "configurationStrings",
+ "type": "multiLine",
+ "label": "Configuration settings",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "Edit web app configuration settings following the syntax -key value. Value containing spaces should be enclosed in double quotes.
Example : -phpVersion 5.6 -linuxFxVersion: node|6.11",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.parameters-grid"
+ }
+ },
+ {
+ "name": "deploymentMethod",
+ "type": "pickList",
+ "label": "Deployment method",
+ "defaultValue": "auto",
+ "required": true,
+ "groupName": "AdditionalDeploymentOptions",
+ "options": {
+ "auto": "Auto-detect",
+ "zipDeploy": "Zip Deploy",
+ "runFromPackage": "Run From Package"
+ },
+ "helpMarkDown": "Choose the deployment method for the app."
+ }
+ ],
+ "outputVariables": [
+ {
+ "name": "AppServiceApplicationUrl",
+ "description": "Application URL of the selected App Service."
+ }
+ ],
+ "dataSourceBindings": [
+ {
+ "target": "appName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppNamesByAppType",
+ "parameters": {
+ "WebAppKind": "$(appType)"
+ }
+ },
+ {
+ "target": "resourceGroupName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppResourceGroup",
+ "parameters": {
+ "WebAppName": "$(appName)"
+ }
+ },
+ {
+ "target": "slotName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppSlotsId",
+ "parameters": {
+ "WebAppName": "$(appName)",
+ "ResourceGroupName": "$(resourceGroupName)"
+ },
+ "resultTemplate": "{\"Value\":\"{{{ #extractResource slots}}}\",\"DisplayValue\":\"{{{ #extractResource slots}}}\"}"
+ }
+ ],
+ "instanceNameFormat": "Azure Function Deploy: $(appName)",
+ "execution": {
+ "Node": {
+ "target": "azurermwebappdeployment.js"
+ }
+ },
+ "messages": {
+ "Invalidwebapppackageorfolderpathprovided": "Invalid App Service package or folder path provided: %s",
+ "SetParamFilenotfound0": "Set parameters file not found: %s",
+ "XDTTransformationsappliedsuccessfully": "XML Transformations applied successfully",
+ "GotconnectiondetailsforazureRMWebApp0": "Got service connection details for Azure App Service:'%s'",
+ "ErrorNoSuchDeployingMethodExists": "Error : No such deploying method exists",
+ "UnabletoretrieveconnectiondetailsforazureRMWebApp": "Unable to retrieve service connection details for Azure App Service : %s. Status Code: %s (%s)",
+ "UnabletoretrieveResourceID": "Unable to retrieve service connection details for Azure Resource:'%s'. Status Code: %s",
+ "Successfullyupdateddeploymenthistory": "Successfully updated deployment History at %s",
+ "Failedtoupdatedeploymenthistory": "Failed to update deployment history. Error: %s",
+ "WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "WARNING : Cannot update deployment status : SCM endpoint is not enabled for this website",
+ "Unabletoretrievewebconfigdetails": "Unable to retrieve App Service configuration details. Status Code: '%s'",
+ "Unabletoretrievewebappsettings": "Unable to retrieve App Service application settings. [Status Code: '%s', Error Message: '%s']",
+ "Unabletoupdatewebappsettings": "Unable to update App service application settings. Status Code: '%s'",
+ "CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "Cannot update deployment status : Unique Deployment ID cannot be retrieved",
+ "PackageDeploymentSuccess": "Successfully deployed web package to App Service.",
+ "PackageDeploymentFailed": "Failed to deploy web package to App Service.",
+ "Runningcommand": "Running command: %s",
+ "Deployingwebapplicationatvirtualpathandphysicalpath": "Deploying web package : %s at virtual path (physical path) : %s (%s)",
+ "Successfullydeployedpackageusingkuduserviceat": "Successfully deployed package %s using kudu service at %s",
+ "Failedtodeploywebapppackageusingkuduservice": "Failed to deploy App Service package using kudu service : %s",
+ "Unabletodeploywebappresponsecode": "Unable to deploy App Service due to error code : %s",
+ "MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "MSDeploy generated packages are only supported for Windows platform.",
+ "UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "Unsupported installed version: %s found for MSDeploy. version should be at least 3 or above",
+ "UnabletofindthelocationofMSDeployfromregistryonmachineError": "Unable to find the location of MS Deploy from registry on machine (Error : %s)",
+ "Nopackagefoundwithspecifiedpattern": "No package found with specified pattern: %s",
+ "MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "More than one package matched with specified pattern: %s. Please restrain the search pattern.",
+ "Trytodeploywebappagainwithappofflineoptionselected": "Try to deploy app service again with Take application offline option selected.",
+ "Trytodeploywebappagainwithrenamefileoptionselected": "Try to deploy app service again with Rename locked files option selected.",
+ "NOJSONfilematchedwithspecificpattern": "NO JSON file matched with specific pattern: %s.",
+ "Configfiledoesntexists": "Configuration file %s doesn't exist.",
+ "Failedtowritetoconfigfilewitherror": "Failed to write to config file %s with error : %s",
+ "AppOfflineModeenabled": "App offline mode enabled.",
+ "Failedtoenableappofflinemode": "Failed to enable app offline mode. Status Code: %s (%s)",
+ "AppOflineModedisabled": "App offline mode disabled.",
+ "FailedtodisableAppOfflineMode": "Failed to disable App offline mode. Status Code: %s (%s)",
+ "CannotPerformXdtTransformationOnNonWindowsPlatform": "Cannot perform XML transformations on a non-Windows platform.",
+ "XdtTransformationErrorWhileTransforming": "XML transformation error while transforming %s using %s.",
+ "PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "Publish using webdeploy options are supported only when using Windows agent",
+ "Publishusingzipdeploynotsupportedformsbuildpackage": "Publish using zip deploy option is not supported for msBuild package type.",
+ "Publishusingzipdeploynotsupportedforvirtualapplication": "Publish using zip deploy option is not supported for virtual application.",
+ "Publishusingzipdeploydoesnotsupportwarfile": "Publish using zip deploy or RunFromPackage options do not support war file deployment.",
+ "Publishusingrunfromzipwithpostdeploymentscript": "Publish using RunFromPackage might not support post deployment script if it makes changes to wwwroot, since the folder is ReadOnly.",
+ "ResourceDoesntExist": "Resource '%s' doesn't exist. Resource should exist before deployment.",
+ "EncodeNotSupported": "Detected file encoding of the file %s as %s. Variable substitution is not supported with file encoding %s. Supported encodings are UTF-8 and UTF-16 LE.",
+ "UnknownFileEncodeError": "Unable to detect encoding of the file %s (typeCode: %s). Supported encodings are UTF-8 and UTF-16 LE.",
+ "ShortFileBufferError": "File buffer is too short to detect encoding type : %s",
+ "FailedToUpdateAzureRMWebAppConfigDetails": "Failed to update App Service configuration details. Error: %s",
+ "SuccessfullyUpdatedAzureRMWebAppConfigDetails": "Successfully updated App Service configuration details",
+ "RequestedURLforkuduphysicalpath": "Requested URL for kudu physical path : %s",
+ "Physicalpathalreadyexists": "Physical path '%s' already exists",
+ "KuduPhysicalpathCreatedSuccessfully": "Kudu physical path created successfully : %s",
+ "FailedtocreateKuduPhysicalPath": "Failed to create kudu physical path. Error : %s",
+ "FailedtocheckphysicalPath": "Failed to check kudu physical path. Error Code: %s",
+ "VirtualApplicationDoesNotExist": "Virtual application doesn't exists : %s",
+ "JSONParseError": "Unable to parse JSON file: %s. Error: %s",
+ "JSONvariablesubstitutionappliedsuccessfully": "JSON variable substitution applied successfully.",
+ "XMLvariablesubstitutionappliedsuccessfully": "XML variable substitution applied successfully.",
+ "failedtoUploadFileToKudu": "Unable to upload file: %s to Kudu (%s). Status Code: %s",
+ "failedtoUploadFileToKuduError": "Unable to upload file: %s to Kudu (%s). Error: %s",
+ "ExecuteScriptOnKudu": "Executing given script on Kudu service.",
+ "FailedToRunScriptOnKuduError": "Unable to run the script on Kudu Service. Error: %s",
+ "FailedToRunScriptOnKudu": "Unable to run the script on Kudu: %s. Status Code: %s",
+ "ScriptExecutionOnKuduSuccess": "Successfully executed script on Kudu.",
+ "ScriptExecutionOnKuduFailed": "Executed script returned '%s' as return code. Error: %s",
+ "FailedtoDeleteFileFromKudu": "Unable to delete file: %s from Kudu (%s). Status Code: %s",
+ "FailedtoDeleteFileFromKuduError": "Unable to delete file: %s from Kudu (%s). Error: %s",
+ "ScriptFileNotFound": "Script file '%s' not found.",
+ "InvalidScriptFile": "Invalid script file '%s' provided. Valid extensions are .bat and .cmd for windows and .sh for linux",
+ "RetryForTimeoutIssue": "Script execution failed with timeout issue. Retrying once again.",
+ "stdoutFromScript": "Standard output from script: ",
+ "stderrFromScript": "Standard error from script: ",
+ "WebConfigAlreadyExists": "web.config file already exists. Not generating.",
+ "SuccessfullyGeneratedWebConfig": "Successfully generated web.config file",
+ "FailedToGenerateWebConfig": "Failed to generate web.config. %s",
+ "FailedToGetKuduFileContent": "Unable to get file content: %s . Status code: %s (%s)",
+ "FailedToGetKuduFileContentError": "Unable to get file content: %s. Error: %s",
+ "ScriptStatusTimeout": "Unable to fetch script status due to timeout.",
+ "PollingForFileTimeOut": "Unable to fetch script status due to timeout. You can increase the timeout limit by setting 'appservicedeploy.retrytimeout' variable to number of minutes required.",
+ "InvalidPollOption": "Invalid polling option provided: %s.",
+ "MissingAppTypeWebConfigParameters": "Attribute '-appType' is missing in the Web.config parameters. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask', 'node' and 'Go'.
For example, '-appType python_Bottle' (sans-quotes) in case of Python Bottle framework..",
+ "AutoDetectDjangoSettingsFailed": "Unable to detect DJANGO_SETTINGS_MODULE 'settings.py' file path. Ensure that the 'settings.py' file exists or provide the correct path in Web.config parameter input in the following format '-DJANGO_SETTINGS_MODULE .settings'",
+ "FailedToApplyTransformation": "Unable to apply transformation for the given package. Verify the following.",
+ "FailedToApplyTransformationReason1": "1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the tag for each config in the csproj file and rebuild. ",
+ "FailedToApplyTransformationReason2": "2. Ensure that the config file and transformation files are present in the same folder inside the package.",
+ "AutoParameterizationMessage": "ConnectionString attributes in Web.config is parameterized by default. Note that the transformation has no effect on connectionString attributes as the value is overridden during deployment by 'Parameters.xml or 'SetParameters.xml' files. You can disable the auto-parameterization by setting /p:AutoParameterizationWebConfigConnectionStrings=False during MSBuild package generation.",
+ "UnsupportedAppType": "App type '%s' not supported in Web.config generation. Valid values for '-appType' are: 'python_Bottle', 'python_Django', 'python_Flask' and 'node'",
+ "UnableToFetchAuthorityURL": "Unable to fetch authority URL.",
+ "UnableToFetchActiveDirectory": "Unable to fetch Active Directory resource ID.",
+ "SuccessfullyUpdatedRuntimeStackAndStartupCommand": "Successfully updated the Runtime Stack and Startup Command.",
+ "FailedToUpdateRuntimeStackAndStartupCommand": "Failed to update the Runtime Stack and Startup Command. Error: %s.",
+ "SuccessfullyUpdatedWebAppSettings": "Successfully updated the App settings.",
+ "FailedToUpdateAppSettingsInConfigDetails": "Failed to update the App settings. Error: %s.",
+ "UnableToGetAzureRMWebAppMetadata": "Failed to fetch AzureRM WebApp metadata. ErrorCode: %s",
+ "UnableToUpdateAzureRMWebAppMetadata": "Unable to update AzureRM WebApp metadata. Error Code: %s",
+ "Unabletoretrieveazureregistrycredentials": "Unable to retrieve Azure Container Registry credentials.[Status Code: '%s']",
+ "UnableToReadResponseBody": "Unable to read response body. Error: %s",
+ "UnableToUpdateWebAppConfigDetails": "Unable to update WebApp config details. StatusCode: '%s'",
+ "AddingReleaseAnnotation": "Adding release annotation for the Application Insights resource '%s'",
+ "SuccessfullyAddedReleaseAnnotation": "Successfully added release annotation to the Application Insight : %s",
+ "FailedAddingReleaseAnnotation": "Failed to add release annotation. %s",
+ "RenameLockedFilesEnabled": "Rename locked files enabled for App Service.",
+ "FailedToEnableRenameLockedFiles": "Failed to enable rename locked files. Error: %s",
+ "WebJobsInProgressIssue": "Few WebJobs in running state prevents the deployment from removing the files. You can disable 'Remove additional files at destination' option or Stop continuous Jobs before deployment.",
+ "FailedToFetchKuduAppSettings": "Failed to fetch Kudu App Settings. Error: %s",
+ "FailedToCreatePath": "Failed to create path '%s' from Kudu. Error: %s",
+ "FailedToDeleteFile": "Failed to delete file '%s/%s' from Kudu. Error: %s",
+ "FailedToDeleteFolder": "Failed to delete folder '%s' from Kudu. Error: %s",
+ "FailedToUploadFile": "Failed to upload file '%s/%s' from Kudu. Error: %s",
+ "FailedToGetFileContent": "Failed to get file content '%s/%s' from Kudu. Error: %s",
+ "FailedToListPath": "Failed to list path '%s' from Kudu. Error: %s",
+ "RetryToDeploy": "Retrying to deploy the package.",
+ "FailedToGetAppServiceDetails": "Failed to fetch App Service '%s' details. Error: %s",
+ "FailedToGetAppServicePublishingProfile": "Failed to fetch App Service '%s' publishing profile. Error: %s",
+ "FailedToUpdateAppServiceMetadata": "Failed to update App service '%s' Meta data. Error: %s",
+ "FailedToGetAppServiceMetadata": "Failed to get App service '%s' Meta data. Error: %s",
+ "FailedToPatchAppServiceConfiguration": "Failed to patch App Service '%s' configuration. Error: %s",
+ "FailedToUpdateAppServiceConfiguration": "Failed to update App service '%s' configuration. Error: %s",
+ "FailedToGetAppServiceConfiguration": "Failed to get App service '%s' configuration. Error: %s",
+ "FailedToGetAppServicePublishingCredentials": "Failed to fetch App Service '%s' publishing credentials. Error: %s",
+ "FailedToGetAppServiceApplicationSettings": "Failed to get App service '%s' application settings. Error: %s",
+ "FailedToUpdateAppServiceApplicationSettings": "Failed to update App service '%s' application settings. Error: %s",
+ "UpdatingAppServiceConfigurationSettings": "Updating App Service Configuration settings. Data: %s",
+ "UpdatedAppServiceConfigurationSettings": "Updated App Service Configuration settings.",
+ "UpdatingAppServiceApplicationSettings": "Updating App Service Application settings. Data: %s",
+ "UpdatedAppServiceApplicationSettings": "Updated App Service Application settings and Kudu Application settings.",
+ "MultipleResourceGroupFoundForAppService": "Multiple resource group found for App Service '%s'.",
+ "PackageDeploymentUsingZipDeployFailed": "Package deployment using ZIP Deploy failed. Refer logs for more details.",
+ "PackageDeploymentInitiated": "Package deployment using ZIP Deploy initiated.",
+ "WarPackageDeploymentInitiated": "Package deployment using WAR Deploy initiated.",
+ "FailedToGetDeploymentLogs": "Failed to get deployment logs. Error: %s",
+ "GoExeNameNotPresent": "Go exe name is not present",
+ "WarDeploymentRetry": "Retrying war file deployment as it did not expand successfully earlier.",
+ "Updatemachinetoenablesecuretlsprotocol": "Make sure the machine is using TLS 1.2 protocol or higher. Check https://aka.ms/enableTlsv2 for more information on how to enable TLS in your machine.",
+ "CouldNotFetchAccessTokenforAzureStatusCode": "Could not fetch access token for Azure. Status code: %s, status message: %s",
+ "CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "Could not fetch access token for Managed Service Principal. Please configure Managed Service Identity (MSI) for virtual machine 'https://aka.ms/azure-msi-docs'. Status code: %s, status message: %s",
+ "CouldNotFetchAccessTokenforMSIStatusCode": "Could not fetch access token for Managed Service Principal. Status code: %s, status message: %s",
+ "XmlParsingFailed": "Unable to parse publishProfileXML file, Error: %s",
+ "PropertyDoesntExistPublishProfile": "[%s] Property does not exist in publish profile",
+ "InvalidConnectionType": "Invalid service connection type",
+ "InvalidImageSourceType": "Invalid Image source Type",
+ "InvalidPublishProfile": "Publish profile file is invalid.",
+ "ASE_SSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to set a variable named VSTS_ARM_REST_IGNORE_SSL_ERRORS to the value true in the build or release pipeline",
+ "ZipDeployLogsURL": "Zip Deploy logs can be viewed at %s",
+ "DeployLogsURL": "Deploy logs can be viewed at %s",
+ "AppServiceApplicationURL": "App Service Application URL: %s",
+ "ASE_WebDeploySSLIssueRecommendation": "To use a certificate in App Service, the certificate must be signed by a trusted certificate authority. If your web app gives you certificate validation errors, you're probably using a self-signed certificate and to resolve them you need to pass -allowUntrusted in additional arguments of web deploy option.",
+ "FailedToGetResourceID": "Failed to get resource ID for resource type '%s' and resource name '%s'. Error: %s",
+ "JarPathNotPresent": "Java jar path is not present",
+ "FailedToUpdateApplicationInsightsResource": "Failed to update Application Insights '%s' Resource. Error: %s",
+ "InvalidDockerImageName": "Invalid Docker hub image name provided.",
+ "MsBuildPackageNotSupported": "Deployment of msBuild generated package is not supported. Change package format or use Azure App Service Deploy task."
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/task.loc.json b/Tasks/AzureFunctionDeploymentV1/task.loc.json
new file mode 100644
index 000000000000..771ff52b6d89
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/task.loc.json
@@ -0,0 +1,381 @@
+{
+ "id": "501DD25D-1785-43E4-B4E5-A5C78CCC0573",
+ "name": "AzureFunctionDeployment",
+ "friendlyName": "ms-resource:loc.friendlyName",
+ "description": "ms-resource:loc.description",
+ "helpMarkDown": "ms-resource:loc.helpMarkDown",
+ "category": "Deploy",
+ "visibility": [
+ "Build",
+ "Release"
+ ],
+ "preview": "true",
+ "runsOn": [
+ "Agent",
+ "DeploymentGroup"
+ ],
+ "author": "Microsoft Corporation",
+ "version": {
+ "Major": 1,
+ "Minor": 0,
+ "Patch": 0
+ },
+ "releaseNotes": "ms-resource:loc.releaseNotes",
+ "minimumAgentVersion": "2.104.1",
+ "groups": [
+ {
+ "name": "AdditionalDeploymentOptions",
+ "displayName": "ms-resource:loc.group.displayName.AdditionalDeploymentOptions",
+ "isExpanded": false,
+ "visibleRule": "appType != functionAppLinux && appType != \"\" && package NotEndsWith .war && Package NotEndsWith .jar"
+ },
+ {
+ "name": "ApplicationAndConfigurationSettings",
+ "displayName": "ms-resource:loc.group.displayName.ApplicationAndConfigurationSettings",
+ "isExpanded": false
+ }
+ ],
+ "inputs": [
+ {
+ "name": "ConnectedServiceName",
+ "aliases": [
+ "azureSubscription"
+ ],
+ "type": "connectedService:AzureRM",
+ "label": "ms-resource:loc.input.label.ConnectedServiceName",
+ "defaultValue": "",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.ConnectedServiceName"
+ },
+ {
+ "name": "appType",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.appType",
+ "defaultValue": "",
+ "required": true,
+ "options": {
+ "functionApp": "Function App on Windows",
+ "functionAppLinux": "Function App on Linux"
+ }
+ },
+ {
+ "name": "appName",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.appName",
+ "defaultValue": "",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.appName"
+ },
+ {
+ "name": "deployToSlotOrASE",
+ "type": "boolean",
+ "label": "ms-resource:loc.input.label.deployToSlotOrASE",
+ "defaultValue": "false",
+ "required": false,
+ "helpMarkDown": "ms-resource:loc.input.help.deployToSlotOrASE",
+ "visibleRule": "appType != \"\""
+ },
+ {
+ "name": "resourceGroupName",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.resourceGroupName",
+ "defaultValue": "",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.resourceGroupName",
+ "visibleRule": "deployToSlotOrASE = true"
+ },
+ {
+ "name": "slotName",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.slotName",
+ "defaultValue": "production",
+ "required": true,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.slotName",
+ "visibleRule": "deployToSlotOrASE = true"
+ },
+ {
+ "name": "package",
+ "type": "filePath",
+ "label": "ms-resource:loc.input.label.package",
+ "defaultValue": "$(System.DefaultWorkingDirectory)/**/*.zip",
+ "required": true,
+ "helpMarkDown": "ms-resource:loc.input.help.package"
+ },
+ {
+ "name": "runtimeStack",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.runtimeStack",
+ "defaultValue": "",
+ "required": false,
+ "properties": {
+ "EditableOptions": "True"
+ },
+ "options": {
+ "DOCKER|microsoft/azure-functions-dotnet-core2.0:2.0": ".NET",
+ "DOCKER|microsoft/azure-functions-node8:2.0": "JavaScript"
+ },
+ "visibleRule": "appType = functionAppLinux"
+ },
+ {
+ "name": "startUpCommand",
+ "type": "string",
+ "label": "ms-resource:loc.input.label.startUpCommand",
+ "defaultValue": "",
+ "required": false,
+ "visibleRule": "appType = functionAppLinux"
+ },
+ {
+ "name": "webConfigParameters",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.webConfigParameters",
+ "required": false,
+ "defaultValue": "",
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "ms-resource:loc.input.help.webConfigParameters",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.webconfig-parameters-grid"
+ },
+ "visibleRule": "appType != functionAppLinux && package NotEndsWith .war"
+ },
+ {
+ "name": "appSettings",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.appSettings",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "ms-resource:loc.input.help.appSettings",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.parameters-grid"
+ }
+ },
+ {
+ "name": "configurationStrings",
+ "type": "multiLine",
+ "label": "ms-resource:loc.input.label.configurationStrings",
+ "defaultValue": "",
+ "required": false,
+ "groupName": "ApplicationAndConfigurationSettings",
+ "helpMarkDown": "ms-resource:loc.input.help.configurationStrings",
+ "properties": {
+ "editorExtension": "ms.vss-services-azure.parameters-grid"
+ }
+ },
+ {
+ "name": "deploymentMethod",
+ "type": "pickList",
+ "label": "ms-resource:loc.input.label.deploymentMethod",
+ "defaultValue": "auto",
+ "required": true,
+ "groupName": "AdditionalDeploymentOptions",
+ "options": {
+ "auto": "Auto-detect",
+ "zipDeploy": "Zip Deploy",
+ "runFromPackage": "Run From Package"
+ },
+ "helpMarkDown": "ms-resource:loc.input.help.deploymentMethod"
+ }
+ ],
+ "outputVariables": [
+ {
+ "name": "AppServiceApplicationUrl",
+ "description": "Application URL of the selected App Service."
+ }
+ ],
+ "dataSourceBindings": [
+ {
+ "target": "appName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppNamesByAppType",
+ "parameters": {
+ "WebAppKind": "$(appType)"
+ }
+ },
+ {
+ "target": "resourceGroupName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppResourceGroup",
+ "parameters": {
+ "WebAppName": "$(appName)"
+ }
+ },
+ {
+ "target": "slotName",
+ "endpointId": "$(ConnectedServiceName)",
+ "dataSourceName": "AzureRMWebAppSlotsId",
+ "parameters": {
+ "WebAppName": "$(appName)",
+ "ResourceGroupName": "$(resourceGroupName)"
+ },
+ "resultTemplate": "{\"Value\":\"{{{ #extractResource slots}}}\",\"DisplayValue\":\"{{{ #extractResource slots}}}\"}"
+ }
+ ],
+ "instanceNameFormat": "ms-resource:loc.instanceNameFormat",
+ "execution": {
+ "Node": {
+ "target": "azurermwebappdeployment.js"
+ }
+ },
+ "messages": {
+ "Invalidwebapppackageorfolderpathprovided": "ms-resource:loc.messages.Invalidwebapppackageorfolderpathprovided",
+ "SetParamFilenotfound0": "ms-resource:loc.messages.SetParamFilenotfound0",
+ "XDTTransformationsappliedsuccessfully": "ms-resource:loc.messages.XDTTransformationsappliedsuccessfully",
+ "GotconnectiondetailsforazureRMWebApp0": "ms-resource:loc.messages.GotconnectiondetailsforazureRMWebApp0",
+ "ErrorNoSuchDeployingMethodExists": "ms-resource:loc.messages.ErrorNoSuchDeployingMethodExists",
+ "UnabletoretrieveconnectiondetailsforazureRMWebApp": "ms-resource:loc.messages.UnabletoretrieveconnectiondetailsforazureRMWebApp",
+ "UnabletoretrieveResourceID": "ms-resource:loc.messages.UnabletoretrieveResourceID",
+ "Successfullyupdateddeploymenthistory": "ms-resource:loc.messages.Successfullyupdateddeploymenthistory",
+ "Failedtoupdatedeploymenthistory": "ms-resource:loc.messages.Failedtoupdatedeploymenthistory",
+ "WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite": "ms-resource:loc.messages.WARNINGCannotupdatedeploymentstatusSCMendpointisnotenabledforthiswebsite",
+ "Unabletoretrievewebconfigdetails": "ms-resource:loc.messages.Unabletoretrievewebconfigdetails",
+ "Unabletoretrievewebappsettings": "ms-resource:loc.messages.Unabletoretrievewebappsettings",
+ "Unabletoupdatewebappsettings": "ms-resource:loc.messages.Unabletoupdatewebappsettings",
+ "CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved": "ms-resource:loc.messages.CannotupdatedeploymentstatusuniquedeploymentIdCannotBeRetrieved",
+ "PackageDeploymentSuccess": "ms-resource:loc.messages.PackageDeploymentSuccess",
+ "PackageDeploymentFailed": "ms-resource:loc.messages.PackageDeploymentFailed",
+ "Runningcommand": "ms-resource:loc.messages.Runningcommand",
+ "Deployingwebapplicationatvirtualpathandphysicalpath": "ms-resource:loc.messages.Deployingwebapplicationatvirtualpathandphysicalpath",
+ "Successfullydeployedpackageusingkuduserviceat": "ms-resource:loc.messages.Successfullydeployedpackageusingkuduserviceat",
+ "Failedtodeploywebapppackageusingkuduservice": "ms-resource:loc.messages.Failedtodeploywebapppackageusingkuduservice",
+ "Unabletodeploywebappresponsecode": "ms-resource:loc.messages.Unabletodeploywebappresponsecode",
+ "MSDeploygeneratedpackageareonlysupportedforWindowsplatform": "ms-resource:loc.messages.MSDeploygeneratedpackageareonlysupportedforWindowsplatform",
+ "UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove": "ms-resource:loc.messages.UnsupportedinstalledversionfoundforMSDeployversionshouldbeatleast3orabove",
+ "UnabletofindthelocationofMSDeployfromregistryonmachineError": "ms-resource:loc.messages.UnabletofindthelocationofMSDeployfromregistryonmachineError",
+ "Nopackagefoundwithspecifiedpattern": "ms-resource:loc.messages.Nopackagefoundwithspecifiedpattern",
+ "MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern": "ms-resource:loc.messages.MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern",
+ "Trytodeploywebappagainwithappofflineoptionselected": "ms-resource:loc.messages.Trytodeploywebappagainwithappofflineoptionselected",
+ "Trytodeploywebappagainwithrenamefileoptionselected": "ms-resource:loc.messages.Trytodeploywebappagainwithrenamefileoptionselected",
+ "NOJSONfilematchedwithspecificpattern": "ms-resource:loc.messages.NOJSONfilematchedwithspecificpattern",
+ "Configfiledoesntexists": "ms-resource:loc.messages.Configfiledoesntexists",
+ "Failedtowritetoconfigfilewitherror": "ms-resource:loc.messages.Failedtowritetoconfigfilewitherror",
+ "AppOfflineModeenabled": "ms-resource:loc.messages.AppOfflineModeenabled",
+ "Failedtoenableappofflinemode": "ms-resource:loc.messages.Failedtoenableappofflinemode",
+ "AppOflineModedisabled": "ms-resource:loc.messages.AppOflineModedisabled",
+ "FailedtodisableAppOfflineMode": "ms-resource:loc.messages.FailedtodisableAppOfflineMode",
+ "CannotPerformXdtTransformationOnNonWindowsPlatform": "ms-resource:loc.messages.CannotPerformXdtTransformationOnNonWindowsPlatform",
+ "XdtTransformationErrorWhileTransforming": "ms-resource:loc.messages.XdtTransformationErrorWhileTransforming",
+ "PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent": "ms-resource:loc.messages.PublishusingwebdeployoptionsaresupportedonlywhenusingWindowsagent",
+ "Publishusingzipdeploynotsupportedformsbuildpackage": "ms-resource:loc.messages.Publishusingzipdeploynotsupportedformsbuildpackage",
+ "Publishusingzipdeploynotsupportedforvirtualapplication": "ms-resource:loc.messages.Publishusingzipdeploynotsupportedforvirtualapplication",
+ "Publishusingzipdeploydoesnotsupportwarfile": "ms-resource:loc.messages.Publishusingzipdeploydoesnotsupportwarfile",
+ "Publishusingrunfromzipwithpostdeploymentscript": "ms-resource:loc.messages.Publishusingrunfromzipwithpostdeploymentscript",
+ "ResourceDoesntExist": "ms-resource:loc.messages.ResourceDoesntExist",
+ "EncodeNotSupported": "ms-resource:loc.messages.EncodeNotSupported",
+ "UnknownFileEncodeError": "ms-resource:loc.messages.UnknownFileEncodeError",
+ "ShortFileBufferError": "ms-resource:loc.messages.ShortFileBufferError",
+ "FailedToUpdateAzureRMWebAppConfigDetails": "ms-resource:loc.messages.FailedToUpdateAzureRMWebAppConfigDetails",
+ "SuccessfullyUpdatedAzureRMWebAppConfigDetails": "ms-resource:loc.messages.SuccessfullyUpdatedAzureRMWebAppConfigDetails",
+ "RequestedURLforkuduphysicalpath": "ms-resource:loc.messages.RequestedURLforkuduphysicalpath",
+ "Physicalpathalreadyexists": "ms-resource:loc.messages.Physicalpathalreadyexists",
+ "KuduPhysicalpathCreatedSuccessfully": "ms-resource:loc.messages.KuduPhysicalpathCreatedSuccessfully",
+ "FailedtocreateKuduPhysicalPath": "ms-resource:loc.messages.FailedtocreateKuduPhysicalPath",
+ "FailedtocheckphysicalPath": "ms-resource:loc.messages.FailedtocheckphysicalPath",
+ "VirtualApplicationDoesNotExist": "ms-resource:loc.messages.VirtualApplicationDoesNotExist",
+ "JSONParseError": "ms-resource:loc.messages.JSONParseError",
+ "JSONvariablesubstitutionappliedsuccessfully": "ms-resource:loc.messages.JSONvariablesubstitutionappliedsuccessfully",
+ "XMLvariablesubstitutionappliedsuccessfully": "ms-resource:loc.messages.XMLvariablesubstitutionappliedsuccessfully",
+ "failedtoUploadFileToKudu": "ms-resource:loc.messages.failedtoUploadFileToKudu",
+ "failedtoUploadFileToKuduError": "ms-resource:loc.messages.failedtoUploadFileToKuduError",
+ "ExecuteScriptOnKudu": "ms-resource:loc.messages.ExecuteScriptOnKudu",
+ "FailedToRunScriptOnKuduError": "ms-resource:loc.messages.FailedToRunScriptOnKuduError",
+ "FailedToRunScriptOnKudu": "ms-resource:loc.messages.FailedToRunScriptOnKudu",
+ "ScriptExecutionOnKuduSuccess": "ms-resource:loc.messages.ScriptExecutionOnKuduSuccess",
+ "ScriptExecutionOnKuduFailed": "ms-resource:loc.messages.ScriptExecutionOnKuduFailed",
+ "FailedtoDeleteFileFromKudu": "ms-resource:loc.messages.FailedtoDeleteFileFromKudu",
+ "FailedtoDeleteFileFromKuduError": "ms-resource:loc.messages.FailedtoDeleteFileFromKuduError",
+ "ScriptFileNotFound": "ms-resource:loc.messages.ScriptFileNotFound",
+ "InvalidScriptFile": "ms-resource:loc.messages.InvalidScriptFile",
+ "RetryForTimeoutIssue": "ms-resource:loc.messages.RetryForTimeoutIssue",
+ "stdoutFromScript": "ms-resource:loc.messages.stdoutFromScript",
+ "stderrFromScript": "ms-resource:loc.messages.stderrFromScript",
+ "WebConfigAlreadyExists": "ms-resource:loc.messages.WebConfigAlreadyExists",
+ "SuccessfullyGeneratedWebConfig": "ms-resource:loc.messages.SuccessfullyGeneratedWebConfig",
+ "FailedToGenerateWebConfig": "ms-resource:loc.messages.FailedToGenerateWebConfig",
+ "FailedToGetKuduFileContent": "ms-resource:loc.messages.FailedToGetKuduFileContent",
+ "FailedToGetKuduFileContentError": "ms-resource:loc.messages.FailedToGetKuduFileContentError",
+ "ScriptStatusTimeout": "ms-resource:loc.messages.ScriptStatusTimeout",
+ "PollingForFileTimeOut": "ms-resource:loc.messages.PollingForFileTimeOut",
+ "InvalidPollOption": "ms-resource:loc.messages.InvalidPollOption",
+ "MissingAppTypeWebConfigParameters": "ms-resource:loc.messages.MissingAppTypeWebConfigParameters",
+ "AutoDetectDjangoSettingsFailed": "ms-resource:loc.messages.AutoDetectDjangoSettingsFailed",
+ "FailedToApplyTransformation": "ms-resource:loc.messages.FailedToApplyTransformation",
+ "FailedToApplyTransformationReason1": "ms-resource:loc.messages.FailedToApplyTransformationReason1",
+ "FailedToApplyTransformationReason2": "ms-resource:loc.messages.FailedToApplyTransformationReason2",
+ "AutoParameterizationMessage": "ms-resource:loc.messages.AutoParameterizationMessage",
+ "UnsupportedAppType": "ms-resource:loc.messages.UnsupportedAppType",
+ "UnableToFetchAuthorityURL": "ms-resource:loc.messages.UnableToFetchAuthorityURL",
+ "UnableToFetchActiveDirectory": "ms-resource:loc.messages.UnableToFetchActiveDirectory",
+ "SuccessfullyUpdatedRuntimeStackAndStartupCommand": "ms-resource:loc.messages.SuccessfullyUpdatedRuntimeStackAndStartupCommand",
+ "FailedToUpdateRuntimeStackAndStartupCommand": "ms-resource:loc.messages.FailedToUpdateRuntimeStackAndStartupCommand",
+ "SuccessfullyUpdatedWebAppSettings": "ms-resource:loc.messages.SuccessfullyUpdatedWebAppSettings",
+ "FailedToUpdateAppSettingsInConfigDetails": "ms-resource:loc.messages.FailedToUpdateAppSettingsInConfigDetails",
+ "UnableToGetAzureRMWebAppMetadata": "ms-resource:loc.messages.UnableToGetAzureRMWebAppMetadata",
+ "UnableToUpdateAzureRMWebAppMetadata": "ms-resource:loc.messages.UnableToUpdateAzureRMWebAppMetadata",
+ "Unabletoretrieveazureregistrycredentials": "ms-resource:loc.messages.Unabletoretrieveazureregistrycredentials",
+ "UnableToReadResponseBody": "ms-resource:loc.messages.UnableToReadResponseBody",
+ "UnableToUpdateWebAppConfigDetails": "ms-resource:loc.messages.UnableToUpdateWebAppConfigDetails",
+ "AddingReleaseAnnotation": "ms-resource:loc.messages.AddingReleaseAnnotation",
+ "SuccessfullyAddedReleaseAnnotation": "ms-resource:loc.messages.SuccessfullyAddedReleaseAnnotation",
+ "FailedAddingReleaseAnnotation": "ms-resource:loc.messages.FailedAddingReleaseAnnotation",
+ "RenameLockedFilesEnabled": "ms-resource:loc.messages.RenameLockedFilesEnabled",
+ "FailedToEnableRenameLockedFiles": "ms-resource:loc.messages.FailedToEnableRenameLockedFiles",
+ "WebJobsInProgressIssue": "ms-resource:loc.messages.WebJobsInProgressIssue",
+ "FailedToFetchKuduAppSettings": "ms-resource:loc.messages.FailedToFetchKuduAppSettings",
+ "FailedToCreatePath": "ms-resource:loc.messages.FailedToCreatePath",
+ "FailedToDeleteFile": "ms-resource:loc.messages.FailedToDeleteFile",
+ "FailedToDeleteFolder": "ms-resource:loc.messages.FailedToDeleteFolder",
+ "FailedToUploadFile": "ms-resource:loc.messages.FailedToUploadFile",
+ "FailedToGetFileContent": "ms-resource:loc.messages.FailedToGetFileContent",
+ "FailedToListPath": "ms-resource:loc.messages.FailedToListPath",
+ "RetryToDeploy": "ms-resource:loc.messages.RetryToDeploy",
+ "FailedToGetAppServiceDetails": "ms-resource:loc.messages.FailedToGetAppServiceDetails",
+ "FailedToGetAppServicePublishingProfile": "ms-resource:loc.messages.FailedToGetAppServicePublishingProfile",
+ "FailedToUpdateAppServiceMetadata": "ms-resource:loc.messages.FailedToUpdateAppServiceMetadata",
+ "FailedToGetAppServiceMetadata": "ms-resource:loc.messages.FailedToGetAppServiceMetadata",
+ "FailedToPatchAppServiceConfiguration": "ms-resource:loc.messages.FailedToPatchAppServiceConfiguration",
+ "FailedToUpdateAppServiceConfiguration": "ms-resource:loc.messages.FailedToUpdateAppServiceConfiguration",
+ "FailedToGetAppServiceConfiguration": "ms-resource:loc.messages.FailedToGetAppServiceConfiguration",
+ "FailedToGetAppServicePublishingCredentials": "ms-resource:loc.messages.FailedToGetAppServicePublishingCredentials",
+ "FailedToGetAppServiceApplicationSettings": "ms-resource:loc.messages.FailedToGetAppServiceApplicationSettings",
+ "FailedToUpdateAppServiceApplicationSettings": "ms-resource:loc.messages.FailedToUpdateAppServiceApplicationSettings",
+ "UpdatingAppServiceConfigurationSettings": "ms-resource:loc.messages.UpdatingAppServiceConfigurationSettings",
+ "UpdatedAppServiceConfigurationSettings": "ms-resource:loc.messages.UpdatedAppServiceConfigurationSettings",
+ "UpdatingAppServiceApplicationSettings": "ms-resource:loc.messages.UpdatingAppServiceApplicationSettings",
+ "UpdatedAppServiceApplicationSettings": "ms-resource:loc.messages.UpdatedAppServiceApplicationSettings",
+ "MultipleResourceGroupFoundForAppService": "ms-resource:loc.messages.MultipleResourceGroupFoundForAppService",
+ "PackageDeploymentUsingZipDeployFailed": "ms-resource:loc.messages.PackageDeploymentUsingZipDeployFailed",
+ "PackageDeploymentInitiated": "ms-resource:loc.messages.PackageDeploymentInitiated",
+ "WarPackageDeploymentInitiated": "ms-resource:loc.messages.WarPackageDeploymentInitiated",
+ "FailedToGetDeploymentLogs": "ms-resource:loc.messages.FailedToGetDeploymentLogs",
+ "GoExeNameNotPresent": "ms-resource:loc.messages.GoExeNameNotPresent",
+ "WarDeploymentRetry": "ms-resource:loc.messages.WarDeploymentRetry",
+ "Updatemachinetoenablesecuretlsprotocol": "ms-resource:loc.messages.Updatemachinetoenablesecuretlsprotocol",
+ "CouldNotFetchAccessTokenforAzureStatusCode": "ms-resource:loc.messages.CouldNotFetchAccessTokenforAzureStatusCode",
+ "CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode": "ms-resource:loc.messages.CouldNotFetchAccessTokenforMSIDueToMSINotConfiguredProperlyStatusCode",
+ "CouldNotFetchAccessTokenforMSIStatusCode": "ms-resource:loc.messages.CouldNotFetchAccessTokenforMSIStatusCode",
+ "XmlParsingFailed": "ms-resource:loc.messages.XmlParsingFailed",
+ "PropertyDoesntExistPublishProfile": "ms-resource:loc.messages.PropertyDoesntExistPublishProfile",
+ "InvalidConnectionType": "ms-resource:loc.messages.InvalidConnectionType",
+ "InvalidImageSourceType": "ms-resource:loc.messages.InvalidImageSourceType",
+ "InvalidPublishProfile": "ms-resource:loc.messages.InvalidPublishProfile",
+ "ASE_SSLIssueRecommendation": "ms-resource:loc.messages.ASE_SSLIssueRecommendation",
+ "ZipDeployLogsURL": "ms-resource:loc.messages.ZipDeployLogsURL",
+ "DeployLogsURL": "ms-resource:loc.messages.DeployLogsURL",
+ "AppServiceApplicationURL": "ms-resource:loc.messages.AppServiceApplicationURL",
+ "ASE_WebDeploySSLIssueRecommendation": "ms-resource:loc.messages.ASE_WebDeploySSLIssueRecommendation",
+ "FailedToGetResourceID": "ms-resource:loc.messages.FailedToGetResourceID",
+ "JarPathNotPresent": "ms-resource:loc.messages.JarPathNotPresent",
+ "FailedToUpdateApplicationInsightsResource": "ms-resource:loc.messages.FailedToUpdateApplicationInsightsResource",
+ "InvalidDockerImageName": "ms-resource:loc.messages.InvalidDockerImageName",
+ "MsBuildPackageNotSupported": "ms-resource:loc.messages.MsBuildPackageNotSupported"
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/taskparameters.ts b/Tasks/AzureFunctionDeploymentV1/taskparameters.ts
new file mode 100644
index 000000000000..fecb49696ba8
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/taskparameters.ts
@@ -0,0 +1,126 @@
+import { AzureEndpoint } from 'azurermdeploycommon/azure-arm-rest/azureModels';
+import tl = require('vsts-task-lib/task');
+import { Package, PackageType } from 'azurermdeploycommon/webdeployment-common/packageUtility';
+var webCommonUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
+import { AzureRMEndpoint } from 'azurermdeploycommon/azure-arm-rest/azure-arm-endpoint';
+import { AzureResourceFilterUtility } from 'azurermdeploycommon/operations/AzureResourceFilterUtility';
+import { AzureAppService } from 'azurermdeploycommon/azure-arm-rest/azure-arm-app-service';
+
+const webAppKindMap = new Map([
+ [ 'functionapp', 'functionApp' ],
+ [ 'functionapp,linux,container', 'functionAppLinux' ],
+]);
+
+export class TaskParametersUtility {
+
+ public static async getParameters(): Promise {
+ var taskParameters: TaskParameters = {
+ connectedServiceName: tl.getInput('ConnectedServiceName', true),
+ WebAppKind: tl.getInput('appType', false),
+ DeployToSlotOrASEFlag: tl.getBoolInput('deployToSlotOrASE', false),
+ WebConfigParameters: tl.getInput('webConfigParameters', false),
+ AppSettings: tl.getInput('appSettings', false),
+ StartupCommand: tl.getInput('startUpCommand', false),
+ ConfigurationSettings: tl.getInput('configurationStrings', false),
+ ResourceGroupName: tl.getInput('resourceGroupName', false),
+ SlotName: tl.getInput('slotName', false),
+ WebAppName: tl.getInput('appName', true)
+ }
+
+ taskParameters.azureEndpoint = await new AzureRMEndpoint(taskParameters.connectedServiceName).getEndpoint();
+ console.log(tl.loc('GotconnectiondetailsforazureRMWebApp0', taskParameters.WebAppName));
+
+ var appDetails = await this.getWebAppKind(taskParameters);
+ taskParameters.ResourceGroupName = appDetails["resourceGroupName"];
+ taskParameters.WebAppKind = appDetails["webAppKind"];
+
+ taskParameters.isLinuxApp = taskParameters.WebAppKind && taskParameters.WebAppKind.indexOf("Linux") !=-1;
+
+ var endpointTelemetry = '{"endpointId":"' + taskParameters.connectedServiceName + '"}';
+ console.log("##vso[telemetry.publish area=TaskEndpointId;feature=AzureRmWebAppDeployment]" + endpointTelemetry);
+
+ taskParameters.Package = new Package(tl.getPathInput('package', true));
+ taskParameters.WebConfigParameters = this.updateWebConfigParameters(taskParameters);
+
+ if(taskParameters.isLinuxApp) {
+ taskParameters.RuntimeStack = tl.getInput('runtimeStack', false);
+ }
+
+ taskParameters.DeploymentType = DeploymentType[(tl.getInput('deploymentMethod', false))];
+
+ return taskParameters;
+ }
+
+ private static async getWebAppKind(taskParameters: TaskParameters): Promise {
+ var resourceGroupName = taskParameters.ResourceGroupName;
+ var kind = taskParameters.WebAppKind;
+ if (!resourceGroupName) {
+ var appDetails = await AzureResourceFilterUtility.getAppDetails(taskParameters.azureEndpoint, taskParameters.WebAppName);
+ resourceGroupName = appDetails["resourceGroupName"];
+ if(!kind) {
+ kind = webAppKindMap.get(appDetails["kind"]) ? webAppKindMap.get(appDetails["kind"]) : appDetails["kind"];
+ }
+ tl.debug(`Resource Group: ${resourceGroupName}`);
+ }
+ else if(!kind){
+ var appService = new AzureAppService(taskParameters.azureEndpoint, taskParameters.ResourceGroupName, taskParameters.WebAppName);
+ var configSettings = await appService.get(true);
+ kind = webAppKindMap.get(configSettings.kind) ? webAppKindMap.get(configSettings.kind) : configSettings.kind;
+ }
+ return {
+ resourceGroupName: resourceGroupName,
+ webAppKind: kind
+ };
+ }
+
+ private static updateWebConfigParameters(taskParameters: TaskParameters): string {
+ tl.debug("intially web config parameters :" + taskParameters.WebConfigParameters);
+ var webConfigParameters = taskParameters.WebConfigParameters;
+ if(taskParameters.Package.getPackageType() === PackageType.jar && (!taskParameters.isLinuxApp)) {
+ if(!webConfigParameters) {
+ webConfigParameters = "-appType java_springboot";
+ }
+ if(webConfigParameters.indexOf("-appType java_springboot") < 0) {
+ webConfigParameters += " -appType java_springboot";
+ }
+ if(webConfigParameters.indexOf("-JAR_PATH D:\\home\\site\\wwwroot\\*.jar") >= 0) {
+ var jarPath = webCommonUtility.getFileNameFromPath(taskParameters.Package.getPath());
+ webConfigParameters = webConfigParameters.replace("D:\\home\\site\\wwwroot\\*.jar", jarPath);
+ } else if(webConfigParameters.indexOf("-JAR_PATH ") < 0) {
+ var jarPath = webCommonUtility.getFileNameFromPath(taskParameters.Package.getPath());
+ webConfigParameters += " -JAR_PATH " + jarPath;
+ }
+ if(webConfigParameters.indexOf("-Dserver.port=%HTTP_PLATFORM_PORT%") > 0) {
+ webConfigParameters = webConfigParameters.replace("-Dserver.port=%HTTP_PLATFORM_PORT%", "");
+ }
+ tl.debug("web config parameters :" + webConfigParameters);
+ }
+ return webConfigParameters;
+ }
+}
+
+export enum DeploymentType {
+ auto,
+ zipDeploy,
+ runFromPackage,
+ warDeploy
+}
+
+export interface TaskParameters {
+ connectedServiceName: string;
+ WebAppName: string;
+ WebAppKind?: string;
+ DeployToSlotOrASEFlag?: boolean;
+ ResourceGroupName?: string;
+ SlotName?: string;
+ Package?: Package;
+ WebConfigParameters?: string;
+ DeploymentType?: DeploymentType;
+ AppSettings?: string;
+ StartupCommand?: string;
+ RuntimeStack?: string;
+ ConfigurationSettings?: string;
+ /** Additional parameters */
+ azureEndpoint?: AzureEndpoint;
+ isLinuxApp?: boolean;
+}
\ No newline at end of file
diff --git a/Tasks/AzureFunctionDeploymentV1/tsconfig.json b/Tasks/AzureFunctionDeploymentV1/tsconfig.json
new file mode 100644
index 000000000000..0438b79f69ac
--- /dev/null
+++ b/Tasks/AzureFunctionDeploymentV1/tsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions": {
+ "target": "ES6",
+ "module": "commonjs"
+ }
+}
\ No newline at end of file
diff --git a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
index 457bfd4c5895..eff2d537188c 100644
--- a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
+++ b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/AzureRmWebAppDeploymentProvider.ts
@@ -8,7 +8,7 @@ import tl = require('vsts-task-lib/task');
import * as ParameterParser from 'azurermdeploycommon/operations/ParameterParserUtility'
import { addReleaseAnnotation } from 'azurermdeploycommon/operations/ReleaseAnnotationUtility';
-export class AzureRmWebAppDeploymentProvider implements IWebAppDeploymentProvider{
+export class AzureRmWebAppDeploymentProvider implements IWebAppDeploymentProvider {
protected taskParams:TaskParameters;
protected appService: AzureAppService;
protected kuduService: Kudu;
diff --git a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
index 29c6d43ad8c4..7875a77173f5 100644
--- a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
+++ b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/BuiltInLinuxWebAppDeploymentProvider.ts
@@ -7,7 +7,7 @@ var webCommonUtility = require('azurermdeploycommon/webdeployment-common/utility
var deployUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
var zipUtility = require('azurermdeploycommon/webdeployment-common/ziputility.js');
-export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymentProvider{
+export class BuiltInLinuxWebAppDeploymentProvider extends AzureRmWebAppDeploymentProvider {
private zipDeploymentID: string;
public async DeployWebAppStep() {
diff --git a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
index bfbb679bfd78..7d05214dc795 100644
--- a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
+++ b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppRunFromZipProvider.ts
@@ -11,7 +11,7 @@ var zipUtility = require('azurermdeploycommon/webdeployment-common/ziputility.js
const oldRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_ZIP';
const runFromZipAppSetting: string = '-WEBSITE_RUN_FROM_PACKAGE 1';
-export class WindowsWebAppRunFromZipProvider extends AzureRmWebAppDeploymentProvider{
+export class WindowsWebAppRunFromZipProvider extends AzureRmWebAppDeploymentProvider {
public async DeployWebAppStep() {
var webPackage = await FileTransformsUtility.applyTransformations(this.taskParams.Package.getPath(), this.taskParams.WebConfigParameters, this.taskParams.Package.getPackageType());
diff --git a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts
index eef0f292a15b..3719199e7cce 100644
--- a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts
+++ b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppWarDeployProvider.ts
@@ -3,7 +3,7 @@ import tl = require('vsts-task-lib/task');
var webCommonUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
-export class WindowsWebAppWarDeployProvider extends AzureRmWebAppDeploymentProvider{
+export class WindowsWebAppWarDeployProvider extends AzureRmWebAppDeploymentProvider {
private zipDeploymentID: string;
diff --git a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts
index d56897df5f8b..b7b3b177ba36 100644
--- a/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts
+++ b/Tasks/AzureWebAppDeploymentV1/deploymentProvider/WindowsWebAppZipDeployProvider.ts
@@ -9,7 +9,7 @@ const removeRunFromZipAppSetting: string = '-WEBSITE_RUN_FROM_PACKAGE 0';
var deployUtility = require('azurermdeploycommon/webdeployment-common/utility.js');
var zipUtility = require('azurermdeploycommon/webdeployment-common/ziputility.js');
-export class WindowsWebAppZipDeployProvider extends AzureRmWebAppDeploymentProvider{
+export class WindowsWebAppZipDeployProvider extends AzureRmWebAppDeploymentProvider {
private zipDeploymentID: string;
diff --git a/Tasks/AzureWebAppDeploymentV1/taskparameters.ts b/Tasks/AzureWebAppDeploymentV1/taskparameters.ts
index 0dfc11b8574d..3f43d39fe0ca 100644
--- a/Tasks/AzureWebAppDeploymentV1/taskparameters.ts
+++ b/Tasks/AzureWebAppDeploymentV1/taskparameters.ts
@@ -23,27 +23,16 @@ export class TaskParametersUtility {
StartupCommand: tl.getInput('startUpCommand', false),
ConfigurationSettings: tl.getInput('configurationStrings', false),
ResourceGroupName: tl.getInput('resourceGroupName', false),
- SlotName: tl.getInput('slotName', false)
+ SlotName: tl.getInput('slotName', false),
+ WebAppName: tl.getInput('appName', true)
}
- taskParameters.WebAppName = tl.getInput('appName', true);
-
taskParameters.azureEndpoint = await new AzureRMEndpoint(taskParameters.connectedServiceName).getEndpoint();
console.log(tl.loc('GotconnectiondetailsforazureRMWebApp0', taskParameters.WebAppName));
- if (!taskParameters.ResourceGroupName) {
- var appDetails = await AzureResourceFilterUtility.getAppDetails(taskParameters.azureEndpoint, taskParameters.WebAppName);
- taskParameters.ResourceGroupName = appDetails["resourceGroupName"];
- if(!taskParameters.WebAppKind) {
- taskParameters.WebAppKind = webAppKindMap.get(appDetails["kind"]) ? webAppKindMap.get(appDetails["kind"]) : appDetails["kind"];
- }
- tl.debug(`Resource Group: ${taskParameters.ResourceGroupName}`);
- }
- else if(!taskParameters.WebAppKind){
- var appService = new AzureAppService(taskParameters.azureEndpoint, taskParameters.ResourceGroupName, taskParameters.WebAppName);
- var configSettings = await appService.get(true);
- taskParameters.WebAppKind = webAppKindMap.get(configSettings.kind) ? webAppKindMap.get(configSettings.kind) : configSettings.kind;
- }
+ var appDetails = await this.getWebAppKind(taskParameters);
+ taskParameters.ResourceGroupName = appDetails["resourceGroupName"];
+ taskParameters.WebAppKind = appDetails["webAppKind"];
taskParameters.isLinuxApp = taskParameters.WebAppKind && taskParameters.WebAppKind.indexOf("Linux") !=-1;
@@ -51,34 +40,62 @@ export class TaskParametersUtility {
console.log("##vso[telemetry.publish area=TaskEndpointId;feature=AzureRmWebAppDeployment]" + endpointTelemetry);
taskParameters.Package = new Package(tl.getPathInput('package', true));
+ taskParameters.WebConfigParameters = this.updateWebConfigParameters(taskParameters);
+
+ if(taskParameters.isLinuxApp) {
+ taskParameters.RuntimeStack = tl.getInput('runtimeStack', false);
+ }
+
+ taskParameters.DeploymentType = DeploymentType[(tl.getInput('deploymentMethod', false))];
+
+ return taskParameters;
+ }
+
+ private static async getWebAppKind(taskParameters: TaskParameters): Promise {
+ var resourceGroupName = taskParameters.ResourceGroupName;
+ var kind = taskParameters.WebAppKind;
+ if (!resourceGroupName) {
+ var appDetails = await AzureResourceFilterUtility.getAppDetails(taskParameters.azureEndpoint, taskParameters.WebAppName);
+ resourceGroupName = appDetails["resourceGroupName"];
+ if(!kind) {
+ kind = webAppKindMap.get(appDetails["kind"]) ? webAppKindMap.get(appDetails["kind"]) : appDetails["kind"];
+ }
+ tl.debug(`Resource Group: ${resourceGroupName}`);
+ }
+ else if(!kind){
+ var appService = new AzureAppService(taskParameters.azureEndpoint, taskParameters.ResourceGroupName, taskParameters.WebAppName);
+ var configSettings = await appService.get(true);
+ kind = webAppKindMap.get(configSettings.kind) ? webAppKindMap.get(configSettings.kind) : configSettings.kind;
+ }
+ return {
+ resourceGroupName: resourceGroupName,
+ webAppKind: kind
+ };
+ }
+
+ private static updateWebConfigParameters(taskParameters: TaskParameters): string {
tl.debug("intially web config parameters :" + taskParameters.WebConfigParameters);
+ var webConfigParameters = taskParameters.WebConfigParameters;
if(taskParameters.Package.getPackageType() === PackageType.jar && (!taskParameters.isLinuxApp)) {
- if(!taskParameters.WebConfigParameters) {
- taskParameters.WebConfigParameters = "-appType java_springboot";
+ if(!webConfigParameters) {
+ webConfigParameters = "-appType java_springboot";
}
- if(taskParameters.WebConfigParameters.indexOf("-appType java_springboot") < 0) {
- taskParameters.WebConfigParameters += " -appType java_springboot";
+ if(webConfigParameters.indexOf("-appType java_springboot") < 0) {
+ webConfigParameters += " -appType java_springboot";
}
- if(taskParameters.WebConfigParameters.indexOf("-JAR_PATH D:\\home\\site\\wwwroot\\*.jar") >= 0) {
+ if(webConfigParameters.indexOf("-JAR_PATH D:\\home\\site\\wwwroot\\*.jar") >= 0) {
var jarPath = webCommonUtility.getFileNameFromPath(taskParameters.Package.getPath());
- taskParameters.WebConfigParameters = taskParameters.WebConfigParameters.replace("D:\\home\\site\\wwwroot\\*.jar", jarPath);
- } else if(taskParameters.WebConfigParameters.indexOf("-JAR_PATH ") < 0) {
+ webConfigParameters = webConfigParameters.replace("D:\\home\\site\\wwwroot\\*.jar", jarPath);
+ } else if(webConfigParameters.indexOf("-JAR_PATH ") < 0) {
var jarPath = webCommonUtility.getFileNameFromPath(taskParameters.Package.getPath());
- taskParameters.WebConfigParameters += " -JAR_PATH " + jarPath;
+ webConfigParameters += " -JAR_PATH " + jarPath;
}
- if(taskParameters.WebConfigParameters.indexOf("-Dserver.port=%HTTP_PLATFORM_PORT%") > 0) {
- taskParameters.WebConfigParameters = taskParameters.WebConfigParameters.replace("-Dserver.port=%HTTP_PLATFORM_PORT%", "");
+ if(webConfigParameters.indexOf("-Dserver.port=%HTTP_PLATFORM_PORT%") > 0) {
+ webConfigParameters = webConfigParameters.replace("-Dserver.port=%HTTP_PLATFORM_PORT%", "");
}
- tl.debug("web config parameters :" + taskParameters.WebConfigParameters);
+ tl.debug("web config parameters :" + webConfigParameters);
}
-
- if(taskParameters.isLinuxApp) {
- taskParameters.RuntimeStack = tl.getInput('runtimeStack', false);
- }
-
- taskParameters.DeploymentType = DeploymentType[(tl.getInput('deploymentMethod', false))];
-
- return taskParameters;
+ return webConfigParameters;
}
}
@@ -91,7 +108,7 @@ export enum DeploymentType {
export interface TaskParameters {
connectedServiceName: string;
- WebAppName?: string;
+ WebAppName: string;
WebAppKind?: string;
DeployToSlotOrASEFlag?: boolean;
ResourceGroupName?: string;