gecko_taskgraph.optimize 包

子模块

gecko_taskgraph.optimize.backstop 模块

class gecko_taskgraph.optimize.backstop.SkipUnlessAndroidPerftestBackstop

基类:OptimizationStrategy

始终移除任务,除了在 backstop 推送时。

should_remove_task(task, params, _)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.backstop.SkipUnlessBackstop

基类:OptimizationStrategy

始终移除任务,除了在 backstop 推送时。

should_remove_task(task, params, _)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.backstop.SkipUnlessPushInterval(push_interval, remove_on_projects=None)

基类:OptimizationStrategy

始终移除任务,除了每 N 次推送时。

参数:

push_interval (int) – 推送次数

property description
should_remove_task(task, params, _)

确定是否通过移除来优化此任务。返回 True 表示移除。

gecko_taskgraph.optimize.bugbug 模块

class gecko_taskgraph.optimize.bugbug.BugBugPushSchedules(confidence_threshold, tasks_only=False, use_reduced_tasks=False, fallback=None, num_pushes=1, select_configs=False)

基类:OptimizationStrategy

查询“bugbug”服务以检索相关任务和清单。

参数:
  • confidence_threshold (float) – 任务需要安排的最小置信度阈值(范围在 [0, 1] 内)。

  • tasks_only (bool) – 是否仅使用任务而不使用组(默认值:False)

  • use_reduced_tasks (bool) – 是否使用 bugbug 服务提供的简化任务集(默认值:False)。

  • fallback (str) – 如果 bugbug 出现故障,则使用备用策略(默认值:None)

  • num_pushes (int) – 要考虑选择的推送次数(默认值:1)。

  • select_configs (bool) – 是否也为清单选择配置(默认值:False)。

should_remove_task(task, params, importance)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.bugbug.DisperseGroups(target_counts=None, unseen_modifier=1)

基类:OptimizationStrategy

在测试配置之间分散组。

每个任务都关联一个通过参数传递的“importance”字典。其格式为 {<group>: <importance>}

其中“group”是测试组 ID(通常是清单的路径),而“importance”是 {‘lowest’, ‘low’, ‘medium’, ‘high’} 中的一个。

每个重要性值都关联一个在 self.target_counts 中定义的“count”。它保证“manifest”至少会在“count”个不同的配置中运行(假设存在足够包含“manifest”的任务)。

在之前从未见过的配置上,我们将通过 self.unseen_modifier 增加目标计数,以增加在此配置上安排任务的可能性。

参数:
  • target_counts (dict) – 使用自定义计数覆盖 DEFAULT_TARGET_COUNTS。这是一个将重要性值(“lowest”、“low”等)映射到清单具有此值的最小配置数量的字典。

  • unseen_modifier (int) – 将 DEFAULT_UNSEEN_MODIFIER 覆盖为自定义值。这是我们将为未见过的配置增加“target_count”的数量。

DEFAULT_TARGET_COUNTS = {'high': 3, 'low': 1, 'lowest': 0, 'medium': 2}
DEFAULT_UNSEEN_MODIFIER = 1
should_remove_task(task, params, importance)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.bugbug.SkipUnlessDebug

基类:OptimizationStrategy

仅运行调试平台。

should_remove_task(task, params, arg)

确定是否通过移除来优化此任务。返回 True 表示移除。

gecko_taskgraph.optimize.bugbug.merge_bugbug_replies(data, new_data)

将 bugbug 回复(存储在 new_data 参数中)合并到另一个回复中(存储在 data 参数中)。

gecko_taskgraph.optimize.mozlint 模块

class gecko_taskgraph.optimize.mozlint.SkipUnlessMozlint(linters_path: str)

基类:OptimizationStrategy

mozlint 测试的优化策略。

使用每个测试的 mozlint YAML 文件来确定是否应该运行测试。

使用方法
  • 优化依赖于在决策任务参数中设置 files_changed

  • 使用 register_strategy 注册。参数是 MozLint YAML 配置文件的路径(对于 mozilla-central,为“/tools/lint”)

  • 在 source-test/mozlint.yml 中,通过文件名设置每个作业的优化策略

  • 对于一次运行多个 linter 的 Mozlint 作业,请使用文件名列表

should_remove_task(task, params, mozlint_confs: str | List[str]) bool

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.mozlint.TGMozlintParser(root)

基类:Parser

跳过验证的 Mozlint 解析器。这是必需的,因为决策任务使用稀疏克隆,并且文件本身不存在。

gecko_taskgraph.optimize.schema 模块

gecko_taskgraph.optimize.schema.set_optimization_schema(schema_tuple)

设置优化方案,以便任务转换可以导入。此函数由扩展 Firefox 任务图的项目调用。它应该在导入任何传输或作业运行程序代码之前,由项目的 taskgraph:register 函数调用。

参数:

schema_tuple (tuple) – 可能的优化策略元组

