16

If there are more than one available runner for a project, how does gitlab ci decide which runner to use?

I have an omnibus gitlab 8.6.6-ee installation, with 2 runners configured. The runners are identical (docker images, config, etc) except that they are running on different computers.

If they are both idle and a job comes in that either of them could run, which one will run?

4

2 回答 2

9

添加到 Rubinum 的答案中,“第一”赛跑者将是最先签到且符合所有标准的赛跑者。例如,标签可以限制某些作业在哪些运行器上运行。

跑步者每隔 X 秒查询一次 gitlab 服务器以检查是否有构建。如果有一个构建排队并且多个满足条件,第一个询问将获胜

更新以回答评论:

Runners 通过 CI API http://docs.gitlab.com/ce/ci/api/builds.html进行通信以获取构建状态。这最终将意味着它会或多或少地根据完成最后一项工作的时间和等待检查的x数量来随机选择跑步者。ms

要完全回答这个问题:

在挖掘代码并根据thisthis找到那几秒钟后,归功于 BM5k。还发现:x = 3

一旦选择了运行器,docker+machine运行器将使用哪台机器)表明机器选择或多或少(有效)是随机的

于 2016-05-16T22:15:49.347 回答
3

Gitlab CI 将作业分配给那些可用的跑步者。如果由于忙碌而无法使用跑步者,那么 Gitlab CI 会将作业分配给其他可用的跑步者。在您的情况下,它将始终将工作分配给第一个跑步者(无论是谁)。

如果您想在特定的跑步者/mashine 上指定执行,请在此处查看我的帖子。

在我看来,如果您使用 docker,最好不知道哪个 runner 将运行您的构建,因为这是 runner/docker 架构的好处。

于 2016-05-04T12:26:37.050 回答