说明
我们目前正在一个基于mvc4/umbraco的项目中使用azure网站来托管它。
我们使用scm\ build\参数在不同的构建设置之间进行更改,具体取决于我们部署到azure中的哪个站点(测试和生产)。
这是通过在ui中定义应用程序设置来实现的:
scm\u build\u args=/p:environment=test
早些时候,我们使用bitbucket集成进行部署,在这里,这个设置就像一个champ。
我们现在已经切换到使用git部署,在测试通过时从构建服务器推送更改。但是当我们这样做的时候,我们得到了一个可爱的错误。
“msb1008:只能指定一个项目。”
不过,尝试从azure上的ui重新部署相同的失败部署是可行的。
经过一番尝试和错误,我最终进入deploy.cmd并输出 %SCM_BUILD_ARGS%
脚本中的值。看起来像是 /
从scm\u build\u参数中删除,但仅在使用git deploy时,而不是从ui进行bitbucket集成或重新部署。
变通办法
作为解决方法,我现在添加了 /
在 %SCM_BUILD_ARGS%
但这当然打破了重新部署,因为我们有 //p:Environment=Test
在msbuild命令中,当 %SCM_BUILD_ARGS%
已插入。
:: 2. Build to the temporary path
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
:: Added / to SCM_BUILD_ARGS
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\www\www.csproj" [....] /%SCM_BUILD_ARGS%
) ELSE (
%MSBUILD_PATH% "%DEPLOYMENT_SOURCE%\www\www.csproj" [....] /%SCM_BUILD_ARGS%
)
问题
有谁知道这个问题的更好的解决方案,或者它可能是kudu的一个bug?我们希望从git部署和重新部署都能正常工作。
3条答案
按热度按时间wi3ka0sx1#
显然有一个kudu错误在那里,你应该打开一个问题https://github.com/projectkudu/kudu. 但现在,我可以给你一个解决办法。
不要使用应用程序设置,而是在repo的根目录下包含一个.deployment文件,其中包含:
我认为这在任何情况下都适用。我怀疑这个bug与bash在post-receive-hook场景中破坏环境有关,后者只适用于git直接推送,而不适用于bitbucket和重新部署场景。
更新:事实上,很容易看到这种奇怪的bash行为。试试这个:
打开cmd.exe
跑步:
set foo=/
设置变量跑
bash
从bash开始,快跑cmd
在bash上启动一个新的cmd(so cmd->bash->cmd)跑
set foo
得到foo的值结果:
所以这个值被完全搞砸了。钥匙也有大写字母,尽管这基本上是无害的。奇怪的东西。。。
7fhtutme2#
你能试着把“/”改成“-”吗?例如,来自
/p:Environment=Test
至-p:Environment=Test
,看看是否有用。nhaq1z213#
-p:Environment=Test
不适用于我,在撰写本文时(2015年9月)适用于我的环境是-p:Configuration=Test