首页 文章

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

提问于
浏览
3

说明

我们目前正在使用基于MVC4 / Umbraco的项目,使用Azure网站来托管它 .

我们使用SCM_BUILD_ARGS在不同的构建设置之间进行更改,具体取决于我们部署到Azure的哪个站点(Test and Prod) .

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

SCM_BUILD_ARGS = / p:环境=测试

之前我们使用Bitbucket Integration进行部署,这里的设置就像一个冠军 .

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

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

尝试从Azure上的UI重新部署相同的失败部署 .

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

解决方法

作为解决方法,我现在在 %SCM_BUILD_ARGS% 前面的deploy.cmd脚本中添加了 / ,但这当然会中断重新部署,因为当插入 %SCM_BUILD_ARGS% 的值时,我们在MSBuild命令中有 //p:Environment=Test .

:: 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部署工作 .

3 回答

  • 8

    您可以尝试从"/"更改为"-"吗?例如,AppSettings从 /p:Environment=Test-p:Environment=Test ,看看是否有帮助 .

  • 0

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

  • 1

    那里显然有一个Kudu bug,你应该在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
    

    所以 Value 完全搞砸了 . 关键也是大案,虽然这几乎是无害的 . 奇怪的东西......

相关问题