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

How to reset Kudu cached deployment on Azure

我以前在 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 应用程序,根本无法工作。

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

那么我的选择是什么?

我如何告诉 Kudu 使用 Go 默认部署,也许来自 Azure 的部署可以工作,因为我的其他应用程序没有本地 .deployementdeploy.cmd 文件。

编辑

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

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

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

remote: Resolving dependencies remote: # cd .; git clone https://github.com/org/mypkg D:\local\Tempd3397e1e014401\gopath\src\github.com\org\mypkg remote: Building Go app to produce exe file remote: Cloning into 'D:\local\Tempd3397e1e014401\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\Tempd3397e1e014401\gopath\src\azureapp\vendor\github.com\org\pkg\lib (vendor tree) remote: Copy files for deployment remote: D:\Program Files\Go.5.3\src\github.com\org\pkg\lib (from $GOROOT) remote: D:\local\Tempd3397e1e014401\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 应用程序没有这样做。

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

  • 转到Kudu Console
  • 进入 D:\home\site\deployments\tools 文件夹
  • 删除deploy.cmddeploymentCacheKey
  • 尝试部署