gecko_taskgraph.optimize.strategies 模块

class gecko_taskgraph.optimize.strategies.SkipUnlessChanged

基类:OptimizationStrategy

check(files_changed, patterns)
should_remove_task(task, params, file_patterns)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.strategies.SkipUnlessHasRelevantTests

基类:OptimizationStrategy

优化不运行修改文件的子目录中的任何测试的任务。

get_changed_dirs(files_changed)
should_remove_task(task, params, _)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.strategies.SkipUnlessMissing

基类:OptimizationStrategy

除非任务在指定的索引中缺失,否则跳过该任务。

这只是委托给 Taskgraph 的 index-search 优化。我们需要这个 shim 的原因是替换和移除优化不能在复合策略中组合在一起,因为移除和替换发生在不同的时间。

should_remove_task(task, params, index)

确定是否通过移除来优化此任务。返回 True 表示移除。

class gecko_taskgraph.optimize.strategies.SkipUnlessSchedules

基类:OptimizationStrategy

scheduled_by_push(files_changed)
should_remove_task(task, params, conditions)

确定是否通过移除来优化此任务。返回 True 表示移除。

模块内容

优化的目标是从图中尽可能多地移除任务,并尽可能高效地完成,从而尽快交付有用的结果。例如,理想情况下,如果仅在推送中修改了一个测试脚本,则生成的图仅包含相应的测试套件任务。

有关更多信息,请参阅 taskcluster/docs/optimization.rst

class gecko_taskgraph.optimize.ExperimentalOverride(base, overrides)

基类:object

使用新值覆盖存储在容器中的字典。

这可以用于以相同的方式修改集合中的所有策略,大概是用影响与当前上下文相关的任务类型的策略。

参数:
  • base (object) – 支持属性访问的容器类。

  • overrides (dict) – 用于更新任何访问的字典的值。

class gecko_taskgraph.optimize.experimental

基类:object

正在开发中或用作基准的实验性策略。

这些会在每个 autoland 推送(第 3 层)上作为“影子调度程序”运行,并且可以与 ./mach try auto 一起使用。例如

./mach try auto –strategy relevant_tests

bugbug_debug_disperse = {'test': <taskgraph.optimize.base.Any object>}

将测试限制在调试平台。

bugbug_disperse_high = {'test': <taskgraph.optimize.base.Any object>}

在平台之间分散测试,高置信度阈值。

bugbug_disperse_low = {'test': <taskgraph.optimize.base.Any object>}

在平台之间分散测试,低置信度阈值。

bugbug_disperse_medium = {'test': <taskgraph.optimize.base.Any object>}

在平台之间分散测试,中等置信度阈值。

bugbug_disperse_medium_no_unseen = {'test': <taskgraph.optimize.base.Any object>}

在平台之间分散测试(未修改的配置未查看),中等置信度阈值。

bugbug_disperse_medium_only_one = {'test': <taskgraph.optimize.base.Any object>}

在平台之间分散测试(每组一个平台),中等置信度阈值。

bugbug_disperse_reduced_medium = {'test': <taskgraph.optimize.base.Any object>}

在平台之间分散测试,中等置信度阈值,并减少任务。

bugbug_reduced = {'test': <taskgraph.optimize.base.Any object>}

使用 bugbug 选择的减少的任务集(并且没有组)。

bugbug_reduced_high = {'test': <taskgraph.optimize.base.Any object>}

使用 bugbug 选择的减少的任务集(并且没有组),高置信度阈值。

bugbug_reduced_manifests_config_selection_low = {'test': <taskgraph.optimize.base.Any object>}

选择 bugbug 选择的配置,低置信度阈值,并减少任务。

bugbug_reduced_manifests_config_selection_medium = {'test': <taskgraph.optimize.base.Any object>}

选择 bugbug 选择的配置,中等置信度阈值,并减少任务。

bugbug_tasks_high = {'test': <taskgraph.optimize.base.Any object>}

不限制平台,高置信度阈值。

bugbug_tasks_medium = {'test': <taskgraph.optimize.base.Any object>}

不限制平台,中等置信度阈值。

relevant_tests = {'test': <taskgraph.optimize.base.Any object>}

运行包含与修改文件位于相同目录中的测试的任务。

class gecko_taskgraph.optimize.project

基类:object

每个项目都应该应用的策略。

autoland = {'build': <taskgraph.optimize.base.All object>, 'test': <taskgraph.optimize.base.Any object>}

应用于 autoland 的策略覆盖。

gecko_taskgraph.optimize.split_bugbug_arg(arg, substrategies)

拆分基于 bugbug 的策略的参数。

许多基于 bugbug 的优化需要通过引用传递一个空字典来与下游策略进行通信。此函数将提供的 arg 传递给第一个(非 bugbug)策略,并将一个共享的空字典传递给 bugbug 策略及其之后的全部子策略。