Azure devops 在monorepo Azure中部署单个服务
我正在使用azure devops,我的项目是github中包含多个服务的monorepo主机。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/ 谢谢不幸的是,没有现成的解决方案。解决方法是为服务设置多个管道,并由
每次我在一个服务中进行更改时,我必须构建所有其他服务(循环所有文件夹并构建),然后将其推送到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单构建解决方案,这可能会为您提供另一个解决方案。你可以看一下:。