我正在从软件包中部署azure函数应用程序(使用本指南-https://docs.microsoft.com/en-us/azure/azure-functions/run-functions-from-deployment-package)-可以正确部署。但是我似乎无法部署更新。即使在我上传了新软件包之后,azure函数应用程序也无法接收更改。我尝试停止/启动该应用程序均无济于事。
如何强制它接受更改?
答案 0 :(得分:2)
使用来自Azure DevOps的Azure Function App Deploy有一个非常奇怪的问题。
这非常有效,直到有一天我们对本地运行但不在我们的开发服务器上运行的Azure功能进行了一些代码更改。我们开始查看.zip
文件和发布管道,但这里的一切看起来都不错。我们还可以看到azure-pipelines.yml
或发布管道中没有任何变化:
Git命令:git log -p azure-pipelines.yml
对于发行版,我们使用Microsoft Corporation的Azure Functions
任务。
看看发布日志,一切看起来也不错:
然后我们登录Kudu(高级工具),并使用powershell查看部署的文件。
https://<your-function>.scm.azurewebsites.net/DebugConsole/?shell=powershell
运行命令dir D:\home\site\wwwroot
,我们可以看到文件尚未更新,而当我们查看dir D:\home\data\SitePackages
时,也看不到新的.zip文件。
通过运行命令.zip
确认正在使用哪个Get-Content D:\home\data\SitePackages\packagename.txt
来确认错误的.zip
。
然后,我们不返回Azure DevOps并尝试创建一个新版本,但是文件仍然没有更新。然后,我尝试克隆以前有效的Azure Function App Deploy
步骤,并禁用另一个步骤。尝试了新版本,现在一切正常。
我认为这一定是Microsoft的错误,因为我们根本没有真正更改任何值。希望这可以帮助其他人,并且Microsoft可以解决此问题。
答案 1 :(得分:1)
我遇到了使用功能v3新部署的功能的问题,因此这似乎仍然是个问题。
简短答案:
删除D:\home\data\SitePackages
中的.zip,然后重新部署,您的更改将被提取。
好答案
我的设置使用的是ZIP部署和WEBSITE_RUN_FROM_PACKAGE = 1
。
了解使用ZIP部署时会发生什么:
D:\home\data\SitePackages
(来源:https://docs.microsoft.com/en-us/azure/azure-functions/run-functions-from-deployment-package)D:\home\site\wwwroot
并从那里运行。由于某种原因,D:\home\data\SitePackages
中的.zip未被替换,仍然是旧版本。为了解决这个问题,我在重新部署之前使用App Service的控制台删除了文件。
cd D:\home\data\SitePackages
,然后运行ls
来查看文件夹中的文件。rm
命令以同时删除zip文件和文本文件。答案 2 :(得分:0)
如果使用具有相同软件包名称的新软件包替换旧软件包(以利用相同的sas url),请确保旧软件包被覆盖。而且,您必须单击“功能”应用程序旁边的“刷新”按钮,以将触发器与更改同步。
更新
我建议使用Azure Function Core Tools(Cli)提供的发布命令(func azure functionapp publish <functionAppName>
)。 V2 Cli也受益于“从软件包运行”,并为我们自动化了整个过程(压缩文件夹,上传,创建应用程序设置,同步触发器)。
该命令先获取发布信息(用户名,部署密码),然后获取
存档功能项目。
将zip文件(名称格式为UTCTime-GUID
。zip)上传到function-releases
应用设置指定的存储帐户中的AzureWebJobsStorage
容器中。
使用SAS Url创建应用程序设置WEBSITE_RUN_FROM_ZIP
(原始名称为WEBSITE_RUN_FROM_PACKAGE
,都可用)。
同步触发器以获取更改。
答案 3 :(得分:0)
经过所有努力,我真正确定的唯一事情是您需要重新启动-然后等待。重新启动大约15-20分钟后,更改就自动出现了。
答案 4 :(得分:0)
如果您尝试将新的JAR / ZIP部署到function-app,则更改将在1-2分钟内反映出来 *确保您为 WEBSITE_RUN_FROM_PACKAGE 使用了正确的值 *从控制台下载内容,并检查其是否相同
答案 5 :(得分:0)
在将部署更改为使用 WEBSITE_RUN_FROM_PACKAGE
后,我遇到了同样的问题。我认为问题在于它使用的是缓存部署工具,因此它使用的是以前的部署脚本,而不是在您更改部署方式时使用的新脚本。
如果查看azure devops中的部署日志,kudu界面中有一个指向部署日志的链接:
我发现 this answer 解释了如何修复它。