我以前在 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 文件中设置了这个变量。

它仍然提示一个依赖项不存在。请注意,现在它正在搜索本地 vendor 树,但依赖项在那里,我可以在 Github 存储库中看到它,我也可以在本地看到它。

我有其他 Go 应用程序在 Azure 上使用 vendor 依赖项部署得很好,但这个应用程序以前是一个 Node 应用程序,根本无法工作。

我什至尝试从 deploy.cmd 注释依赖项 getter,因为所有这些都是本地的,因此不需要此步骤。但即使这样也不起作用,因为 go build 未能提示依赖项不存在。它位于 vendor 文件夹中,并且 GO15VENDOREEXPERIMENT 在 cmd 文件和应用程序设置中设置为 1。

那么我在这里的选择是什么?

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

编辑

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

那么也许只是由 deploy.cmd 生成的 azure site deploymentscript 不是最新的还是什么? (我更新了 azure-cli 的版本仅供引用,因为起初我没有 --go 标志)。

为了完整起见,这是在新创建的应用程序上部署时 Kudu 的输出,得到与 Node one 相同的错误:
remote: Resolving dependenciesremote: # cd .; git clone https://github.com/org/mypkg D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkgremote: Building Go app to produce exe fileremote: Cloning into 'D:\local\Temp\8d3397e1e014401\gopath\src\github.com\org\mypkg'...remote: fatal: could not read Username for 'https://github.com': Bad file descriptorremote: package github.com/org/pkg/lib: exit status 128remote: 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 deploymentremote: 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.exeremote: Copy web.configremote: web.config already existed. Skipremote: Finished successfully.remote: Running post deployment command(s)...remote: Deployment successful.
为什么它试图克隆库,这里的这一行 [第二行] 可能是导致整个问题的原因:
remote: # cd .; git clone https://github.com/org/mypkg
为什么如果设置了 SET GO15VENDOREXPERIMENT=1 它会尝试克隆依赖项?我的另一个 Go 应用程序没有这样做。

最佳答案

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

  • 前往 Kudu Console
  • 进入 D:\home\site\deployments\tools 文件夹
  • 删除 deploy.cmddeploymentCacheKey
  • 尝试部署
  • 关于azure - 如何在 Azure 上重置 Kudu 缓存部署,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35515920/

    10-14 01:23