azure网站git部署在scm\构建\参数中删除“/”

ttp71kqs  于 2021-06-20  发布在  Kudu
关注(0)|答案(3)|浏览(425)

说明

我们目前正在一个基于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部署和重新部署都能正常工作。

wi3ka0sx

wi3ka0sx1#

显然有一个kudu错误在那里,你应该打开一个问题https://github.com/projectkudu/kudu. 但现在,我可以给你一个解决办法。
不要使用应用程序设置,而是在repo的根目录下包含一个.deployment文件,其中包含:

[config]
SCM_BUILD_ARGS = /p:Environment=Test

我认为这在任何情况下都适用。我怀疑这个bug与bash在post-receive-hook场景中破坏环境有关,后者只适用于git直接推送,而不适用于bitbucket和重新部署场景。
更新:事实上,很容易看到这种奇怪的bash行为。试试这个:
打开cmd.exe
跑步: set foo=/ 设置变量
bash 从bash开始,快跑 cmd 在bash上启动一个新的cmd(so cmd->bash->cmd)
set foo 得到foo的值
结果:

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

所以这个值被完全搞砸了。钥匙也有大写字母,尽管这基本上是无害的。奇怪的东西。。。

7fhtutme

7fhtutme2#

你能试着把“/”改成“-”吗?例如,来自 /p:Environment=Test-p:Environment=Test ,看看是否有用。

nhaq1z21

nhaq1z213#

-p:Environment=Test 不适用于我,在撰写本文时(2015年9月)适用于我的环境是 -p:Configuration=Test

相关问题