【问题标题】:Azure Devops - Create integration test pipeline that runs after all other triggered pipelinesAzure Devops - 创建在所有其他触发管道之后运行的集成测试管道
【发布时间】:2021-02-05 03:06:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

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

    1、创建release pipeline

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

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

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

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

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

    7、配置 Gate 的评估选项。

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

    要决定使用哪个映像版本,您可以在发布管道中克隆您的源代码,然后在 git 命令下运行以检查哪些文件夹已更改。然后您可以决定使用哪些图像。请see this thread了解更多信息。

    git diff HEAD HEAD~ --name-only

    【讨论】:

    • 我们的 Github 存储库还依赖于当前 CI 管道是否通过(“要求状态检查通过”选项),然后才能合并 PR,并且需要通过此集成测试。我看到了使用门的优势,但目前尚不清楚如何/是否使其适用于发布,因为它们没有出现在状态检查列表中。
    • 这里还有一个潜在的问题,PR 可能只会触发测试使用的 n
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 2020-04-13
    • 1970-01-01
    • 2022-10-25
    • 2021-01-13
    • 1970-01-01
    相关资源
    最近更新 更多