4

我以前在 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 中的那个可以工作,因为我的其他应用程序没有本地.deployementdeploy.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 应用程序没有这样做。

4

1 回答 1

10

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

  • 转到Kudu 控制台
  • 进了D:\home\site\deployments\tools文件夹
  • 删除deploy.cmddeploymentCacheKey
  • 尝试下注
于 2016-02-19T22:44:31.967 回答