如何在 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 的部署可以工作,因为我的其他应用程序没有本地 .deployement
和 deploy.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.cmd
和deploymentCacheKey
- 尝试部署
我以前在 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 的部署可以工作,因为我的其他应用程序没有本地 .deployement
和 deploy.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.cmd
和deploymentCacheKey
- 尝试部署