任务属性

任务可以被过滤,例如支持“try”推送,它只执行任务图的一个子集,或者链接相关的任务。这种过滤是完整任务图和目标任务图之间的区别。

过滤基于属性进行。每个任务都有一个属性字典,并且可以使用 Python 表达对这些属性的过滤。一个任务可能不包含所有属性的值。

此处定义了属性及其可接受的值。一般来说,属性名称和值都使用简短的小写形式,并使用下划线分隔。

类型

任务的 kind 属性给出了生成它的类型的名称,例如 buildspidermonkey

运行的项目

此任务应包含在目标任务集中的项目。这就是“仅在 autoland 上运行此任务”之类的需求如何实现的。

注意

请使用此配置。为所有项目运行作业可能会快速增加成本,而不会为某些项目提供任何价值。

run-on-projects 可以使用别名或项目名称。

这些是别名

  • integration – 集成仓库 (autoland)

  • trunk – 集成仓库加上 mozilla-central

  • release – 发布仓库 (beta、release、esr),包括 mozilla-central

  • all – 所有地方(默认值)

项目名称是仓库。它们可以是

  • autoland

  • mozilla-central

  • mozilla-beta

  • mozilla-release

  • mozilla-esr128

  • … 在 taskcluster/gecko_taskgraph/util/attributes.py 中可以找到部分列表。

对于 try,此属性仅在指定了 -p all 时才适用。所有作业都可以按名称指定,而不管 run_on_projects 如何。

如果 run_on_projects 设置为空列表,则任务将不会在任何地方运行,除非在 try 语法中明确指定了其构建平台。

注意

由于 try 推送在设计上不使用 filter_for_projects,因此无法定义任务将在 try 上运行。

注意

给定的任务 [taskA] 可能不会遵守 run-on-projects,如果存在另一个计划运行的任务 [taskB](例如通过 run-on-projects),并且它依赖于 [taskA]。因为 TaskB 运行的本质要求我们运行 TaskA

请参阅 bug 1640603 作为示例。

运行的 Mercurial 分支

在给定的项目上,此任务应包含在目标任务集中的 Mercurial 分支。这就是“仅在 RELBRANCH 上运行此任务”之类的需求如何实现的。这些是分支的正则表达式(例如:GECKOVIEW_\d+_RELBRANCH)或以下别名

  • all – 所有地方(默认值)

run_on_projects 类似,如果将其设置为空列表,则适用相同的行为。

任务副本

这用于指示我们希望创建任务的多个副本。此功能用于跟踪间歇性作业失败。

如果此值设置为 N,则任务创建机制将创建总共 N 个任务副本。虽然所有任务都将包含在同一个 taskGroup 中,但只有第一个副本将包含在 taskgraph 输出构件中。

虽然大多数属性被视为只读,但目标任务方法可能会更改它们包含在目标集中的任务的此属性。

构建平台

构建平台定义了为其构建二进制文件的平台。它既设置用于构建作业,也设置用于测试作业,尽管测试作业可能具有不同的 test_platform

构建类型

正在执行的构建类型。这是 build_platform 的一个细分,用于针对同一平台的不同类型的构建。值为

  • 调试

  • 优化

测试平台

测试平台定义了运行测试的平台。它仅为测试作业定义,并且当在多个平台上测试相同的二进制文件时(例如,在 Windows 的多个版本上),它可能与 build_platform 不同。这适用于 Talos 和单元测试。

与 build_platform 不同,测试平台以斜杠分隔的格式表示,例如 linux64/opt

单元测试套件

这是在单元测试任务中运行的单元测试套件。例如,mochitestcppunittest

单元测试类别

这是套件对应的高级测试类别。这通常是用于运行套件的测试工具。

单元测试 Try 名称

这是通过 try 语法引用单元测试的名称。它可能与 unittest_suite 不匹配。

单元测试变体

测试套件正在运行的配置变体。如果设置,这通常意味着测试正在运行时启用了特殊的首选项。这些定义在 taskgraph.transforms.test.TEST_VARIANTS 中。

Talos Try 名称

这是通过 try 语法引用 Talos 作业的名称。

Raptor Try 名称

这是通过 try 语法引用 Raptor 作业的名称。

作业 Try 名称

这是通过 try 语法 (-j) 引用“作业”的名称。请注意,对于某些类型,-j 也匹配 build_platform

测试片段

这是分段测试套件的片段编号。请注意,这是一个字符串!

测试清单

在此任务中运行的测试清单列表。

镜像名称

对于 docker_image 类型,此属性包含 Docker 镜像名称。

夜间构建

指示任务是否为夜间构建图的一部分。在目标阶段从完整任务集中过滤掉夜间构建任务时很有用。

