Azure网站Git部署在SCM_BUILD_ARGS中删除“/”

时间:2013-10-19 16:19:10

标签: azure azure-web-sites kudu

描述

我们目前正在使用基于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部署工作。

2 个答案:

答案 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行为。试试这个:

  • 打开cmd.exe
  • 运行:set foo=/abc设置变量
  • 运行bash
  • 从bash运行cmd以在bash上启动新的cmd(所以cmd - > bash - > cmd)
  • 运行set foo以获取foo
  • 的值

结果:

FOO=C:/Program Files (x86)/git/abc

因此价值完全搞砸了。关键也是大案,虽然这几乎是无害的。奇怪的东西......