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

RoL*_*LLs 7 git project-structure visual-studio azure-devops

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

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

  • Web Api项目(引用基础结构,存储库和模型项目)
  • 网站项目(调用Web Api获取数据和参考基础结构,存储库和模型项目)
  • Node.js项目(仅调用Web Api获取数据)
  • 基础结构项目(由Web Api和网站共享)
  • 存储库项目(由Web Api和网站共享)
  • 模型项目(由Web Api和网站共享)

在开始研究如何在CI / CD定义中将Web Api,Web站点和Node.js项目发布到他们自己的Azure App Service之前,请执行以下操作:

是否可以进行设置以便仅部署某些项目?即:仅发布Node.js项目,或者仅发布Web Api和网站,而不发布Node.js。

还是我需要将事情保留在不同的解决方案中?

如果我将它们放在单独的解决方案中,那么这对源代码管理(Git)的共享项目(基础结构,存储库和模型)有何影响?如果我在Web Api解决方案中的“模型和存储库”中添加代码,我是否要提交这些更改而不是Web Api Git存储库?这对引用相同Models和Repo项目的其他项目有何影响?这是Git子模块起作用的地方吗?

更新1(2019/3/8)

看起来我也许可以使用路径过滤器https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=azure-devops)在1个解决方案中使用此解决方案。仍对进一步的输入感兴趣。

RoL*_*LLs 5

希望这对其他人有帮助:

我通过在定义中使用路径过滤器来解决此问题Build,它可以完美地工作。我为每个需要存在或托管在某个地方的项目创建了1个构建定义(在我的示例中,我有3个Build定义:Web Api,Website,Node.js)。

路径过滤器中使用正确的项目路径Builds后,只有正确的旋转,并且所有未触及的项目都不会触发构建。每个构建都有它自己的release,然后将指定的应用程序部署到它自己的目的地。

  • @MR 抱歉这么晚回复:这是一个由两部分组成的交易。首先,在代理作业中,对于 Visual Studio 构建任务,我将解决方案定义为该管道的我的项目(即:“\src\Project1\Project1.csproj”)。这应该保证工件仅包含项目 1。然后我还使用路径过滤器输入相同的路径,但不包含项目名称(即:“\src\Project1”)。这保证了只有当该目录中的任何文件被修改时才会触发该管道。我是这样理解这个过程的。到目前为止,它运行得很好,我已经以同样的方式向解决方案添加了更多项目。 (2认同)
  • @MR 如果您需要更多帮助,请告诉我。我不介意提供帮助,因为我知道我也需要帮助。 (2认同)