如何在Azure上重置Kudu缓存部署

如何在Azure上重置Kudu缓存部署,azure,go,azure-web-app-service,kudu,Azure,Go,Azure Web App Service,Kudu,我以前在Azure Web应用程序上有一个节点应用程序,现在是Go应用程序。问题是,当我部署时,我从Kudu获得以下信息: 使用部署脚本的缓存版本(命令:“azure-y--无点部署-r“D:\home\site\repository”-o“D:\home\site\deployments\tools”--节点--sitePath“D:\home\site\repository”)。 这显然会导致后来没有找到服务器/app.js文件 因此,我尝试使用azure site deploymentsc

我以前在Azure Web应用程序上有一个节点应用程序,现在是Go应用程序。问题是,当我部署时,我从Kudu获得以下信息:

使用部署脚本的缓存版本(命令:“azure-y--无点部署-r“D:\home\site\repository”-o“D:\home\site\deployments\tools”--节点--sitePath“D:\home\site\repository”)。

这显然会导致后来没有找到服务器/app.js文件

因此,我尝试使用
azure site deploymentscript--go
为我的应用程序生成部署脚本

即使我在应用程序的设置中有GO15VENDOREXPERIMENT=1,它还是在抱怨依赖性。我的所有依赖项都存储在/vendor文件夹中

然后在由
azure site deploymentscript
命令生成的
deploy.cmd
文件中设置此变量

但它仍在抱怨没有一个依赖项。请注意,现在它正在搜索本地供应商树,但依赖项在那里,我可以在Github repo中看到它,我也可以在本地看到它

我有其他的Go应用程序,它们在Azure上部署得很好,但这一个,以前是一个节点应用程序,根本不起作用

我甚至试着从
deploy.cmd
中注释依赖项getter,因为所有这些都是本地的,所以不需要执行这些步骤。但即使这样也不起作用,因为
go-build
失败了,它抱怨依赖性不存在。它位于供应商文件夹中,并且在cmd文件和应用程序设置中将
GO15VENDOREEXPERIMENT
设置为1

那么我的选择是什么呢

我如何告诉Kudu使用Go默认部署,也许来自Azure的部署会起作用,因为我的另一个应用程序没有本地
.deployment
deploy.cmd
文件

编辑

我刚刚对一个全新的Azure web应用程序进行了测试部署,默认情况下该应用程序被检测为节点应用程序。我猜这是因为根目录中存在package.json,我还有一个main.go,它的包名是
package main

因此,可能只是由
azure site deploymentscript
生成的
deploy.cmd
不是最新的还是什么?(我更新了azure cli的verison仅供参考,因为起初我没有--go标志)

为了完整起见,这里是Kudu在新创建的应用程序上部署时的输出,得到与节点应用程序相同的错误:


远程:解析依赖项
远程:#cd。;git克隆https://github.com/org/mypkg D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkg
远程:构建Go应用程序以生成exe文件
远程:克隆到“D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkg”。。。
远程:致命:无法读取的用户名'https://github.com“:错误的文件描述符
远程:包github.com/org/pkg/lib:exit status 128
remote:azureapp\main.go:3:8:在以下任意位置找不到包“github.com/org/pkg/lib”:
远程:D:\local\Temp\8d3397e1e01401\gopath\src\azureapp\vendor\github.com\org\pkg\lib(供应商树)
远程:复制用于部署的文件
远程:D:\Program Files\Go\1.5.3\src\github.com\org\pkg\lib(来自$GOROOT)
远程:D:\local\Temp\8d3397e1e01401\gopath\src\github.com\org\pkg\lib(来自$gopath)
远程:KuduSync.NET从:“D:\home\site\repository”到:“D:\home\site\wwwroot”
远程:找不到D:\home\site\repository\azureapp.exe
远程:复制web.config
远程:web.config已存在。跳过
远程:已成功完成。
远程:正在运行部署后命令。。。
远程:部署成功。

为什么要克隆库,这一行[第二行]可能是导致整个问题的原因:

remote:#cd。;git克隆https://github.com/org/mypkg


为什么如果设置了
SET GO15VENDOREXPERIMENT=1
,它将尝试克隆依赖项?它在我的另一个Go应用程序上没有这样做。

不确定是什么导致了这种状态,但请尝试以下操作:

  • 进入
    D:\home\site\deployments\tools
    文件夹
  • 删除
    deploy.cmd
    deploymentCacheKey
  • 试销

当我第一次在部署和存储库上执行rm-rf时收到此消息,我只是尝试在一个新的web应用程序上部署,但我收到了相同的错误,由于某些原因,从/vendor folderit中看不到依赖项。它正试图克隆vendor dependency remote:#cd。;git克隆。即使GO15VENDOREXPERIMENT=1,我也不知道我做错了什么。你能像David提到的那样尝试清理缓存,然后再试一次吗?另外,最好对所有环境变量进行区分,因为您提到您有另一个Go应用程序正在运行,看看有什么区别。(要获取环境变量,只需在调试控制台上运行“set”)Xiaomin Wu是的,我在工具中删除了缓存,做了设置以确保GO15VENDOREXPERIMENT在那里(它在那里),从本地删除了.deployment/deploy.cmd,而不是推送。Kudu会自动看到Nodejs部署(可能是由于package.json,因此默认情况下,它没有按重要性顺序查看main.go或take节点。)因此,我重新清除了deployments/Tools上的缓存,删除了服务器上的web.config,从Azure上运行的go应用程序中的deployments/Tools中添加了deploy.cmd,因此我猜问题是即使在重置deploymentCacheKey之后,deploymentCacheKey仍然是一个错误始终重置为Node deployright,如果您有package.json文件,nodejs项目解析器将取代go项目解析器,因为go项目解析器是在nodejs项目解析器之后引入的。