加载中…

加载中...

Azure AppService本地git库持续集成时部署指定的csproj项目

转载 2018-01-13 22:42:36

(好久没写博客了)

这篇文章是为了记录一下使用Azure AppService时遇到的一个问题,和一通Google后找到的解决方案。

问题:

使用 Visual Studio for Mac + .NET Core 2.0.4 开发的MVC项目,一个 Solution包含了多个csproj项目,其中有MVC项目A、B、C,几个 Console App,还有一些基于.NET Standard的库。代码库使用git做管理。

此时希望(只)将网站B部署到Azure App Service上,同时使用AppService自带的CI功能自动部署和发布,所以将本地git的一个remote指向了 B.chinacloudsites.cn ​,命名为azureB。理想的情况是:发布的时候敲一个 git push azureB master 即可将本地master分支推送到远程分支azureB/master,然后AppService就会自动编译并发布网站B,看起来非常方便。

但是由于此git库中的solution里面有多个csproj,默认情况下Azure AppService​在编译solution后会发布其中的第一个项目即A.csproj,不符合我们的要求,有什么简单的办法能解决吗?


最简单的解决方案:

Azure AppService背后的​git管理与代码编译发布引擎是 Project Kudu(https://github.com/projectkudu/kudu) ,在这个项目Wiki文档的一个特别隐蔽的段落中提到了解决方案(https://github.com/projectkudu/kudu/wiki/Customizing-deployments 最后一段):

在Azure Portal -> AppService网站的设置(环境变量)中,新建一个设置,名为 PROJECT ,将其值设置为指向指定csproj​的路径即可,例如:

PROJECT​    TestSolution/B.csproj


走过的弯路

这期间想过如下的方案,幸好最后发现了最简单的方法

* 拆分git库,只推送包含 B.csproj 所在的文件夹到远端分支,但共享的.NET Standard库的代码就没办法传上去了。而且管理多个git库感觉也很麻烦。

* 在本地提前dotnet publish好,将编译完成的dll push到远端分支中。感觉不太可行的样子。

* 查到了KUDU的文档,​主页明确写了支持Deployment script和Deployment hook,还有具体的使用方法,发现需要写很多额外的代码来指定发布时的动作。全部看完之后正准备动手时发现,他们把最简单的方法放在最后一个文档的最后面了。

阅读(0) 评论(0) 收藏(0) 转载(0) 举报
分享

评论

重要提示:警惕虚假中奖信息
0条评论展开
相关阅读
加载中,请稍后
Kaedei
  • 博客等级:
  • 博客积分:0
  • 博客访问:827,115
  • 关注人气:0
  • 荣誉徽章:

相关博文

新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有