Azure devops 在monorepo Azure中部署单个服务

Azure devops 在monorepo Azure中部署单个服务,azure-devops,azure-pipelines,azure-service-fabric,Azure Devops,Azure Pipelines,Azure Service Fabric,我正在使用azure devops,我的项目是github中包含多个服务的monorepo主机。 每次我在一个服务中进行更改时,我必须构建所有其他服务(循环所有文件夹并构建),然后将其推送到fabric。 如何配置azure以仅生成和推送已更改的项目? 这是我的解决方案文件夹结构 Microservices/ ├── Service A/ ├── Service B/ └── Service C/ 谢谢不幸的是,没有现成的解决方案。解决方法是为服务设置多个管道,并由

我正在使用azure devops,我的项目是github中包含多个服务的monorepo主机。
每次我在一个服务中进行更改时,我必须构建所有其他服务(循环所有文件夹并构建),然后将其推送到fabric。
如何配置azure以仅生成和推送已更改的项目? 这是我的解决方案文件夹结构

Microservices/  
    ├── Service A/
    ├── Service B/
    └── Service C/

谢谢

不幸的是,没有现成的解决方案。解决方法是为服务设置多个管道,并由每个服务文件夹中的更改触发。例如:

Microservices/ 
    ├── azure-pipelines.yml 
    ├── Service A/
        |── azure-pipelines-a.yml
    ├── Service B/
        |── azure-pipelines-b.yml
    └── Service C/
        |── azure-pipelines-c.yml
trigger:
  branches:
    include:
    - master
    - releases/*
  paths:
    include:
    - ServiceA/*
并使用路径过滤器决定将触发哪个yaml。例如:

Microservices/ 
    ├── azure-pipelines.yml 
    ├── Service A/
        |── azure-pipelines-a.yml
    ├── Service B/
        |── azure-pipelines-b.yml
    └── Service C/
        |── azure-pipelines-c.yml
trigger:
  branches:
    include:
    - master
    - releases/*
  paths:
    include:
    - ServiceA/*

此外,您可以使用多个版本中使用的步骤。

感谢您的解决方案我做了一些研究,发现我可以通过powershell从git获得最新的更改,但这是针对Azure Repo git的。如何使用github实现这一点?我的想法是获取最新的提交并检查路径并仅生成更改的项目这里是powershell步骤:-powershell:|$url=“$(System.CollectionUri)/$(System.TeamProject)/_api/git/repositories/$(build.Repository.ID)/commissions/$(build.SourceVersion)/changes?api版本=5.1“$result=调用RestMethod-Uri$url-头@{Authorization=“Bearer$(System.AccessToken)”}-Method GET$changesFolder=$result.changes |其中对象{$\项目.gitObjectType-匹配“树”}|选择对象-属性{$\项目.path}powershell脚本使用Azure DevOps REST api,在GitHub中,您可以通过Get a commit api获取提交,响应将包括一个带有更改文件列表的
文件
数组:。顺便说一下,有一个公共博客编写了一些powershell脚本来实现mono repo单构建解决方案,这可能会为您提供另一个解决方案。你可以看一下:。