如果项目有多个可用的跑步者,gitlab ci如何决定使用哪个跑步者?
我有一个omnibus gitlab 8.6.6-ee安装,配置了2个跑步者。跑者是相同的(docker图像,配置等),除了它们在不同的计算机上运行。
如果他们都处于闲置状态,并且他们中的任何一个都可以运行,那么哪一个会运行?
答案 0 :(得分:5)
为了增加Rubinum的答案,“第一个”跑步者将是首先检查符合所有标准的跑步者。例如,标签可以限制运行某些作业的跑步者。
Runners每X秒查询一次gitlab服务器以检查是否有构建。如果有一个排队的队列和多个符合条件,那么第一个要求的人将获胜
更新回复评论:
运行者通过CI API http://docs.gitlab.com/ce/ci/api/builds.html进行通信以获取构建状态。这最终意味着它将基于何时完成上一个作业以及等待检查的x
ms
量x = 3
来成为或多或少随机选择的跑步者。
要完全回答这个问题:
在挖掘代码并根据BM5k和this查找<!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,那么不知道哪个跑步者会运行你的构建很好,因为这是跑步者/码头工人的好处。