AzureFunctionAppContainer@1 - 用于容器 v1 任务的 Azure Functions

使用 Docker 容器更新函数应用。

语法

# Azure Functions for container v1
# Update a function app with a Docker container.
- task: AzureFunctionAppContainer@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    imageName: # string. Required. Image name. 
    #containerCommand: # string. Startup command. 
  # Application and Configuration Settings
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings.

输入

azureSubscription - Azure 订阅
string。 必填。

为部署选择 Azure 资源管理器订阅


appName - 应用名称
string。 必填。

用于容器的函数应用的名称。


deployToSlotOrASE - 部署到槽或应用服务环境
boolean。 默认值:false

将此输入设置为 true 部署到现有部署槽位或 Azure 应用服务环境。 该任务需要两个目标的资源组名称。 对于部署槽选项,默认部署到 生产 槽,也可以指定任何其他现有槽名称。 如果部署目标为 Azure 应用服务环境,请将槽名称保留为 生产 并指定资源组名称。


resourceGroupName - 资源组
stringdeployToSlotOrASE = true时是必需的。

包含用于容器的函数应用的资源组的名称。


slotName -
stringdeployToSlotOrASE = true时是必需的。 默认值:production

输入或选择现有槽,不包括 生产 槽。


imageName - 映像名称
string。 必填。

特定注册表或命名空间的全局唯一顶级域名。

注意: 完全限定的图像名称的格式为:<registry or namespace> <repository> <tag>。 例如,myregistry.azurecr.io/nginx:latest


containerCommand - Startup 命令
string

部署后执行的启动命令。 例如,dotnet rundotnet filename.dll.


appSettings - 应用设置
string

使用语法 -key value 输入应用程序设置(例如:-Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE)。 将包含空格的值括在双引号中(例如:"Eastern Standard Time")。


configurationStrings - 配置设置
string

使用语法 -key value 输入配置字符串(例如:-phpVersion 5.6-linuxFxVersion: node|6.11)。 将包含空格的值括在双引号中。


任务控制选项

除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性

输出变量

此任务定义以下 输出变量,可以在下游步骤、作业和阶段中使用。

AppServiceApplicationUrl
所选应用服务的应用程序 URL。

注解

使用此任务在 Linux 上使用 自定义映像部署 Azure Function。

错误:无法获取 Azure 的访问令牌。 验证所使用的服务主体是否有效且未过期。

该任务使用服务连接中的服务主体向 Azure 进行身份验证。 如果服务主体已过期或无权访问应用服务,则任务将失败,并出现此错误。 验证所使用的服务主体的有效期以及该主体是否存在于应用注册中。 有关详细信息,请参阅 使用基于角色的访问控制来管理对 Azure 订阅资源的访问此博客文章 还包含有关使用服务主体身份验证的详细信息。

SSL 错误

如果要在应用服务中使用证书,证书必须由受信任的证书颁发机构签名。 如果 Web 应用提供了证书验证错误,则可能使用的是自签名证书。 将名为 VSTS_ARM_REST_IGNORE_SSL_ERRORS 的变量设置为生成或发布管道中的值 true 以解决错误。

发布会长时间挂起,然后失败

此问题可能是应用服务计划中容量不足的结果。 若要解决此问题,可以纵向扩展应用服务实例以增加可用的 CPU、RAM 和磁盘空间,或者尝试使用不同的应用服务计划。

5xx 错误代码

如果看到 5xx 错误,检查 Azure 服务的状态。

Azure 函数突然停止工作

如果自上次部署以来超过一年,Azure Functions 可能会突然停止工作。 如果在“deploymentMethod”中使用“RunFromPackage”进行部署,则会生成过期日期为 1 年的 SAS,并将其设置为应用程序配置中的“WEBSITE_RUN_FROM_PACKAGE”值。 Azure Functions 使用此 SAS 引用包文件来执行函数,因此,如果 SAS 已过期,则不会执行该函数。 若要解决此问题,请再次部署,以生成到期日期为一年的 SAS。

如何配置服务连接?

此任务需要 Azure 资源管理器服务连接

如何使用 Application Insights 配置 Web 作业部署?

部署到应用服务时,如果已配置 Application Insight s,并且已启用 Remove additional files at destination,则还需要启用 Exclude files from the App_Data folder。 启用此选项可使 Application Insights 扩展处于安全状态。 此步骤是必需的,因为 Application Insights 连续 WebJob 安装在 App_Data 文件夹中。

部署到应用服务时,如果代理位于代理后面,应如何配置代理?

如果自承载代理需要 Web 代理,可以在配置过程中通知代理有关代理的信息。 这样做允许代理通过代理连接到 Azure Pipelines 或 Azure DevOps Server。 详细了解如何在 Web 代理后面运行自承载代理。

例子

此示例使用容器在 Linux 上部署 Azure Functions:


variables:
  imageName: contoso.azurecr.io/azurefunctions-containers:$(build.buildId)
  azureSubscription: Contoso
  # To ignore SSL error uncomment the following variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:
- task: AzureFunctionAppContainer@1
  displayName: Azure Function App on Container deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: functionappcontainers
    imageName: $(imageName)

要求

要求 说明
管道类型 YAML,经典版本,经典版本
运行时间 代理,DeploymentGroup
需求 没有
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任何
Settable 变量 任何
代理版本 2.104.1 或更高版本
任务类别 部署