gitlab如何决定将哪个跑步者用于工作

时间:2016-04-18 17:32:54

标签: gitlab gitlab-ci gitlab-ci-runner gitlab-omnibus

如果项目有多个可用的跑步者,gitlab ci如何决定使用哪个跑步者?

我有一个omnibus gitlab 8.6.6-ee安装,配置了2个跑步者。跑者是相同的(docker图像,配置等),除了它们在不同的计算机上运行。

如果他们都处于闲置状态,并且他们中的任何一个都可以运行,那么哪一个会运行?

2 个答案:

答案 0 :(得分:5)

为了增加Rubinum的答案,“第一个”跑步者将是首先检查符合所有标准的跑步者。例如,标签可以限制运行某些作业的跑步者。

Runners每X秒查询一次gitlab服务器以检查是否有构建。如果有一个排队的队列和多个符合条件,那么第一个要求的人将获胜

更新回复评论:

运行者通过CI API http://docs.gitlab.com/ce/ci/api/builds.html进行通信以获取构建状态。这最终意味着它将基于何时完成上一个作业以及等待检查的x msx = 3来成为或多或少随机选择的跑步者。

要完全回答这个问题:

在挖掘代码并根据BM5kthis查找<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Viewer Page</title> </head> <body onload="init()"> <script type="text/javascript" language="JavaScript" src="http://localhost:8700/iportal/jsapi"></script> <script type="text/javascript" language="JavaScript"> function init() { actuate.load("viewer"); actuate.load("dialog"); actuate.initialize("http://localhost:8700/iportal", null, "administrator", null, runReport); } function runReport() { var viewer = new actuate.Viewer("viewerpane"); var manUIOptions = new actuate.viewer.UIOptions(); manUIOptions.enableToolBar(false); manUIOptions.enableFilter(true); viewer.setUIOptions(manUIOptions); viewer.setReportName("/Resources/xyz.rptdesign"); viewer.submit(getColumnAndHide); } callBackError = function(exception) { window.alert('ERROR: ' + exception); }; function getColumnAndHide(viewer) { var myTable = viewer.getCurrentPageContent().getTableByBookmark("detail"); //var myColumn=myTable.getColumnName(2); //myTable.getRow(2); myTable.submit(); } </script> <div id="viewerpane"></div> </body> </html> 秒后,信用额转到this。还发现:

  

一个Docker +机器运行器将在选择该跑步者后使用的机器)显示machine selection或多或少(有效)随机

答案 1 :(得分:2)

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

如果您想指定特定跑步者/ mashine的执行情况,请查看我的帖子here.

在我看来,如果你使用的是docker,那么不知道哪个跑步者会运行你的构建很好,因为这是跑步者/码头工人的好处。