GitLab 多个运行器,交换工件

Posted

技术标签:

【中文标题】GitLab 多个运行器,交换工件【英文标题】:GitLab multiple runners, exchanging artifacts 【发布时间】:2022-01-17 02:32:50 【问题描述】:

我已经在小型项目中使用 gitlab CI,但现在我正在考虑将 gitlab 作为 CI 用于大型项目。

如何在两个不同物理机器上运行的两个 gitlab-runner 之间传递构建工件(一堆二进制文件等)?

上下文: 我有一个大型存储库,在构建过程中会产生很多工件。显然这需要时间,所以我想在一个强大的多核机器上构建。如果构建通过,我想在许多其他(较小的)机器上并行测试。这些测试机连接到许多不同类型的设备。我不想打扰强大机器的设备。

我知道artifacts:dependencies: 应该解决这个问题,但据我所知,它使用本地缓存。

构建工件重约 4GB,因此必须以某种方式传输数据。

gitlab 可以在本地提供帮助,还是我需要构建+推送模式,然后是获取+测试? (比如说神器CEPH NFS等)

我想我的需求不是独一无二的,所以必须已经存在一些东西。

【问题讨论】:

【参考方案1】:

您在正确的道路上:artifacts 是您正在寻找的。 Runners 不会存储他们构建的工件,而是将它们上传到 GitLab 实例。

现在,GitLab 将它们存储在哪里是一个不同的主题,如果您管理 GitLab 安装,您可以查看管理文档:https://docs.gitlab.com/ee/administration/job_artifacts.html

如果您有任何特殊需要,您也可以通过 API 检索工件,但 artifactsdependencies 对于您的用例应该绰绰有余:https://docs.gitlab.com/ee/api/job_artifacts.html#get-job-artifacts

【讨论】:

以上是关于GitLab 多个运行器,交换工件的主要内容,如果未能解决你的问题,请参考以下文章

gitlab-ci 运行器中具有不同到期时间的多条路径

如何使用彼此独立的不同运行器运行 Gitlab CI 作业?

Gitlab-Runner:与多个跑步者一起运行同一个作业

不同 VM 中的 Gitlab 运行器和存储库

如何为 Gitlab 运行器启用通过 SSH 克隆?

如何在 Gitlab CI shell 运行器上构建失败