在我们实现持续集成的步骤中,我们将构建作业分为两部分:
目标是始终让第一个在不到10分钟的时间内完成,并且只包含构建,单元测试和部署到工件库。第二个也可能需要几个小时。
目前我们有一个处理一切的主人,没有奴隶。主人有两个执行人。这不能改变。
我想做的是让沉重的人等待两个插槽打开,以确保总有一个执行器可用于快速运行的任务。
沉重可能会跑:
FastJob: -------xxxxxxxx---------xxxxx-------xxxxx------xxxxxxx-
LongJob: ---xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-----------------
沉重必须等待:
FastJob: --xxxxxx--xxxxxxxx---------xxxxx-------xxxxx-----------
LongJob: ---wwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-----------
--- = nothing
xxx = executing build
www = waiting
我已经查看了Heavy Job Plugin,但是这并没有解决这个问题,因为它后来阻止了两个执行程序。繁重的工作应该等到两个执行者都有空,然后才能阻止一个。
另见follow up question关于x%遗嘱执行人的保留。
答案 0 :(得分:1)
好吧,当Build Blocker Plugin运行任何其他作业时,您可以阻止$response = $client->get("users/$username")->send();
$response = $client->get('users/' . $username)->send();
:
如果当前正在运行的作业的至少一个名称与给定的正则表达式之一匹配,则此插件会将实际作业保留在队列中。
LongJob
在两个执行程序都可用之前不会运行。