我们目前正在使用基于MVC4 / Umbraco的项目,使用Azure网站来托管它。
我们正在使用SCM_BUILD_ARGS在不同的构建设置之间进行更改,具体取决于我们部署到Azure的哪个站点(测试和产品)。
这是通过在UI中定义应用设置来完成的:
SCM_BUILD_ARGS = / p:环境=测试
早些时候我们使用Bitbucket Integration进行部署,此处此设置就像一个冠军。
我们现在已经切换到使用Git Deployment,在测试通过时从我们的构建服务器推送更改。 但是当我们这样做时,我们会得到一个可爱的错误。
“MSB1008:只能指定一个项目。”
尝试从Azure上的UI重新部署相同的失败部署。但
经过一些试验和错误后,我结束了进入deploy.cmd并在脚本中输出%SCM_BUILD_ARGS%
值。
看起来/
从SCM_BUILD_ARGS中删除,但仅限于使用Git部署,而不是Bitbucket Integration或从UI重新部署。
作为解决方法,我现在已经在/
前面的deploy.cmd脚本中添加了%SCM_BUILD_ARGS%
,但这当然会中断重新部署,因为我们之后有//p:Environment=Test
插入%SCM_BUILD_ARGS%
的值时的MSBuild命令。
:: 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的错误? 我们希望从Git和Redeploy部署工作。
答案 0 :(得分:8)
您可以尝试从“/”更改为“ - ”吗?例如,从/p:Environment=Test
到-p:Environment=Test
的AppSettings,看它是否有帮助。
答案 1 :(得分:0)
那里显然有一个Kudu错误,你应该在https://github.com/projectkudu/kudu上打开一个问题。但就目前而言,我可以给你一个解决方法。
不使用应用程序设置,而是在回购的根目录中包含.deployment文件,其中包含:
[config]
SCM_BUILD_ARGS = /p:Environment=Test
我认为这适用于所有情况。我怀疑这个bug与bash在后接收钩子场景中搞乱环境有关,这只适用于直接git push但不适用于Bitbucket和Redeploy场景。
更新:事实上,很容易看到这种奇怪的bash行为。试试这个:
set foo=/abc
设置变量bash
cmd
以在bash上启动新的cmd(所以cmd - > bash - > cmd)set foo
以获取foo 结果:
FOO=C:/Program Files (x86)/git/abc
因此价值完全搞砸了。关键也是大案,虽然这几乎是无害的。奇怪的东西......