我的任务是为云 Saas 解决方案实施 gitlab ci/cd 管道。我们的产品由 4 个微服务组成,每个微服务都在一个单独的 git 项目中。我的目标是设置一个管道,在其中提交对服务 A 的更改将构建/单元测试服务,在我们的 CI 环境中部署服务,然后在单独的项目中触发我们的端到端测试。为单个服务的单个提交解决这个问题非常简单。我有一个 POC,在 gitlab yml 中的部署阶段之后,我只使用“trigger”属性来触发 e2e 测试项目中的端到端测试。我的问题是弄清楚如何通过同时对每个项目进行并行提交来管理这一点。
例如:如果有人提交服务 A 并且它的管道启动(构建 -> 部署到 CI 空间 -> 触发 E2E 测试)。然后,当管道仍在运行时,有人提交到服务 B,触发它的管道(构建 -> 部署到 CI 空间 -> E2E 测试),如何在 E2E 仍在从提交运行时阻止提交到服务 B 的部署阶段运行为 A 服务?基本上,如果类似的阶段在其他管道中运行,我希望部署阶段和 E2E 阶段保持不变。
注意:服务在单独的 git 项目中有着悠久的历史,所以如果任何解决方案需要重新组织项目,这将是一个非常令人信服的理由。
答案 0 :(得分:0)
您可以为 end2end 管道配置一个单独的运行器,并将此运行器一次限制为 1 个管道
见https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section
另请参阅此功能请求,它请求您正在寻找的功能: https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41560
描述了其他几种解决方法。