Git Azure DevOps:1解决方案多个项目CI/CD

Git Azure DevOps:1解决方案多个项目CI/CD,git,visual-studio,azure-devops,azure-pipelines,project-structure,Git,Visual Studio,Azure Devops,Azure Pipelines,Project Structure,我刚开始用CI/CD设置Azure DevOps。这可能不可能,但我希望找到答案 我有6个项目的解决方案: Web Api项目(参考基础设施、存储库和模型项目) 网站项目(为数据和参考基础设施、存储库和模型项目调用Web Api) Node.js项目(仅调用Web Api获取数据) 基础设施项目(由Web Api和网站共享) 存储库项目(由Web Api和网站共享) 模型项目(由Web Api和网站共享) 在我开始搜索如何将Web Api、网站和Node.js项目发布到CI/CD定义中他们自

我刚开始用CI/CD设置Azure DevOps。这可能不可能,但我希望找到答案

我有6个项目的解决方案:

  • Web Api项目(参考基础设施、存储库和模型项目)
  • 网站项目(为数据和参考基础设施、存储库和模型项目调用Web Api)
  • Node.js项目(仅调用Web Api获取数据)
  • 基础设施项目(由Web Api和网站共享)
  • 存储库项目(由Web Api和网站共享)
  • 模型项目(由Web Api和网站共享)
在我开始搜索如何将Web Api、网站和Node.js项目发布到CI/CD定义中他们自己的Azure应用程序服务之前:

是否可以将其设置为仅部署某些项目?i、 e:Node.js项目只发布,或者只发布Web Api和网站,而不发布Node.js。

还是我需要用不同的解决方案来解决问题

如果我将它们放在单独的解决方案中,这将如何影响参考源代码管理(Git)的共享项目(基础设施、回购和模型)?如果我在WebAPI解决方案中向模型和Repo添加代码,我是否提交这些更改而不是WebAPI GitRepo?这对参考相同模型和回购项目的其他项目有何影响?这就是Git子模块发挥作用的地方吗

更新1(2019/3/8)


看起来我可能能够使用路径过滤器在1个解决方案中实现这一点。仍然对任何进一步的输入感兴趣。

如果我能很好地理解您的问题,您需要部署特定的内置部件 是的,您可以在azure DevOps中执行此操作。在Azure DevOps中,您拥有构建定义和发布管道。 在build中,您将构建项目并只发布您提到的2个组件,在release中,您将部署它们
我希望我回答了你的问题

希望这能帮助其他人:

我通过在
构建定义中使用解决了这个问题,它工作得非常完美。我为每个需要在某个地方居住或托管的项目创建了1个构建定义(在我的示例中,我有3个
build
definitions:WebAPI、Website、Node.js)


使用路径过滤器中项目的正确路径时,只有正确的
构建
启动,任何未触及的项目都不会触发构建。每个版本都有自己的
版本
,然后将指定的应用部署到自己的目的地。

谢谢。但它更像是这样:今天我改变了
Project1
,所以当我推到Azure DevOps时,我只想构建和部署
Project1
。明天我将更改
Project2
,所以当我推到Azure DevOps时,我只想构建和部署
Project2
。目前,所有项目都在同一个Git Repo上。很抱歉迟到了,但是为每个项目创建两个带有路径过滤器的管道肯定会对您有所帮助。我也有同样的想法,这个场景适用于meno问题。这正是我修好它的方法,它也起作用了。再次感谢您,您实际上是如何分离构建路径的?它在扳机里吗?我试过了,但构建工件仍然拥有完整的解决方案。@M.R.很抱歉,我的回答太晚了:这是一个由两部分组成的交易。首先,在代理作业中,对于VisualStudio构建任务,我将解决方案定义为此管道的我的项目(即:“\src\Project1\Project1.csproj”)。这应该保证工件只包含项目1。然后,我还使用路径过滤器输入相同的路径,但没有项目名称(即:“\src\Project1”)。这保证仅当修改此目录中的任何文件时才会触发此管道。这就是我对过程的理解。到目前为止,它工作得很好,我已经以同样的方式向解决方案中添加了更多的项目。@M.R.如果您需要更多帮助,请告诉我。我不介意帮忙,因为我知道我也很需要它。@LuisGouveia基于我们的需要和我的研究,我只想发布一个版本,基于对该网站的更改,即:如果5个版本中有2个发生更改,则只应发布2个版本。我相信如果你使用YAML,你不必像我那样构建它。我还没有理解所有需要转换为YAML的特性,所以我还没有去那里。另外,对我来说,每个网站有2个管道:一个用于“开发”,一个用于“主”分支,所以对于我的3个网站,我有6个管道和6个发行版。哎呀!但现在他们已经完成了,我不需要做任何事情,而且效果很好@路易斯古维娅,真可爱!这是否意味着它会发布所有5个网站,即使你只更改为“网站1”?只是好奇,因为如果是这样的话,它对我不会起作用,否则我会更深入地研究它。