Skip to content

Commit 929fcef

Browse files
Merge pull request #251147 from ggailey777/sam
[Functions][FTPS] Sam+Finbar FTPS updates w/ more cleanup
2 parents cd244ee + d01348c commit 929fcef

File tree

5 files changed

+98
-47
lines changed

5 files changed

+98
-47
lines changed

articles/azure-functions/functions-deployment-technologies.md

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,42 @@ You can use a few different technologies to deploy your Azure Functions project
1212

1313
## Deployment methods
1414

15-
The deployment technology you use to publish code to Azure is generally determined by the way in which you publish your app. The appropriate deployment method is determined by specific needs and the point in the development cycle. For example, during development and testing you may deploy directly from your development tool, such as Visual Studio Code. When your app is in production, you are more likely to publish continuously from source control or by using an automated publishing pipeline, which includes additional validation and testing.
15+
The deployment technology you use to publish code to your function app in Azure depends on your specific needs and the point in the development cycle. For example, during development and testing you may deploy directly from your development tool, such as Visual Studio Code. When your app is in production, you're more likely to publish continuously from source control or by using an automated publishing pipeline, which can include validation and testing.
1616

17-
The following table describes the available deployment methods for your Function project.
17+
The following table describes the available deployment methods for your code project.
1818

1919
| Deployment type | Methods | Best for... |
20-
| -- | -- | -- |
21-
| Tools-based | &bull;&nbsp;[Visual&nbsp;Studio&nbsp;Code&nbsp;publish](functions-develop-vs-code.md#publish-to-azure)<br/>&bull;&nbsp;[Visual Studio publish](functions-develop-vs.md#publish-to-azure)<br/>&bull;&nbsp;[Core Tools publish](functions-run-local.md#publish) | Deployments during development and other ad hoc deployments. Deployments are managed locally by the tooling. |
20+
| --- | --- | --- |
21+
| Tools-based | &bull;&nbsp;[Visual&nbsp;Studio&nbsp;Code&nbsp;publish](functions-develop-vs-code.md#publish-to-azure)<br/>&bull;&nbsp;[Visual Studio publish](functions-develop-vs.md#publish-to-azure)<br/>&bull;&nbsp;[Core Tools publish](functions-run-local.md#publish) | Deployments during development and other improvised deployments. Deploying your code on-demand using [local development tools](functions-develop-local.md#local-development-environments). |
2222
| App Service-managed| &bull;&nbsp;[Deployment&nbsp;Center&nbsp;(CI/CD)](functions-continuous-deployment.md)<br/>&bull;&nbsp;[Container&nbsp;deployments](./functions-how-to-custom-container.md#enable-continuous-deployment-to-azure) | Continuous deployment (CI/CD) from source control or from a container registry. Deployments are managed by the App Service platform (Kudu).|
23-
| External pipelines|&bull;&nbsp;[Azure Pipelines](functions-how-to-azure-devops.md)<br/>&bull;&nbsp;[GitHub Actions](functions-how-to-github-actions.md) | Production and Azure pipelines that include additional validation, testing, and other actions be run as part of an automated deployment. Deployments are managed by the pipeline. |
23+
| External pipelines|&bull;&nbsp;[Azure Pipelines](functions-how-to-azure-devops.md)<br/>&bull;&nbsp;[GitHub Actions](functions-how-to-github-actions.md) | Production pipelines that include validation, testing, and other actions that must be run as part of an automated deployment. Deployments are managed by the pipeline. |
2424

25-
While specific Functions deployments use the best technology based on their context, most deployment methods are based on [zip deployment](#zip-deploy).
25+
Specific deployments should use the best technology based on the specific scenario. Many of the deployment methods are based on [zip deployment](#zip-deploy), which is recommended for deployment.
2626

2727
## Deployment technology availability
2828

29-
Azure Functions supports cross-platform local development and hosting on Windows and Linux. Currently, three hosting plans are available:
29+
The deployment method also depends on the hosting plan and operating system on which you run your function app.
30+
Currently, Functions offers three hosting plans:
3031

3132
+ [Consumption](consumption-plan.md)
3233
+ [Premium](functions-premium-plan.md)
3334
+ [Dedicated (App Service)](dedicated-plan.md)
3435

35-
Each plan has different behaviors. Not all deployment technologies are available for each flavor of Azure Functions. The following chart shows which deployment technologies are supported for each combination of operating system and hosting plan:
36+
Each plan has different behaviors. Not all deployment technologies are available for each hosting plan and operating system. This chart provides information on the supported deployment technologies:
3637

3738
| Deployment technology | Windows Consumption | Windows Premium | Windows Dedicated | Linux Consumption | Linux Premium | Linux Dedicated |
3839
|-----------------------|:-------------------:|:-------------------------:|:------------------:|:---------------------------:|:-------------:|:---------------:|
39-
| External package URL<sup>1</sup> |||||||
40-
| Zip deploy |||||||
41-
| Docker container | | | | |||
42-
| Web Deploy |||| | | |
43-
| Source control |||| |||
44-
| Local Git<sup>1</sup> |||| |||
45-
| Cloud sync<sup>1</sup> |||| |||
46-
| FTP<sup>1</sup> |||| |||
47-
| In-portal editing<sup>2</sup> |||||✔<sup>3</sup>|✔<sup>3</sup>|
48-
49-
<sup>1</sup> Deployment technology that requires [manual trigger syncing](#trigger-syncing).
40+
| [External package URL](#external-package-url)<sup>1</sup> |||||||
41+
| [Zip deploy](#zip-deploy) |||||||
42+
| [Docker container](#docker-container) | | | | |||
43+
| [Web Deploy](#web-deploy-msdeploy) |||| | | |
44+
| [Source control](#source-control) |||| |||
45+
| [Local Git](#local-git)<sup>1</sup> |||| |||
46+
| [Cloud sync](#cloud-sync)<sup>1</sup> |||| |||
47+
| [FTPS](#ftps)<sup>1</sup> |||| |||
48+
| [In-portal editing](#portal-editing)<sup>2</sup> |||||✔<sup>3</sup>|✔<sup>3</sup>|
49+
50+
<sup>1</sup> Deployment technologies that require you to [manually sync triggers](#trigger-syncing) aren't recommended.
5051
<sup>2</sup> In-portal editing is disabled when code is deployed to your function app from outside the portal. For more information, including language support details for in-portal editing, see [Language support details](supported-languages.md#language-support-details).
5152
<sup>3</sup> In-portal editing is enabled only for HTTP and Timer triggered functions running on Linux in Premium and Dedicated plans.
5253

@@ -60,23 +61,23 @@ When you change any of your triggers, the Functions infrastructure must be aware
6061

6162
+ Restart your function app in the Azure portal.
6263
+ Send an HTTP POST request to `https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>` using the [master key](functions-bindings-http-webhook-trigger.md#authorization-keys).
63-
+ Send an HTTP POST request to `https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01`. Replace the placeholders with your subscription ID, resource group name, and the name of your function app.
64+
+ Send an HTTP POST request to `https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01`. Replace the placeholders with your subscription ID, resource group name, and the name of your function app. This request requires an [access token](/rest/api/azure/#acquire-an-access-token) in the [`Authorization` request header](/rest/api/azure/#request-header).
6465

65-
When you deploy using an external package URL and the contents of the package change but the URL itself doesn't change, you need to manually restart your function app to fully sync your updates.
66+
When you deploy using an external package URL, you need to manually restart your function app to fully sync your updates when the package changes without changing the URL.
6667

6768
### Remote build
6869

6970
Azure Functions can automatically perform builds on the code it receives after zip deployments. These builds behave slightly differently depending on whether your app is running on Windows or Linux.
7071

71-
# [Windows](#tab/windows)
72+
#### [Windows](#tab/windows)
7273

7374
All function apps running on Windows have a small management app, the SCM site provided by [Kudu](https://github.com/projectkudu/kudu). This site handles much of the deployment and build logic for Azure Functions.
7475

7576
When an app is deployed to Windows, language-specific commands, like `dotnet restore` (C#) or `npm install` (JavaScript) are run.
7677

77-
# [Linux](#tab/linux)
78+
#### [Linux](#tab/linux)
7879

79-
To enable remote build on Linux, you must set the following in your application settings:
80+
To enable remote build on Linux, you must set these application settings:
8081

8182
+ [`ENABLE_ORYX_BUILD=true`](functions-app-settings.md#enable_oryx_build)
8283
+ [`SCM_DO_BUILD_DURING_DEPLOYMENT=true`](functions-app-settings.md#scm_do_build_during_deployment)
@@ -96,7 +97,7 @@ The following considerations apply when using remote builds during deployment:
9697

9798
### App content storage
9899

99-
Several deployment methods store the deployed or built application payload on the storage account associated with the function app. The Azure Files content share is generally used if configured, but some methods will instead store the payload in the blob store associated with the `AzureWebJobsStorage` connection. See the details in the "Where app content is stored" paragraphs of each deployment technology covered in the next section.
100+
Several deployment methods store the deployed or built application payload on the storage account associated with the function app. Functions tries to use the Azure Files content share when configured, but some methods instead store the payload in the blob storage instance associated with the `AzureWebJobsStorage` connection. See the details in the _Where app content is stored_ paragraphs of each deployment technology covered in the next section.
100101

101102
[!INCLUDE [functions-storage-access-note](../../includes/functions-storage-access-note.md)]
102103

@@ -172,7 +173,7 @@ You can use local Git to push code from your local machine to Azure Functions by
172173

173174
>__How to use it:__ Follow the instructions in [Local Git deployment to Azure App Service](../app-service/deploy-local-git.md).
174175
175-
>__When to use it:__ In general, we recommend that you use a different deployment method. When you publish from local Git, you must [manually sync triggers](#trigger-syncing).
176+
>__When to use it:__ To reduce the chance of errors, you should avoid using deployment methods that require the additional step of [manually syncing triggers](#trigger-syncing). Use [zip deployment](run-functions-from-deployment-package.md) when possible.
176177
177178
>__Where app content is stored:__ App content is stored on the file system, which may be backed by Azure Files from the storage account specified when the function app was created.
178179
@@ -182,25 +183,25 @@ Use cloud sync to sync your content from Dropbox and OneDrive to Azure Functions
182183

183184
>__How to use it:__ Follow the instructions in [Sync content from a cloud folder](../app-service/deploy-content-sync.md).
184185
185-
>__When to use it:__ In general, we recommend other deployment methods. When you publish by using cloud sync, you must [manually sync triggers](#trigger-syncing).
186+
>__When to use it:__ To reduce the chance of errors, you should avoid using deployment methods that require the additional step of [manually syncing triggers](#trigger-syncing). Use [zip deployment](run-functions-from-deployment-package.md) when possible.
186187
187188
>__Where app content is stored:__ The app content is in the cloud store, but a local copy is stored on the app file system, which may be backed by Azure Files from the storage account specified when the function app was created.
188189
189-
### FTP
190+
### FTP/S
190191

191-
You can use FTP to directly transfer files to Azure Functions.
192+
You can use FTP/S to directly transfer files to Azure Functions, although this deployment method isn't recommended. When you're not planning on using FTP, you should disable it. If you do choose to use FTP, you should enforce FTPS. To learn how in the Azure portal, see [Enforce FTPS](../app-service/deploy-ftp.md#enforce-ftps).
192193

193-
>__How to use it:__ Follow the instructions in [Deploy content by using FTP/s](../app-service/deploy-ftp.md).
194+
>__How to use it:__ Follow the instructions in [FTPS deployment settings](functions-how-to-use-azure-function-app-settings.md#ftps-deployment-settings) to get the URL and credentials you can use to deploy to your function app using FTPS.
194195
195-
>__When to use it:__ In general, we recommend other deployment methods. When you publish by using FTP, you must [manually sync triggers](#trigger-syncing).
196+
>__When to use it:__ To reduce the chance of errors, you should avoid using deployment methods that require the additional step of [manually syncing triggers](#trigger-syncing). Use [zip deployment](run-functions-from-deployment-package.md) when possible.
196197
197198
>__Where app content is stored:__ App content is stored on the file system, which may be backed by Azure Files from the storage account specified when the function app was created.
198199
199200
### Portal editing
200201

201202
In the portal-based editor, you can directly edit the files that are in your function app (essentially deploying every time you save your changes).
202203

203-
>__How to use it:__ To be able to edit your functions in the [Azure portal](https://portal.azure.com), you must have [created your functions in the portal](./functions-get-started.md). To preserve a single source of truth, using any other deployment method makes your function read-only and prevents continued portal editing. To return to a state in which you can edit your files in the Azure portal, you can manually turn the edit mode back to `Read/Write` and remove any deployment-related application settings (like [`WEBSITE_RUN_FROM_PACKAGE`](functions-app-settings.md#website_run_from_package).
204+
>__How to use it:__ To be able to edit your functions in the [Azure portal](https://portal.azure.com), you must have [created your functions in the portal](./functions-get-started.md). To preserve a single source of truth, using any other deployment method makes your function read-only and prevents continued portal editing. To return to a state in which you can edit your files in the Azure portal, you can manually turn the edit mode back to `Read/Write` and remove any deployment-related application settings (like [`WEBSITE_RUN_FROM_PACKAGE`](functions-app-settings.md#website_run_from_package)).
204205
205206
>__When to use it:__ The portal is a good way to get started with Azure Functions. For more advanced development work, we recommend that you use one of the following client tools:
206207
>
@@ -228,7 +229,7 @@ The following table shows the operating systems and languages that support in-po
228229

229230
## Deployment behaviors
230231

231-
When you deploy updates to your function app code, currently executing functions are terminated. After deployment completes, the new code is loaded to begin processing requests. Please review [Improve the performance and reliability of Azure Functions](performance-reliability.md#write-functions-to-be-stateless) to learn how to write stateless and defensive functions.
232+
When you deploy updates to your function app code, currently executing functions are terminated. After deployment completes, the new code is loaded to begin processing requests. Review [Improve the performance and reliability of Azure Functions](performance-reliability.md#write-functions-to-be-stateless) to learn how to write stateless and defensive functions.
232233

233234
If you need more control over this transition, you should use deployment slots.
234235

@@ -241,7 +242,7 @@ When you deploy your function app to Azure, you can deploy to a separate deploym
241242
Read these articles to learn more about deploying your function apps:
242243

243244
+ [Continuous deployment for Azure Functions](functions-continuous-deployment.md)
244-
+ [Continuous delivery by using Azure DevOps](functions-how-to-azure-devops.md)
245+
+ [Continuous delivery by using Azure Pipelines](functions-how-to-azure-devops.md)
245246
+ [Zip deployments for Azure Functions](deployment-zip-push.md)
246247
+ [Run your Azure Functions from a package file](run-functions-from-deployment-package.md)
247248
+ [Automate resource deployment for your function app in Azure Functions](functions-infrastructure-as-code.md)

articles/azure-functions/functions-how-to-github-actions.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,7 @@ Since GitHub Actions uses your publish profile to access your function app durin
4848
4949
### Download your publish profile
5050

51-
To download the publishing profile of your function app:
52-
53-
1. Select the function app's **Overview** page, and then select **Get publish profile**.
54-
55-
:::image type="content" source="media/functions-how-to-github-actions/get-publish-profile.png" alt-text="Download publish profile":::
56-
57-
1. Save and copy the contents of the file.
51+
[!INCLUDE [functions-download-publish-profile](../../includes/functions-download-publish-profile.md)]
5852

5953
### Add the GitHub secret
6054

0 commit comments

Comments
 (0)