【发布时间】:2020-01-03 20:06:53
【问题描述】:
我目前在子目录中有一个带有服务的 monorepo,我倾向于将其变成带有 metarepo 的 multirepo。
我决定尝试 Azure DevOps 的原因之一是有人告诉我,您可以在子目录中设置触发器,例如:
trigger:
branches:
include:
- master
paths:
include:
- client
经过测试,它可以工作。
但是,我想知道是否可以有多个独立的触发器,或者这是否需要一个 polyrepo 或多个 .yml?原因是如果 client 服务中只有更改,它只会触发该组测试、构建和部署,而不触发 api 服务来运行测试、构建和部署。
例如:
trigger:
branches:
include:
- master
paths:
include:
- client
stages:
...
Run tests
If tests pass, build and push to ACR
Deploy to AKS
...
trigger:
branches:
include:
- master
paths:
include:
- api
stages:
...
Run tests
If tests pass, build and push to ACR
Deploy to AKS
...
这样,一个变化不会导致整个应用程序被重建,只是改变了什么。
但是,这是否需要多个 .yml 文件(甚至不确定是否可以识别除 azure-pipelines.yml 以外的任何文件),这是否需要一个 polyrepo,或者这在单个 azure-pipelines.yml 中是否可行,我只是不看到了吗?
【问题讨论】:
-
检查一下docs.microsoft.com/en-us/azure/devops/pipelines/test/… 是的,您可以拥有多个具有任何名称的 .yml 文件。创建构建管道时,您选择并引用现有的 yaml。没有简单的方法可以根据某个 git 目录中的更改来触发测试。您引用的是构建任务条件。但是没有可以用作条件的内置变量。可能有一些复杂的 API 操作可以通过点击 GIT api 组合在一起。
标签: azure azure-devops azure-pipelines