我以前在 Azure Web App 上有一个 Node 应用程序,现在是一个 Go 应用程序。问题是当我部署时我从 Kudu 得到这个:
Using cached version of deployment script (command: 'azure -y --no-dot-deployment -r "D:\home\site\repository" -o "D:\home\site\deployments\tools" --node --sitePath "D:\home\site\repository"').
这显然后来抱怨找不到 server/app.js 文件。
所以我尝试为我的应用程序生成一个部署脚本azure site deploymentscript --go
。
即使我在应用程序的设置中有 GO15VENDOREXPERIMENT=1 ,它也抱怨依赖关系。我所有的依赖项都在 /vendor 文件夹中提供。
deploy.cmd
我比在命令生成的文件中设置这个变量azure site deploymentscript
。
它仍然在抱怨一个依赖项不存在。请注意,现在它正在搜索本地供应商树,但依赖项在那里,我可以在 Github 存储库中看到它,我也可以在本地看到它。
我有其他 Go 应用程序在 Azure 上部署的依赖项很好,但是这个是一个 Node 应用程序,以前根本不工作。
我什至尝试从 中评论依赖项 getter deploy.cmd
,因为所有这些都是本地的,因此不需要此步骤。但即使这样也没有用,因为go build
失败的抱怨依赖不存在。它位于供应商文件夹GO15VENDOREEXPERIMENT
中,在 cmd 文件和应用程序设置中设置为 1。
那么我在这里有什么选择呢?
我如何告诉 Kudu 使用 Go 默认部署,也许 Azure 中的那个可以工作,因为我的其他应用程序没有本地.deployement
和deploy.cmd
文件。
编辑
我刚刚对一个全新的 Azure Web 应用程序进行了测试部署,默认情况下该应用程序被检测为 Node 应用程序。我猜这是由于根目录下存在 package.json,我也有一个 main.gopackage main
作为包名。
所以也许它只是deploy.cmd
生成的azure site deploymentscript
那个不是最新的或什么?(我更新了我的 azure-cli 版本仅供参考,因为起初我没有 --go 标志)。
为了完整起见,这是 Kudu 在新创建的应用程序上部署时的输出,得到与 Node 相同的错误:
remote: Resolving dependencies
remote: # cd .; git clone https://github.com/org/mypkg D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkg
remote: Building Go app to produce exe file
remote: Cloning into 'D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkg'...
remote: fatal: could not read Username for 'https://github.com': Bad file descriptor
remote: package github.com/org/pkg/lib: exit status 128
remote: azureapp\main.go:3:8: cannot find package "github.com/org/pkg/lib" in any of:
remote: D:\local\Temp\8d3397e1e014401\gopath\src\azureapp\vendor\github.com\org\pkg\lib (vendor tree)
remote: Copy files for deployment
remote: D:\Program Files\Go\1.5.3\src\github.com\org\pkg\lib (from $GOROOT)
remote: D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\pkg\lib (from $GOPATH)
remote: KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot'
remote: Could Not Find D:\home\site\repository\azureapp.exe
remote: Copy web.config
remote: web.config already existed. Skip
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
为什么要尝试克隆库,这里的这一行 [第二行] 可能是导致整个问题的原因:
remote: # cd .; git clone https://github.com/org/mypkg
为什么如果SET GO15VENDOREXPERIMENT=1
设置它试图克隆依赖项?我的另一个 Go 应用程序没有这样做。