Azure-Devops 管道 - 在部署到下一个环境之前等待 E2E 测试管道通过
Azure-Devops Pipeline - wait for E2E tests pipeline to pass before deploy to next environment
我们的管道通常具有以下阶段:
- 构建(+ 单元测试)
- 部署到开发
- 部署测试
- 部署到生产环境
此外 - 在测试和生产环境中 - 定义了批准 - 因此如果 PR 被合并,它只会被部署到 Dev,然后需要手动批准才能部署到测试等等。
我们有很多组件(API A、API B、一些后台工作者等),因为我们想独立管理和部署这些组件 - 所有组件都有自己的自己定义的管道(它们看起来都非常相似 - 如上所述)。
有时会发生一个 PR 影响多个组件,然后并行触发 2 个或 3 个或更多管道。
我们还有一组 E2E 测试 - 验证所有组件是否可以很好地协同工作。
当单个 PR 被合并并影响多个组件时 - 我们真的不想多次触发这些 E2E 测试。我们只想在所有受影响组件的所有管道部署到特定环境时触发它。
因此 - 我们为那些 E2E 测试分离了管道。
我们想要实现的流程是:
- PR 合并
- 组件 A、B 和 C 的管道被触发。
- 组件 A、B 和 C 的管道已完成阶段:“部署到开发”,下一阶段:“部署到测试”处于“等待”状态
- E2E 测试管道已经开始
- 组件 A、B 和 C 的管道将 运行 阶段“部署到测试”只有当有人手动批准(我们现在有这个)并且用于 E2E 测试的管道已经成功完成
你知道最后一个条件是怎么实现的吗?
您需要将自定义 Powershell/Shell 任务写入您的管道,该任务主要轮询更新以检查您的外部 E2E 测试管道是否已完成,并在 E2E 测试完成时完成该过程。
这是另一个答案的 link,其中包含如何完成此操作的示例:
但是,使用这种方法,如果您的 E2E 测试需要几个小时才能 运行,您可能 运行 会遇到作业超时的问题。默认超时为:
- 360 分钟的自托管作业
- Microsoft 托管作业需要 60 分钟
这是关于超时的文档:
我们的管道通常具有以下阶段:
- 构建(+ 单元测试)
- 部署到开发
- 部署测试
- 部署到生产环境
此外 - 在测试和生产环境中 - 定义了批准 - 因此如果 PR 被合并,它只会被部署到 Dev,然后需要手动批准才能部署到测试等等。
我们有很多组件(API A、API B、一些后台工作者等),因为我们想独立管理和部署这些组件 - 所有组件都有自己的自己定义的管道(它们看起来都非常相似 - 如上所述)。
有时会发生一个 PR 影响多个组件,然后并行触发 2 个或 3 个或更多管道。
我们还有一组 E2E 测试 - 验证所有组件是否可以很好地协同工作。
当单个 PR 被合并并影响多个组件时 - 我们真的不想多次触发这些 E2E 测试。我们只想在所有受影响组件的所有管道部署到特定环境时触发它。 因此 - 我们为那些 E2E 测试分离了管道。
我们想要实现的流程是:
- PR 合并
- 组件 A、B 和 C 的管道被触发。
- 组件 A、B 和 C 的管道已完成阶段:“部署到开发”,下一阶段:“部署到测试”处于“等待”状态
- E2E 测试管道已经开始
- 组件 A、B 和 C 的管道将 运行 阶段“部署到测试”只有当有人手动批准(我们现在有这个)并且用于 E2E 测试的管道已经成功完成
你知道最后一个条件是怎么实现的吗?
您需要将自定义 Powershell/Shell 任务写入您的管道,该任务主要轮询更新以检查您的外部 E2E 测试管道是否已完成,并在 E2E 测试完成时完成该过程。
这是另一个答案的 link,其中包含如何完成此操作的示例:
但是,使用这种方法,如果您的 E2E 测试需要几个小时才能 运行,您可能 运行 会遇到作业超时的问题。默认超时为:
- 360 分钟的自托管作业
- Microsoft 托管作业需要 60 分钟
这是关于超时的文档: