3

描述

我们在一个基于 MVC4/Umbraco 的当前项目中,使用 Azure 网站来托管它。

我们正在使用 SCM_BUILD_ARGS 在不同的构建设置之间进行更改,具体取决于我们部署到 Azure 中的哪个站点(测试和生产)。

这是通过在 UI 中定义应用设置来完成的:

SCM_BUILD_ARGS = /p:环境=测试

早些时候我们使用 Bitbucket 集成进行部署,在这里这个设置就像一个冠军。

我们现在已经切换到使用 Git 部署,在测试通过时从我们的构建服务器推送更改。但是当我们这样做时,我们会得到一个可爱的错误。

“MSB1008:只能指定一个项目。”

尝试从 Azure 上的 UI 重新部署相同的失败部署是可行的。

经过一些试验和错误后,我结束了进入 deploy.cmd 并%SCM_BUILD_ARGS%在脚本中输出值。看起来/从 SCM_BUILD_ARGS 中删除了,但仅在使用 Git 部署时,而不是 Bitbucket 集成或从 UI 重新部署时。

解决方法

作为解决方法,我现在/在 .deploy.cmd 脚本前面添加了一个%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 中的一个错误?我们希望从 Git 部署和重新部署都能正常工作。

4

3 回答 3

8

您可以尝试从“/”更改为“-”吗?例如, AppSettings from /p:Environment=Testto -p:Environment=Test,看看它是否有帮助。

于 2013-10-20T00:10:28.897 回答
1

-p:Environment=Test对我不起作用,在撰写本文时(2015 年 9 月)对我有用的设置是 -p:Configuration=Test

于 2015-09-10T08:59:37.657 回答
0

那里显然有一个 Kudu 错误,您应该在https://github.com/projectkudu/kudu上打开一个问题。但现在,我可以给你一个解决方法。

不要使用应用程序设置,而是在您的存储库的根目录中包含一个 .deployment 文件,其中包含:

[config]
SCM_BUILD_ARGS = /p:Environment=Test

我认为这将适用于所有情况。我怀疑这个错误与 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

所以价值被完全搞砸了。键也有大写,尽管这大多是无害的。奇怪的东西...

于 2013-10-19T22:13:30.420 回答