可发布

指示任务是否被认为是“可发布的”,即它应该被签名并且可以用于夜间构建或发布。

所有语言环境

对于 l10nshippable-l10n 类型,此属性包含平台的相关语言环境列表。

包含变更集的所有语言环境

包含语言环境变更集的字典,按语言环境映射(与 all_locales 中相同)。

语言环境片段

对于 l10nshippable-l10n 类型,此属性包含作业的片段编号。请注意,这是一个字符串!

片段语言环境

对于 l10nshippable-l10n 类型,此属性包含一个数组,其中包含此块负责处理的各个语言环境。

locale

对于仅在一个语言环境中运行的作业,我们将属性 locale 设置为所涉及的特定语言环境。目前,这仅存在于 beetmoverbalrog 类型的 l10n 版本中。

signed

表示此任务的输出包含已签名的工件。

stub-installer

向构建系统发出信号,表明此构建预计会存在一个存根安装程序,并通知后续任务预期它。

repackage_type

这是重新打包的类型。可以是 repackagerepackage_signing

fetch-artifact

对于获取作业,这是该获取操作的工件路径。

fetch-alias

一个别名,可以在作业的获取节中代替实际的获取作业名称使用。

toolchain-artifact

对于工具链作业,这是该工具链的工件路径。

toolchain-alias

一个别名,可以在作业的获取节中代替实际的工具链作业名称使用。

toolchain-env

获取此工具链时将在工作程序上设置的额外环境变量。

toolchain-command

一个额外的属性,用于向构建系统引导代码传达用于构建工具链的命令。这很有用,因为命令的格式因工作程序类型而异,有时不便于事后解析。

always_target

如果 parameters["tasks_for"]hg-push,则具有此属性的任务将包含在 target_task_graph 中,而不管发生任何目标任务筛选。当以这种方式包含任务时(即,否则它会被过滤掉),即使 optimize_target_tasks 参数为 False,它也会被考虑进行优化。

这旨在用于开发人员几乎总是希望运行的任务。通常,这些任务的运行时间较短,并且存在较高的回退风险。例如 lintpython-unittest 任务。

shipping_product

对于发布推广作业,这是我们正在发布的产品。

shipping_phase

对于发布推广作业,这是发布阶段(构建、提升、推送、发布)。在构建阶段,我们构建并签署可交付构建。在提升阶段,我们生成 l10n 重新打包并推送到候选目录。在推送阶段,我们推送到发布目录。在发布阶段,我们更新 bouncer,推送到 Google Play,版本递增,并在 ship-it 中标记为已发布。

使用“雪人模型”,如果定义了先前的图,我们将依赖于它们。因此,如果我们请求 push(雪人的头部)并指向主体和底部,我们只会构建头部。如果我们不指向主体和底部,我们将构建整个雪人(构建、提升、推送)。

artifact_prefix

大多数 Taskcluster 工件是公开的,因此我们在很多地方都硬编码了 public/build。为了支持私有工件,我们已将其移动到 artifact_prefix 属性中。它将默认为 public/build,但可以按任务覆盖。

artifact_map

对于 beetmover 作业,这指示应使用哪个 yaml 文件来生成上游工件和到任务的有效负载说明。

release_artifacts

一组作为下游发布任务操作候选的工件。

batch

perftest 使用,表示任务可以作为批处理运行。

enable-full-crashsymbols

在自动化中,通常禁用完整崩溃符号包的生成。对于应启用完整崩溃符号的构建类型,将此属性设置为 True。然后将在发布分支和尝试上生成并上传完整的符号包。

skip-upload-crashsymbols

可交付/每日构建通常需要设置 enable-full-crashsymbols,但在某些有限的极端情况下(通用构建),这并不需要,因为符号已经独立上传。

upload-generated-sources

生成的源通常仅针对可交付/每日构建上传到 S3。此属性为其他构建(如统一之前的 macosx)打开了此功能。

cron

指示任务旨在通过 cron 任务运行,并且不应在推送时运行。

cached_task

某些任务生成在推送之间缓存的工件。这是一个字典,包含缓存的类型和名称,以及用于标识工件当前版本的唯一字符串。请参阅 taskgraph.util.cached_task

cached_task:
    digest: 66dfc2204600b48d92a049b6a18b83972bb9a92f9504c06608a9c20eb4c9d8ae
    name: debian7-base
    type: docker-images.v2

eager_indexes

要在任务完成之前填充的索引字符串列表。对于某些任务(例如缓存任务),我们希望它们在甚至运行/完成之前就存在于索引中。我们当前的使用方式是允许我们在将来的推送中依赖于未完成的缓存任务。这避免了多个任务运行带来的额外开销,并且可以让我们稍早获得结果。

