visual-studio - 如何在一个解决方案中实现多个项目的持续集成和部署?

标签 visual-studio mercurial continuous-integration continuous-deployment appveyor

我们使用什么:

我们使用 mercurial 和 bitbucket 作为存储库。 Appveyor 和 kudu 用于持续集成和部署。我们使用 visual studio 2015 作为 IDE。

我们有什么:

我们有不同的网络项目。他们共享一些其他项目。所有的网络项目都有自己的解决方案。每个解决方案都有自己的存储库。

如果开发分支有变化。 Appveyor 构建此存储库,对其进行测试和部署。

如果默认情况下有更改,kudu 会构建此存储库并进行部署。

我们想要的:

我们希望将所有这些项目 merge 到一个解决方案中。但我想不通,如何才能实现持续集成或部署。

如果我在 webproject1 上更改某些内容,我只想构建和部署 webproject1。不应构建或部署解决方案中的其他 Web 项目。

最佳答案

也许单个存储库可以帮助您。使用相对路径来包含来自不同应用程序的共享库。

每个应用程序仍然可以拥有自己的解决方案文件,您的 CI 设置也将保持原样。所发生的变化是您在所有应用程序中拥有的共享项目将使用相对路径进行引用。例如:

存储库 root\Core\Component1\Component1.csproj 存储库 root\Core\Component2\Component2.csproj 存储库根\Applications\App1\App1.sln 存储库 root\Applications\App1\Domain\Domain.csproj 存储库 root\Applications\App1\Web\Web.csproj 存储库根\Applications\App2\App2.sln 存储库 root\Applications\App2\Domain\Domain.csproj 存储库 root\Applications\App2\Web\Web.csproj

现在,您的不同应用程序可以通过使用相对路径将现有项目添加到解决方案来包含所需的核心\组件。

您的持续集成系统将让 VCS 触发器监视应用程序和依赖项,因此只有相关更改才会触发构建。 因此,如果 App1 开发人员对 Component1 进行了更改,并且 App2 也使用了 Component1,则构建服务器将触发对 App1 和 App2 的构建,并发出任何重大更改的信号。但是,如果 App2 不依赖于 Component1,则只会构建 App1。 这是通过为您的应用程序配置构建触发器来实现的。

与使用单个 .sln 相比,此策略的一个好处是您不必在每次构建解决方案时构建所有内容(也不必在每次使用不同的应用程序时配置要构建的项目)

另请注意,您可以使用多个存储库来实现此目的。但这意味着您需要在正确的位置检查它们,以便您的相对路径有效。它也很模糊,因为如果您 checkout App1 并尝试构建它。它根本行不通,您必须弄清楚要检查哪些其他存储库等。

您正在使用 Mercurial,但仅供引用,使用 Git 处理的方式(其中之一)是使用 submodules .

关于visual-studio - 如何在一个解决方案中实现多个项目的持续集成和部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35775816/

相关文章:

.net - Visual Studio 2010 不显示其他已安装的框架

visual-studio - 仅在没有管理员权限的情况下,Windows 7 64 位下的 CMake 编译器标识未知

git - 如何将 Mercurial 存储库转换为 Git(支持 LFS)?

windows - Azure 上的自定义 Jenkins 从属镜像

xcode - 使用 Mavericks Server 的主机 key 验证失败 Xcode

build - 尽管所有测试都通过,但 TeamCity NUnit 构建步骤失败

c++ - 从注册表 HKEY_LOCAL_MACHINE 中删除 key

regex - 以特定的命名模式为所有类添加接口(interface)

mercurial - 默认情况下排除 hg 命令中的目录

python - Python 命令行界面中的 Tab 完成 - 如何捕获 Tab 事件