使用错误文件的Azure AppService deploy.cmd

时间:2017-02-21 16:44:49

标签: kudu

我正在尝试将连续部署配置到Azure上的测试服务器。该应用程序是一个ASP.Net应用程序,但在这种情况下,这应该不重要。

我的构建过程(团队城市)生成一个文件夹,其中包含部署所需的所有内容(减去一些连接字符串信息)。如果您将IIS指向该目录,那么它的效果很好。如果您将该目录FTP到Azure,它也可以工作。

我正在跟踪git中的每个构建并将它们推送到Github。所以我试图使用Azure部署选项从github部署。一切都在git中。包含/ bin文件夹。

Kudu不需要做任何事情,只需从git中取出并将所有文件复制到wwwroot。

所以我将我的.deployment文件设置为:

[config]
project = .

但每次我这样做时,部署都会给我一个信息:

Using cached version of deployment script (command: 'azure -y --no-dot-deployment -r "D:\home\site\repository" -o "D:\home\site\deployments\tools" --aspWAP "D:\home\site\repository\MyProj.csproj" --no-solution').

它运行一些通用的自动生成的deploy.cmd。

如果我从缓存中删除deploy.cmd,它会重新生成一些通用的。

而且,最重要的是,在做这一切的时候,错误的组装正在被部署!!

我的应用程序依赖于System.Web.Helpers.dll。这个DLL的正确版本是在github中。我已多次验证这一点。

然而,Kudu正在从NuGet中获取一个OLDER并部署它。当然,我得到了关于无法加载该文件的可怕的YSOD错误。

我需要做些什么才能让Kudu只是将我的github存储库中的文件复制到wwwroot而不是其他内容?

1 个答案:

答案 0 :(得分:1)

我最终手动编辑了位于kudu \home\site\deployments\tools\deploy.cmd的自动生成的deploy.cmd文件。

我评论了2条自动生成的行:

:: 1. Restore NuGet packages
:: 2. Build to the temporary path

(也注明了它们下面的所有代码)

然后手动编辑第3部分以从DEPLOYMENT_SOURCE运行kudu sync而不是像这样的临时文件:

:: 3. KuduSync
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
  call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
  IF !ERRORLEVEL! NEQ 0 goto error
)