You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure YAML Pipeline部署多函数至同一Function App且不覆盖

解决Azure Function App多独立函数部署覆盖问题

问题根源

你当前使用的AzureFunctionApp@1任务默认采用全量部署模式,加上Linux Function App默认启用的「Run From Package」机制,每次部署会将Function App的现有内容完全替换为当前流水线的artifact,导致B函数部署时覆盖A函数。

解决方案步骤

1. 关闭Run From Package模式(必须)

Linux Function App默认启用Run From Package,此模式下应用从单一只读zip包加载,无法增量更新。需先关闭:

  • 进入Azure Portal -> 目标Function App -> 「配置」-> 「应用设置」
  • 添加或修改WEBSITE_RUN_FROM_PACKAGE参数,设置值为0
  • 保存配置,重启Function App

2. 修改部署流水线的YAML配置

将原AzureFunctionApp@1任务的部署方式改为zipDeploy,并添加clean: false参数,确保部署时不清理现有文件:

#Deploy to DEV
- stage: DEV
  displayName: Deploy to DEV
  dependsOn: Build
  variables:
  - group: my-dev-variables 
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/dev'))
  jobs:
  - job: Deploy
    steps:
      #Download artifact to make it available to this stage
      - task: DownloadPipelineArtifact@2
        inputs:
          source: 'current'
          path: '$(Pipeline.Workspace)' 

      #Deploy - 增量部署,保留现有函数
      - task: AzureFunctionApp@1
        displayName: Deploy Linux function app (incremental)
        inputs:
          azureSubscription: $(azureRmConnection.Id)
          appType: 'functionAppLinux'
          appName: $(functionAppName)
          package: '$(Pipeline.Workspace)/**/*.zip'
          deploymentMethod: zipDeploy # 指定用zip部署方式
          clean: false # 关键:不清理现有部署内容

3. 确保每个函数的打包内容正确

每个代码库的构建流程仅需打包自身函数的文件(如FunctionA/文件夹、必要的共享配置如host.json),无需包含整个Function App的结构。若两个函数有共享配置(如host.json),需确保两个流水线的配置内容一致,避免冲突。

备选方案:使用Azure Functions Core Tools部署

若偏好命令行方式,可替换AzureFunctionApp@1任务为脚本任务,通过Core Tools实现增量部署:

- script: |
    func azure functionapp publish $(functionAppName) --no-build --no-clean --package $(Pipeline.Workspace)/**/*.zip
  displayName: Deploy Linux function app incrementally via Core Tools
  env:
    AZURE_SUBSCRIPTION_ID: $(azureRmConnection.Id)

内容的提问来源于stack exchange,提问作者FaCoffee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:40:18