Buildbot:触发虚拟建造者问题
Buildbot: trigger virtual builders problem
我希望动态触发构建器(取决于传入项目的支持平台列表)。
有 virtual builders 个用于此目的。
它确实有效,但存在一个关键问题:
当我触发的虚拟构建数量超过空闲工作人员数量时,其他构建将被跳过。
在下面的图片中,一名活跃的工作人员触发了 4 个构建
成功后,我们只能看到两个已执行的构建。其他都丢了(根本没有执行)
同样,对于 1 个空闲(活动的,未暂停的)工作人员,仅执行了 2 个(共 4 个)触发的构建。对于 N 个免费工作人员,它将执行 N+1 个构建。复制 100%.
代码很清楚
class MultiplePlatformsBuilder(Trigger):
def __init__(self, *args, **kwargs):
...
def getSchedulersAndProperties(self):
sch = self.schedulerNames[0]
triggered_schedulers = []
counter = 0
# trigger scheduler for each requested platform
platforms_list = self.set_properties.get('buildable_platforms_list')
for pl in platforms_list:
counter += 1
props = dict()
props["virtual_builder_name"] = "virtual-" + pl
props["virtual_builder_description"] = "This is dynamic build " + str(counter)
triggered_schedulers.append([sch, props])
return triggered_schedulers
# trigger configuration
c['schedulers'].append(schedulers.Triggerable(name='dynamic_scheduler', builderNames=['factory1']))
factory.addStep(MultiplePlatformsBuilder(
schedulerNames=['dynamic_scheduler'],
set_properties={
'buildable_platforms_list': ["platform1", "platform2", "platform3", "platform4"]
# platforms_list_var: Property(platforms_list_var),
},
))
这个问题花了我好几天时间。事实证明这不是错误,而是名为 Collapsing Build Requests
的功能
如果没有空闲工作人员,所有具有相同代码库的构建请求都会崩溃。
我只需要禁用此功能即可:
c['collapseRequests'] = False
我确定这应该在虚拟构建器的上下文中提及,因为它们都有相同的代码库但不应折叠 - 这没有意义
我希望动态触发构建器(取决于传入项目的支持平台列表)。 有 virtual builders 个用于此目的。 它确实有效,但存在一个关键问题: 当我触发的虚拟构建数量超过空闲工作人员数量时,其他构建将被跳过。
在下面的图片中,一名活跃的工作人员触发了 4 个构建
成功后,我们只能看到两个已执行的构建。其他都丢了(根本没有执行)
同样,对于 1 个空闲(活动的,未暂停的)工作人员,仅执行了 2 个(共 4 个)触发的构建。对于 N 个免费工作人员,它将执行 N+1 个构建。复制 100%.
代码很清楚
class MultiplePlatformsBuilder(Trigger):
def __init__(self, *args, **kwargs):
...
def getSchedulersAndProperties(self):
sch = self.schedulerNames[0]
triggered_schedulers = []
counter = 0
# trigger scheduler for each requested platform
platforms_list = self.set_properties.get('buildable_platforms_list')
for pl in platforms_list:
counter += 1
props = dict()
props["virtual_builder_name"] = "virtual-" + pl
props["virtual_builder_description"] = "This is dynamic build " + str(counter)
triggered_schedulers.append([sch, props])
return triggered_schedulers
# trigger configuration
c['schedulers'].append(schedulers.Triggerable(name='dynamic_scheduler', builderNames=['factory1']))
factory.addStep(MultiplePlatformsBuilder(
schedulerNames=['dynamic_scheduler'],
set_properties={
'buildable_platforms_list': ["platform1", "platform2", "platform3", "platform4"]
# platforms_list_var: Property(platforms_list_var),
},
))
这个问题花了我好几天时间。事实证明这不是错误,而是名为 Collapsing Build Requests
的功能如果没有空闲工作人员,所有具有相同代码库的构建请求都会崩溃。
我只需要禁用此功能即可:
c['collapseRequests'] = False
我确定这应该在虚拟构建器的上下文中提及,因为它们都有相同的代码库但不应折叠 - 这没有意义