【发布时间】:2016-02-19 22:04:06
【问题描述】:
我之前在 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 文件夹中出售。
我将这个变量设置在azure site deploymentscript 命令生成的deploy.cmd 文件中。
它仍然在抱怨一个依赖项不存在。请注意,现在它正在搜索本地供应商树,但依赖项在那里,我可以在 Github 存储库中看到它,我也可以在本地看到它。
我有其他 Go 应用程序在 Azure 上部署的依赖项很好,但这个是 Node 应用程序,以前根本无法运行。
我什至尝试评论来自 deploy.cmd 的依赖获取器,因为所有这些都是本地的,因此不需要此步骤。但即使这样也没有用,因为go build 未能抱怨依赖不存在。它位于供应商文件夹中,GO15VENDOREEXPERIMENT 在 cmd 文件和应用程序设置中设置为 1。
那么我的选择是什么?
我如何告诉 Kudu 使用 Go 默认部署,也许 Azure 的那个可以工作,因为我的其他应用程序没有本地 .deployement 和 deploy.cmd 文件。
编辑
我刚刚对一个全新的 Azure Web 应用进行了测试部署,默认情况下该应用被检测为 Node 应用。我猜这是由于根目录下存在 package.json,我也有一个 main.go,其中有 package main 作为包名。
所以也许只是azure site deploymentscript 生成的deploy.cmd 不是最新的还是什么? (我更新了我的 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 应用程序没有这样做。
【问题讨论】:
标签: azure go azure-web-app-service kudu