说明
我们目前正在使用基于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 回答
您可以尝试从"/"更改为"-"吗?例如,AppSettings从
/p:Environment=Test
到-p:Environment=Test
,看看是否有帮助 .-p:Environment=Test
对我不起作用,在撰写本文时(2015年9月)对我有用的设置是-p:Configuration=Test
那里显然有一个Kudu bug,你应该在https://github.com/projectkudu/kudu上打开一个问题 . 但就目前而言,我可以给你一个解决方法 .
而不是使用应用程序设置,在您的仓库的根目录中包含.deployment文件,其中包含:
我认为这适用于所有情况 . 我怀疑这个bug与bash在后接收钩子场景中搞乱环境有关,这只适用于直接git push但不适用于Bitbucket和Redeploy场景 .
更新:事实上,很容易看到这种奇怪的bash行为 . 试试这个:
打开cmd.exe
运行:
set foo=/abc
设置变量运行
bash
从bash运行
cmd
以在bash之上启动一个新的cmd(所以cmd - > bash - > cmd)运行
set foo
以获取foo的值结果:
所以 Value 完全搞砸了 . 关键也是大案,虽然这几乎是无害的 . 奇怪的东西......