从包更新部署的Azure功能不可见

时间:2018-12-11 11:09:13

标签: azure deployment azure-functions

我正在从软件包中部署azure函数应用程序(使用本指南-https://docs.microsoft.com/en-us/azure/azure-functions/run-functions-from-deployment-package)-可以正确部署。但是我似乎无法部署更新。即使在我上传了新软件包之后,azure函数应用程序也无法接收更改。我尝试停止/启动该应用程序均无济于事。

如何强制它接受更改?

6 个答案:

答案 0 :(得分:2)

使用来自Azure DevOps的Azure Function App Deploy有一个非常奇怪的问题。

这非常有效,直到有一天我们对本地运行但不在我们的开发服务器上运行的Azure功能进行了一些代码更改。我们开始查看.zip文件和发布管道,但这里的一切看起来都不错。我们还可以看到azure-pipelines.yml或发布管道中没有任何变化:

enter image description here

Git命令:git log -p azure-pipelines.yml

enter image description here

对于发行版,我们使用Microsoft Corporation的Azure Functions任务。

enter image description here

看看发布日志,一切看起来也不错:

enter image description here

然后我们登录Kudu(高级工具),并使用powershell查看部署的文件。

https://<your-function>.scm.azurewebsites.net/DebugConsole/?shell=powershell

运行命令dir D:\home\site\wwwroot,我们可以看到文件尚未更新,而当我们查看dir D:\home\data\SitePackages时,也看不到新的.zip文件。

enter image description here

通过运行命令.zip确认正在使用哪个Get-Content D:\home\data\SitePackages\packagename.txt来确认错误的.zip

enter image description here

然后,我们不返回Azure DevOps并尝试创建一个新版本,但是文件仍然没有更新。然后,我尝试克隆以前有效的Azure Function App Deploy步骤,并禁用另一个步骤。尝试了新版本,现在一切正常。

enter image description here

enter image description here

我认为这一定是Microsoft的错误,因为我们根本没有真正更改任何值。希望这可以帮助其他人,并且Microsoft可以解决此问题。

enter image description here

答案 1 :(得分:1)

我遇到了使用功能v3新部署的功能的问题,因此这似乎仍然是个问题。

简短答案:
删除D:\home\data\SitePackages中的.zip,然后重新部署,您的更改将被提取。

好答案

我的设置使用的是ZIP部署和WEBSITE_RUN_FROM_PACKAGE = 1

了解使用ZIP部署时会发生什么:

  1. 该zip文件不是 写入您网站的wwwroot,而是写入D:\home\data\SitePackages(来源:https://docs.microsoft.com/en-us/azure/azure-functions/run-functions-from-deployment-package
  2. 然后将zip文件的内容安装到D:\home\site\wwwroot并从那里运行。

由于某种原因,D:\home\data\SitePackages中的.zip未被替换,仍然是旧版本。为了解决这个问题,我在重新部署之前使用App Service的控制台删除了文件。

  1. 导航到您的App Service功能并打开控制台(在“开发工具”部分下)
  2. 运行cd D:\home\data\SitePackages,然后运行ls来查看文件夹中的文件。
  3. 运行rm命令以同时删除zip文件和文本文件。
  4. 重新部署您的功能,您将看到所做的更改。

答案 2 :(得分:0)

如果使用具有相同软件包名称的新软件包替换旧软件包(以利用相同的sas url),请确保旧软件包被覆盖。而且,您必须单击“功能”应用程序旁边的“刷新”按钮,以将触发器与更改同步。

更新

我建议使用Azure Function Core Tools(Cli)提供的发布命令(func azure functionapp publish <functionAppName>)。 V2 Cli也受益于“从软件包运行”,并为我们自动化了整个过程(压缩文件夹,上传,创建应用程序设置,同步触发器)。

该命令先获取发布信息(用户名,部署密码),然后获取

  1. 存档功能项目。

  2. 将zip文件(名称格式为UTCTime-GUID。zip)上传到function-releases应用设置指定的存储帐户中的AzureWebJobsStorage容器中。

  3. 使用SAS Url创建应用程序设置WEBSITE_RUN_FROM_ZIP(原始名称为WEBSITE_RUN_FROM_PACKAGE,都可用)。

  4. 同步触发器以获取更改。

答案 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界面中有一个指向部署日志的链接: enter image description here

我发现 this answer 解释了如何修复它。