关于 gitlab CI 跑步者

About gitlab CI runners

我是gitlab的新手CI,我对它很着迷。即使使用 docker 容器,我已经设法让管道工作,所以我熟悉设置作业和工件的流程。我现在只想了解这是如何工作的。我的问题是关于以下内容:

跑步者

实际上一切都发生在哪里?我的意思是,哪台计算机正在 运行 构建我的构建和可执行文件?我知道 Gitlab 有自己的共享 运行ners 可供用户使用,这是否意味着如果共享 运行ners 抢走了我的工作,它会去 运行 那些 运行托管者?如果我在笔记本电脑上注册自己的 运行ner,并使用那个特定的 运行ner,我的构建和二进制文件将在我的计算机上 运行?

工件

为了 run/test 代码,我们需要二进制文件,它们从构建阶段就作为工件被抓取。对于构建部分,如果我使用 cmake,例如,在 CI.yml 文件的脚本部分,我创建一个构建目录并调用 cmake .. 等等。一旦我的工作成功,如果我想要二进制文件,我必须进入 gitlab 并自己检索它。所以我的问题是,一切都保存在哪里?我注意到 运行ner 在我的项目中创建了类似 refs/pipeline/ 的东西,但这实际上在哪里?我怎样才能在我的笔记本电脑中获取这些文件和新目录

工作space 差不多,一切都发生在哪里? 运行人员、执行、工件?

感谢您的宝贵时间

管道中每个 job/step 中发生的一切都发生在 运行ner 主机本身上,并且取决于您使用的执行程序(shelldocker,等),或者直接在Gitlab服务器上.

如果您使用 gitlab.com,他们有许多共享的 运行Gitlab 团队维护的人,您可以将其用于您的项目,但因为他们与gitlab.com 上的每个人,可能需要一段时间才能 运行。但是,无论您是自行托管还是使用 gitlab.com,您都可以创建自己的 运行 特定于您的项目的用户。

如果您正在使用 shell 执行器,当作业正在 运行ning 时,您可以在文件系统的某个地方看到文件,但在该作业完成后它们会被清除。在作业 运行ning 期间访问文件系统并不是真正的目的。这就是作业脚本的用途。

如果您正在使用 docker 执行器,gitlab-runner 服务将从您在 .gitlab-ci.yml 中指定的映像启动一个 docker 实例(或使用默认这是可配置的)。然后该作业在 docker 实例中 运行,作业完成后立即删除。

您可以在任何地方添加自己的 运行ners -- AWS、闲置的备用机器,甚至是您的笔记本电脑,他们中的任何一个都可以接手工作。如果需要,您还可以关闭共享 运行ners 并强制将其 运行 用于您的 运行ners 之一。

如果您在 build/preparatory 步骤后需要工件,它会作为上述作业的一部分在 运行ner 上创建,但随后 运行ner 会自动上传gitlab 服务器(或其他实现 S3 协议的服务,如 AWS S3 或 Minio)的工件。除非你使用 S3/minio,否则只能通过 gitlab UI 接口或通过 API 访问它。然而,在 UI 中,它会出现在任何相关的 MR 以及管道页面上,因此它很容易访问。