我在AzDo中有2个独立的项目,project-1包含repo来构建docker镜像,并像1.0.0 , 1.0.1等一样相应地标记它,在另一个projects-2中有2个独立的repos使用这些标记。目前,这是在repos@project-2中手动完成的。
我的问题是如何在AzDo中自动化这个过程,这意味着如果repo@project1中有一个新的docker标签,那么它将自动在project-2中使用这个新的docker标签构建repos。
例如,当前project-1具有图像: 1.0.0,这在project-2中手动引用1.0.0的2个代码库中使用。现在我在project-1中用2.0.0构建了一个新的标记,那么我如何使用这个新的2.0.0自动构建2个repos@project-2。是否存在从一个构建/发布管道到另一个管道/项目的链接/信号?
任何建议都是非常感谢的。
发布于 2020-08-27 06:35:30
最简单的方法是使用pipeline triggers,它允许您触发一个接一个的管道。你可能会在获取docket image标签时遇到问题,但你可以通过点击容器注册表来解决这个问题。
也请查看stages filter,也许他们会为您的案例提供价值。
在这个sprint中,我们添加了对'stages‘的支持,作为对YAML中的管道资源的过滤。使用此筛选器,您无需等待整个CI管道完成即可触发您的CD管道。现在,您可以选择在CI管道中的特定阶段完成后触发CD管道。
另一种选择是当您的图像被推送到容器注册表并通过REST API触发另一个管道时,使用webhook。
发布于 2020-08-27 14:30:23
根据您的描述,您似乎在谈论两个不同的团队项目。
Is there any link/signal from one build/release pipeline to another pipeline/project?您希望在另一个团队项目中触发管道。
在经典编辑器中,管道触发器称为构建完成触发器。您可以选择同一项目中的任何其他构建作为触发管道。
因此,您必须在YAML文件中直接指定管道触发器,而不是在UI中配置构建完成触发器。
# this is being defined in app-ci pipeline
resources:
pipelines:
- pipeline: securitylib # Name of the pipeline resource
source: security-lib-ci # Name of the pipeline referenced by the pipeline resource
trigger:
branches:
- releases/*
- master要在完成一个管道后触发另一个管道,请将触发管道指定为管道资源。
注意:如果触发管道位于另一个Azure DevOps项目中,则必须使用project: OtherProjectName指定项目名称。
更多详细示例和限制请参阅:https://stackoverflow.com/a/61398607/5391065
对于经典编辑器,您需要使用一些第三方扩展,比如这个--Trigger Azure DevOps Pipeline,它能够选择管道所在的其他项目。
https://stackoverflow.com/questions/63598325
复制相似问题