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。
我们有两个 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。