如何解决在AzDo中为2个单独的项目/存储库构建/发布管道的最佳方法
我在AzDo中有2个单独的项目,project-1
包含用于构建docker映像的仓库,并像1.0.0,1.0.1
等那样对其进行标记,在另一个projects-2
中有2个单独的仓库使用这些仓库标签。目前,这是repos @ project-2中的手册。
我的问题是我如何在AzDo中自动化该过程,这意味着如果repo@project1
中有一个用于docker的新标签,那么它将使用此新docker标签在project-2
中自动构建仓库。
例如当前project-1
的图像为:1.0.0,这在project-2
的2个仓库中手动使用,参考1.0.0。
现在,我在project-1中使用标签2.0.0构建了一个新标签,因此如何使用此新2.0.0自动构建2 repos@project-2
。从一个构建/发布管道到另一管道/项目有任何链接/信号吗?
任何建议都将不胜感激。
解决方法
最简单的方法是使用pipeline triggers,它允许您一个接一个地触发一个管道。您可能在获取摘要图像标签时遇到问题,但是您可以通过点击容器注册表来解决此问题。
也请检查stages filter,也许它们会为您的案件提供价值。
在此sprint中,我们添加了对“阶段”的支持,以作为YAML中管道资源的过滤器。使用此过滤器,您无需等待整个CI管道完成就可以触发CD管道。现在,您可以选择在CI管道中的特定阶段完成后触发CD管道。
另一种选择是将图像推送到容器注册表时使用webhook并通过REST API触发另一个管道。
,根据您的描述,您似乎在谈论两个不同的团队项目。
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
对于经典编辑器,您需要使用一些3rd-paty扩展名,例如Trigger Azure DevOps Pipeline,它可以选择管道所在的其他项目。