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 检索工件,但 artifacts
和 dependencies
对于您的用例应该绰绰有余:https://docs.gitlab.com/ee/api/job_artifacts.html#get-job-artifacts
【讨论】:
以上是关于GitLab 多个运行器,交换工件的主要内容,如果未能解决你的问题,请参考以下文章