required_signoffs

此类型所需的发布签核列表,如果发布也需要这些签核。例如,将来某些发布可能需要 mar-signing 签核;对于任何需要 mar-signing 签核的发布,也需要该签核的类型都用此属性标记。

update-channel

构建配置为使用的更新渠道。

mar-channel-id

构建配置为使用的 mar-channel-id。

accepted-mar-channel-ids

此构建将接受更新到的 mar-channel-id。它通常应与 mar_channel_id 的值相同。如果需要多个 ID,则应使用逗号分隔的值列表。

openh264_rev

仅用于 openh264 插件构建,用于表示给定构建的修订版(从而告知工件名称)。

code-review

如果任务将此布尔属性设置为 true,则代码审查机器人将对其进行处理,任务将针对每个新的 Phabricator diff 运行。任何受支持和检测到的问题都将自动报告在 Phabricator 修订版上。

retrigger

任务是否可以重新触发,或者是否需要重新运行。

disable-push-apk

一些仅限 GeckoView 的 Android 任务会生成不应推送到 Google Play 商店的 APK。将其设置为 true 以禁用推送。

disable-build-signing

一些仅限 GeckoView 的任务会生成 APK,但不是应该签名的 APK。将其设置为 true 以禁用 APK 签名。

enable-build-signing

我们为 shippablenightlyenable-build-signing 任务启用构建签名。

run-visual-metrics

如果设置为 true,将在提供的视频文件上运行视觉指标任务。

skip-verify-test-packaging

如果设置为 true,则不会检查此任务以查看 MOZ_AUTOMATION_PACKAGE_TESTS 是否根据任务是否有依赖项测试正确设置。这仅应在非常独特的情况下使用,例如复制构建任务之间测试包的 Windows AArch64 构建。

geckodriver

如果非空,则声明(工具链)任务是一个 geckodriver 任务,该任务会生成应签名的二进制文件。

rebuild-on-release

如果为 true,则此任务的摘要也将取决于分支是否是发布分支。这将导致诸如工具链之类的任务在从例如 autoland 移动到 mozilla-central 时重新构建。

local-toolchain

此工具链用于本地开发,因此应在 trunk 上构建,即使它没有任何图内使用者。

artifact-build

此构建是工件构建。

这有意排除使用工件构建机制实现但并非主要旨在缩短构建时间的构建。特别是 Windows aarch64 构建不会以这种方式标记。

maven_packages

构建产生的 Maven 包列表。

supports-artifact-builds

如果为 false,则任务需要编译后的构建,并且不适用于工件构建。

primary-kind-dependency

对于从一组依赖项派生的任务,此属性表示哪个依赖项类型是 主要类型

通常,这由 taskgraph.transforms.from_deps 变换设置。

snap_test_type

对于 Snap 测试任务,用于区分任务标签

snap_test_release

对于 Snap 测试任务,用于通过发行版区分任务标签

build-type

对于 Android 构建,构建类型:通常为调试、每日、测试版、发布版。

component

对于 android-components 构建,组件的名称。

apks

对于 Android apk 构建任务,apk 工件名称列表。

aab

对于 Android aab 构建任务,aab 工件名称。

release-type

对于 Android 构建,发布类型:通常为调试、每日、测试版、发布版。

shipping-product

对于 Android 任务,发布产品:Fenix、Focus 或 android-component 名称。

artifacts

对于 android-components 任务,一个将扩展名映射到工件名称的字典。

is_final_chunked_task

由 taskcluster.android_taskgraph.transforms.chunk 使用,用于标记块组中的最后一个任务。

legacy

由 Fenix UI 测试使用,用于在旧版 Android 设备和 API 级别上选择 UI 测试。

nightly-test

Fenix 浏览器性能测试使用此标签将任务标记为 nightly-test 图的一部分。

screenshots

Fenix UI 测试使用此标签将任务标记为 screenshots 图的一部分。

abi

Android 浏览器性能测试任务使用此标签跟踪正在测试产品的 abi。

apk

Android 浏览器性能测试任务使用此标签跟踪正在测试产品的 apk 路径。

test-manifests

在此任务中运行的测试清单列表。

lull-schedule

性能任务使用此标签以尽力而为的方式按指定频率安排任务。当给定平台的整体 CI 负载较低时,安排这些任务。在字符串中使用“w”表示周,“d”表示天,“h”表示小时,“m”表示分钟,例如 1d、1w 4h、2w 4d 1h 来指定调度频率。

this_chunk

源代码测试使用此标签支持分块并指定当前块。

total_chunks

源代码测试使用此标签支持分块并指定块的总数。

toolchain-extract

控制是否应在下载后自动提取工具链。