首页 > 解决方案 > Azure Devops - 创建在所有其他触发管道之后运行的集成测试管道

问题描述

我有一个单独的存储库,它被分割成多个项目,每个项目都有一个生成 Docker 映像的构建。我已将 Azure devops 配置为在每个项目的正确路径上触发,以便在它们的子目录更改时获得正确的图像构建。一个 PR 可以触发一个或多个图像的构建。

构建完所有映像后,我想触发一个集成测试作业,该作业启动构成我的服务的所有映像。如果 PR 没有改变一个,它应该运行 service:latest 而不是构建的那个。如何创建一个在其他每个管道完成并知道要使用哪个映像版本之前不会启动的测试管道?对于图像,我想我可以在图像标签中使用 PR 编号或提交哈希值,如果该图像不存在,则恢复为 service:latest。

尚不清楚的是如何让集成测试作业等待所有相关(理想情况下并行化)构建完成。我考虑了具有不同构建作业的单个管道的想法,但这会产生另一个问题,即希望为每个构建工件输出独立触发 CD。我从不想重新部署未更改的映像,并且我希望能够跟踪已更改的映像的部署,因此用于所有构建的单个 CD 是一个坏主意。

标签: azure-devops

解决方案


您可以创建一个发布管道来运行您的测试作业并配置invoke rest apiGate 以检查所有管道是否已完成。请参见以下步骤:

1、创建发布管道

2,添加来自其他管道的所有工件作为发布管道工件源。以便在发布任何新版本的工件时触发管道。

3,创建通用服务连接以连接到您的 azure devops 组织。有关详细步骤,请参阅此线程。

4、为发布管道配置invoke rest api Gate。请参见下面的屏幕截图。

在此处输入图像描述

5、配置invoke rest api gate调用Build-latest rest api获取其他依赖管道的最新构建。请参见下面的屏幕:

在此处输入图像描述

6、为您的每个依赖管道添加多个调用 rest api 门

7、配置Gate的评估选项。

在此处输入图像描述

完成上述配置后,如果所有流水线都被评估为完成并成功,则将执行发布流水线。

要决定使用哪个映像版本,您可以在发布管道中克隆源代码并在 git 命令下运行以检查更改了哪些文件夹。然后您可以决定使用哪些图像。请参阅此线程以获取更多信息。

git diff HEAD HEAD~ --name-only


推荐阅读