我是gitlab CI的新手,对它着迷。即使使用docker容器,我也已经设法使管道正常工作,所以我熟悉设置作业和工件的流程。我现在只想了解它是如何工作的。我的问题是关于以下内容的:
跑步者
实际上一切在哪里发生?我的意思是,哪台计算机正在运行我的构建和可执行文件?我知道Gitlab有自己的共享运行器供用户使用,这是否意味着如果共享运行器抢占了我的工作,它将在托管这些运行器的任何地方运行吗?如果我在笔记本电脑中注册自己的跑步者,并使用该跑步者,我的构建版本和二进制文件将在我的计算机上运行吗?
工件
为了运行/测试代码,我们需要二进制文件,这些二进制文件从构建阶段就作为工件被抓取。例如,对于构建部分,如果我使用cmake,则在CI.yml文件的脚本部分中,创建构建目录并调用cmake ..依此类推。一旦我的工作成功,如果我想要二进制文件,我必须进入gitlab并自己检索它。所以我的问题是,一切都保存在哪里?我注意到跑步者和我的项目一起创建了refs / pipeline /之类的东西,但这实际上在哪里呢?如何在笔记本电脑中获取这些文件和新目录
工作空间 几乎所有事情都在哪里发生?跑步者,处决者,文物?
感谢您的时间
答案 0 :(得分:1)
管道中每个作业/步骤中发生的所有事情都发生在运行程序主机本身上,并且取决于您使用的执行程序(shell
,docker
等)还是直接使用Gitlab服务器。
如果您使用的是gitlab.com,则Gitlab团队会维护许多共享的运行器,您可以将其用于您的项目,但是由于与gitlab.com上的所有人共享,它们可以在您的作业运行之前的一段时间。但是,无论您是自己托管还是使用gitlab.com,都可以为项目创建自己的运行器。
如果您正在使用shell
执行程序,则在作业运行时,您可以在文件系统上的某个位置看到文件,但是在该作业完成后会清除它们。作业运行时,并不是要访问文件系统。这就是工作脚本的用途。
如果您使用的是docker
执行程序,则gitlab-runner
服务将从您在.gitlab-ci.yml
中指定的映像启动Docker实例(或使用可配置的默认值)。然后,该作业将在该docker实例中运行,并在作业完成后立即删除。
您可以在任何地方添加自己的跑步者-AWS,闲置的备用机器,甚至您的笔记本电脑,以及任何人都可以承担的工作。如果需要,您还可以关闭共享运行程序,并强制将其运行在其中一个运行程序上。
如果在构建/准备步骤后需要工件,则将其作为上述工作的一部分在运行器上创建,但是运行器会自动将工件上传到gitlab服务器(或实现S3的其他服务)协议,例如AWS S3或Minio)。除非您使用的是S3 / minio,否则只能通过gitlab UI界面或API进行访问。但是,在用户界面中,它将显示在任何相关的MR以及“管道”页面上,因此相当容易访问。