Azure Devops/Kudusync 将错误的包部署到 Azure Function

Azure Devops / Kudusync deploys wrong package to Azure Function

我们有两个 Azure 函数,我们称它们为 A 和 B,我们使用 Azure Devops 进行部署。查看部署日志,首先部署了正确的包,然后是将函数应用程序 A 的内容部署到函数应用程序 B 的部署。这是如何发生的是一个谜。

奇怪的是,查看日志和 Kudu 内部的内容,它们不匹配。例如,最新的部署日志会这样说:

[
  {
    "log_time": "2021-09-17T10:57:17.3180234Z",
    "id": "",
    "message": "Command: \"D:\home\site\deployments\tools\deploy.cmd\"",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:18.5999063Z",
    "id": "",
    "message": "Handling Basic Web Site deployment.",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:24.8723981Z",
    "id": "",
    "message": "Creating app_offline.htm",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:24.9036384Z",
    "id": "",
    "message": "KuduSync.NET from: 'D:\local\Temp\zipdeploy\extracted' to: 'D:\home\site\wwwroot'",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:25.0941627Z",
    "id": "",
    "message": "Deleting file: 'OurCompany.Api.B.dll'",
    "type": 0,
    "details_url": null
  },
    "log_time": "2021-09-17T10:57:25.1557977Z",
    "id": "",
    "message": "Copying file: 'extensions.json'",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:25.1718472Z",
    "id": "",
    "message": "Copying file: 'OurCompany.Api.A.dll'",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:27.4441118Z",
    "id": "",
    "message": "Deleting app_offline.htm",
    "type": 0,
    "details_url": null
  },
  {
    "log_time": "2021-09-17T10:57:27.5223301Z",
    "id": "",
    "message": "Finished successfully.",
    "type": 0,
    "details_url": null
  }
]

但是当我在 OurCompany.Api.B 功能应用程序的服务器上访问 Kudu 并查看 D:\local\Temp\zipdeploy\extracted 中的 实际内容 时,我没有看到 OurCompany.Api.A.dll - 只有 OurCompany.Api.B.dll。请注意,提取文件夹中文件的时间戳早于第二次部署,因此它们来自第一次部署且正确。

如果我查看 D:\home\site\wwwroot 中的内容,我确实看到了不正确的 OurCompany.Api.A.dll,但我不知道这是从哪里来的。

所以...部署日志怎么会提到复制了不正确的 dll 文件,而这些文件不在服务器上的文件夹中,而且因为时间戳不相加而从未存在过?我们已经在这个问题上工作了几天,但没有成功。

显然,这是因为两个函数都托管在同一个应用服务计划上,因此使用同一个 Azure 文件共享。请参阅此线程 https://github.com/projectkudu/kudu/issues/3333