我正在尝试将连续部署配置到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而不是其他内容?
答案 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
)