【问题标题】:Implement Multi-project gitlab pipeline with common deploy and test stages实施具有通用部署和测试阶段的多项目 gitlab 管道
【发布时间】:2021-05-27 09:39:19
【问题描述】:

我的任务是为云 Saas 解决方案实施 gitlab ci/cd 管道。我们的产品由 4 个微服务组成,每个微服务都在一个单独的 git 项目中。我的目标是设置一个管道,在其中提交对服务 A 的更改将构建/单元测试服务,在我们的 CI 环境中部署服务,然后在单独的项目中触发我们的端到端测试。为单个服务的单个提交解决这个问题非常简单。我有一个 POC,在 gitlab yml 中的部署阶段之后,我只使用“触发器”属性来触发 e2e 测试项目中的端到端测试。我的问题是弄清楚如何通过同时对每个项目进行并行提交来管理它。

例如:如果有人提交服务 A 并且它的管道启动(构建 -> 部署到 CI 空间 -> 触发 E2E 测试)。然后,当管道仍在运行时,有人提交到服务 B,触发它的管道(构建 -> 部署到 CI 空间 -> E2E 测试),我如何防止在 E2E 仍然从提交运行时运行提交到服务 B 的部署阶段服务A?基本上,如果在其他管道中运行类似的阶段,我希望部署阶段和 E2E 阶段保持不变。

注意:服务存在于单独的 git 项目中的历史由来已久,因此,如果任何解决方案需要重新组织项目,这将是一个非常令人信服的理由。

【问题讨论】:

  • 您的问题是由于 gitlab c.i 引擎的限制。如果你想使用另一个更灵活的 c.i 引擎,你可以做任何你想做的事情。无论如何,你能在你的 gitlab ci 中运行 shell 代码或一些 nodejs 脚本吗?

标签: continuous-integration gitlab microservices gitlab-ci


【解决方案1】:

您可以为 end2end 管道配置一个单独的运行器,并将此运行器一次限制为 1 个管道

https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section

另请参阅此功能请求,它请求您正在寻找的功能: https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41560

描述了其他几种解决方法。

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 2022-12-19
    • 2020-09-22
    • 2016-07-25
    • 1970-01-01
    • 2022-01-19
    • 2018-09-26
    • 2016-11-19
    • 2021-10-09
    相关资源
    最近更新 更多