任务类型

本节列出并记录了可用的任务类型。

构建

构建是生成安装程序或其他输出的任务,这些输出可以由用户或自动化测试运行。这比 Mozilla 上下文中“构建”的大多数定义更严格:它不包括为静态分析或生成检测工件而运行类似构建操作的任务。

构建胖 AAR

构建与架构无关的 GeckoView AAR(Android ARchive)文件。此类似构建的任务是工件构建(ARMv7,但这只是任意示例),它本身依赖于特定于架构的 Android 构建作业。它获取特定于架构的 AAR 文件,提取特定于架构的库和首选项文件,然后组装一个多架构“胖 AAR”。预期下游使用者将使用每个 ABI 功能拆分来生成特定于架构的 APK。

如果要本地运行此任务,则需要指定以下环境变量
  • MOZ_ANDROID_FAT_AAR_ARCHITECTURES:必须是架构的逗号分隔列表。例如:“armeabi-v7a,arm64-v8a,x86,x86_64”。

  • MOZ_ANDROID_FAT_AAR_ARM64_V8A、MOZ_ANDROID_FAT_AAR_ARMEABI_V7A、MOZ_ANDROID_FAT_AAR_X86、MOZ_ANDROID_FAT_AAR_X86_64 中的每一个都必须是相对于 MOZ_FETCHES_DIR 的路径。

构建签名

许多构建都必须签名。构建签名任务获取未签名的“构建”类型工件,并通过 signingscriptworker 传递到签名服务器,并返回已签名的结果。

构建 Mac 签名

无需公证的 Mac 签名。

在 1 级环境中使用自签名证书。

可发布的下游任务应使用 build-mac-notarization 中的工件。

构建 Mac 公证

在 signingscript(Linux)上使用 rcodesign 进行 Mac 公证。

仅在生产环境中可用,因为 Apple 未提供用于对应用进行公证的测试端点。

在下游任务中,在不可发布的构建或 1 级环境中切换到 build-mac-signing。

工件构建

此类型执行工件构建:一个基于通过 TaskCluster 索引发现的预编译二进制文件的构建。此任务验证此类构建是否继续正常工作。

引导

此类型执行 Firefox 构建的独立引导,来自各种系统环境。

危险

危险构建类似于“常规”构建,但使用编译器扩展从构建中提取大量数据,然后分析这些数据以查找危险行为。

本地化

l10n 类型获取最新发布的 nightly 构建,并从中生成本地化构建。您可以在wiki上阅读有关如何在其中触发这些构建的更多信息。

可发布本地化

nightly l10n 类型重新打包特定的 nightly 构建(来自相同的源代码)以提供相同源代码的本地化版本。

可发布本地化签名

可发布本地化签名类型获取可发布本地化类型的工件,并将它们传递到签名服务器,以根据适当的签名格式对其内容进行适当签名。为每个可发布本地化作业(通常是分块的)创建一个签名作业。

可发布本地化 Mac 签名

无需公证的 Mac 签名。

在 1 级环境中使用自签名证书。

可发布的下游任务应使用 build-mac-notarization 中的工件。

可发布本地化 Mac 公证

在 signingscript(Linux)上使用 rcodesign 进行 Mac 公证。

仅在生产环境中可用,因为 Apple 未提供用于对应用进行公证的测试端点。

在下游任务中,在不可发布的构建或 1 级环境中切换到 build-mac-signing。

源代码测试

源代码测试是直接从 Gecko 源代码运行的任务。这可能包括 lint 检查、单元测试、源代码分析或测量工作。虽然源代码测试任务从源代码检出中运行,但它们仍然可能依赖于构建工件,尽管通常它们不依赖。

代码审查

在 Phabricator 上发布源代码测试任务发现的问题。这是发布管理代码审查机器人的一部分。

上传符号

上传符号任务在构建后运行,并将构建任务生成的符号文件上传到 Socorro,以便以后在崩溃分析中使用。

上传符号(虚拟)

上传符号(虚拟)确保为 nightly 和发布版本运行 x64 和 macosx64 任务。

上传生成源代码

上传生成源代码任务在构建后运行,并将作为构建过程一部分生成的源文件上传到 s3 存储桶,以便以后在崩溃报告中的链接中使用或在调试已发布的构建时使用。

上传生成源代码(虚拟)

上传生成源代码(虚拟)确保为 nightly 和发布版本运行 x64 和 macosx64 任务。

Valgrind

Valgrind 任务生成由 valgrind 检测的构建。

Searchfox

Searchfox 构建生成 Searchfox 的 C++ 索引数据。

静态分析自动化测试

静态分析自动化测试实用程序,以确保在升级影响静态分析的实用程序时不会出现回归。

工具链

工具链构建创建用于构建 Firefox 的编译器工具链。这些最终将成为构建本身的依赖项,但目前是通过 try 推送手动运行,并将结果上传到 tooltool。

SpiderMonkey

SpiderMonkey 任务检出完整的 gecko 源代码树,然后仅编译 SpiderMonkey 部分。每个任务在构建后运行特定的测试。

测试

有关更多信息,请参阅测试类型文档

Docker 镜像

类型为docker-image的任务构建其他 Docker 任务在其上运行的 Docker 镜像。

生成每个 Docker 镜像的任务具有可预测的标签:docker-image-<name>

Docker 镜像从taskcluster/docker的子目录构建,使用docker build。目前,没有一个 Docker 镜像依赖于另一个树内 Docker 镜像的功能,而无需将后者上传到 Docker 存储库。

Balrog

Balrog 任务负责将元数据提交到我们的更新服务器 (Balrog)。它们通常位于 beetmover 作业的下游,beetmover 作业将签名的 MAR 移动到某个位置(例如:发行版的 beetmover 和 beetmover-l10n,以及 nightly 版本的 beetmover-repackage)。

beetmover

Beetmover 获取特定的工件,“Beets”,并将它们推送到 Taskcluster 任务工件外部的位置(例如 archive.mozilla.org),并在过程中确定最终位置和“漂亮”名称(版本化的产品名称)。

beetmover-l10n

Beetmover L10n 获取特定的工件,“Beets”,并将它们推送到 Taskcluster 任务工件外部的位置(例如 archive.mozilla.org),并在过程中确定最终位置和“漂亮”名称(版本化的产品名称)。这种单独的类型使用特定于本地化工件的逻辑,例如在最终工件名称中包含语言。

beetmover-repackage

Beetmover-repackage 是 beetmover,但适用于在签名和打包之间需要中间步骤的任务,例如 OSX。有关更多详细信息,请参阅上面 Beetmover 类型的定义和下面 repackage 类型的定义。

release-beetmover-push-to-release

release-beetmover-push-to-release 将候选目录中提升的发行版发布到发行版目录。这是发行版提升的一部分。

beetmover-source

Beetmover-source 发布发行版源代码。这是发行版提升的一部分。

beetmover-geckoview

Beetmover-geckoview 发布名为“geckoview”的 Android 库。

beetmover-apt

Beetmover-apt 将 Mozilla 存档中的 Linux .deb 包发布到我们的 APT 存储库。

condprof

condprof 创建和更新逼真的配置文件。

release-source-checksums-signing

release-source-checksums-signing 以与源相关的 beetmover 任务生成的校验和文件作为输入,并通过签名脚本工作程序对其进行签名。返回相同的已签名文件以及其他分离签名。

beetmover-checksums

Beetmover 获取特定的工件校验和,并将其推送到 Taskcluster 任务工件外部的位置(例如 archive.mozilla.org),并在过程中确定最终位置并为其命名(版本产品名称)。

release-beetmover-source-checksums

Beetmover 获取特定于源的工件校验和,并将其推送到 Taskcluster 任务工件外部的位置(例如 archive.mozilla.org),并在过程中确定最终位置并为其命名(版本产品名称)。

perftest

使用 mozperftest 运行性能测试。

release-balrog-submit-toplevel

顶级任务负责将元数据提交到 Balrog,这些元数据不特定于任何特定平台+区域设置。例如:fileUrl 模板、版本和平台别名。

顶级任务还负责更新测试通道规则以指向正在生成的发行版。

release-secondary-balrog-submit-toplevel

执行与 release-balrog-submit-toplevel 相同的功能,但在 RC 构建期间针对 beta 通道执行。

release-balrog-scheduling

安排在 Balrog 中发布发行版。如果在开始发行版时提供了 release_eta,则它将被安排在当天和时间上线。

release-secondary-balrog-scheduling

执行与 release-balrog-scheduling 相同的功能,但作为 RC 发行版的一部分针对 beta 通道执行。

release-binary-transparency

二进制透明度创建了二进制 shas 的公开可验证日志,用于下游发行版审计。https://wiki.mozilla.org/Security/Binary_Transparency

release-flatpak-repackage

使用 Flathub 的 Flatpak 格式生成安装程序。

release-flatpak-push

将 Flatpak 重新打包推送到 Flathub。

release-secondary-flatpak-push

执行与 release-flatpak-push 相同的功能,但作为 RC 发行版的一部分针对 beta 通道执行。

release-notify-av-announce

在发行版可能发布时通知反病毒供应商。

release-notify-push

通知何时将发行版推送到 CDN。

release-notify-ship

通知何时已发布发行版。

release-secondary-notify-ship

通知何时已将 RC 发行版发布到 beta 通道。

release-notify-promote

通知何时已提升发行版。

release-notify-started

通知何时已开始发行版。

release-notify-testrail

在 TestRail 中为下一个 Fenix/Focus 发行版创建里程碑,并发送 Slack 通知。

release-bouncer-sub

提交发行版的 Bouncer 信息。

release-mark-as-shipped

在 Ship-It v1 中将发行版标记为已发布。

release-bouncer-aliases

更新 Bouncer (download.mozilla.org) 的“最新”别名。

cron-bouncer-check

检查 Bouncer (download.mozilla.org) 的采用情况。

bouncer-locations

更新 nightly 版本的 Bouncer 位置以进行版本升级。

release-bouncer-check

作为发行版任务的一部分,检查 Bouncer (download.mozilla.org) 的采用情况。

release-generate-checksums

生成每个发行版的校验和以及摘要。

release-generate-checksums-signing

对上述任务生成的预发行版校验和进行签名。

release-generate-checksums-beetmover

将 release-checksums 任务及其签名对应方生成的工件提交到 S3。

release-final-verify

验证发行版更新 MAR 的内容和包。

release-secondary-final-verify

验证 RC 发行版更新 MAR 的内容和包。

release-push-langpacks

将语言包发布到 addons.mozilla.org。

release-beetmover-signed-langpacks

将签名的语言包发布到 archive.mozilla.org。

release-beetmover-signed-langpacks-checksums

将签名的语言包发布到 archive.mozilla.org。

release-update-verify

验证发行版更新 MAR 的内容和包。release-secondary-update-verify ——————————- 验证发行版更新 MAR 的内容和包。

release-update-verify-next

验证来自上一个 ESR 发行版的发行版和更新 MAR 的内容和包。

release-update-verify-config

为 release-update-verify 任务创建配置。

release-secondary-update-verify-config

为 release-secondary-update-verify 任务创建配置。

release-update-verify-config-next

为 release-update-verify-next 任务创建配置。

release-updates-builder

顶级 Balrog Blob 提交和修补程序/更新验证配置更新。

release-version-bump

升级到下一个版本。

release-source

生成发行版的源代码。

release-source-signing

对发行版的源代码进行签名。

release-partner-repack

为合作伙伴生成发行版的自定义版本。

release-partner-attribution

为合作伙伴生成发行版的归属版本。

release-partner-repack-chunking-dummy

按区域设置对合作伙伴重新打包进行分块。

release-partner-repack-signing

合作伙伴重新打包的内部签名。

release-partner-repack-mac-signing

无需公证的 Mac 签名。

在 1 级环境中使用自签名证书。

可发布的下游任务应使用 build-mac-notarization 中的工件。

release-partner-repack-mac-notarization

在 signingscript(Linux)上使用 rcodesign 进行 Mac 公证。

仅在生产环境中可用,因为 Apple 未提供用于对应用进行公证的测试端点。

在下游任务中,在不可发布的构建或 1 级环境中切换到 build-mac-signing。

release-partner-repack-repackage

合作伙伴重新打包的重新打包。

release-partner-repack-repackage-signing

合作伙伴重新打包的外部签名。

release-partner-repack-beetmover

将合作伙伴重新打包移动到 S3 存储桶。

release-partner-attribution-beetmover

将合作伙伴归属移动到 S3 存储桶。

release-partner-repack-bouncer-sub

为合作伙伴设置 Bouncer 产品。

release-early-tagging

利用 treescript 执行应该在发行版开始时发生的标记。

release-eme-free-repack

为无 eme 重新打包生成发行版的自定义版本。

release-eme-free-repack-signing

无 eme 重新打包的内部签名。

release-eme-free-repack-repackage

无 eme 重新打包的重新打包。

release-eme-free-repack-repackage-signing

无 eme 重新打包的外部签名。

release-eme-free-repack-beetmover

将无 eme 重新打包移动到 S3 存储桶。

release-eme-free-repack-beetmover-checksums

将无 eme 重新打包的 beetmover 校验和移动到 S3 存储桶。

release-eme-free-repack-mac-signing

无需公证的 Mac 签名。

在 1 级环境中使用自签名证书。

可发布的下游任务应使用 build-mac-notarization 中的工件。

release-eme-free-repack-mac-notarization

在 signingscript(Linux)上使用 rcodesign 进行 Mac 公证。

仅在生产环境中可用,因为 Apple 未提供用于对应用进行公证的测试端点。

在下游任务中,在不可发布的构建或 1 级环境中切换到 build-mac-signing。

repackage

重新打包任务获取签名的输出,并将其打包成适合运送到我们用户的东西。例如,在 OSX 上,我们返回一个 tarball 作为签名的输出,此任务会将其打包为 Apple 磁盘映像 (.dmg)。

repackage-l10n

Repackage-L10n 是一个 `Repackage` 任务,已拆分以适合在 l10n 重新打包后使用。

repackage-deb

这些重新打包任务获取签名的 Firefox Linux 二进制文件,并将它们放入 Debian 包中。

repackage-deb-l10n

这些重新打包任务获取签名的语言包 (.xpi) 二进制文件,并将它们放入 Debian 包中。

repackage-signing

Repackage-signing 获取重新打包的安装程序(Windows)并对其进行签名。

repackage-signing-l10n

Repackage-signing-l10n 获取重新打包的安装程序(Windows)并为本地化版本对其进行签名。

mar-signing

Mar-signing 获取完整的更新 MAR 并对其进行签名。

mar-signing-l10n

Mar-signing-l10n 获取完整的更新 MAR 并为本地化版本对其进行签名。

mar-signing-autograph-stage

这些任务仅用于测试 autograph-stage,当 Autograph 团队要求测试其暂存环境时。

repackage-msi

Repackage-msi 获取签名的完整安装程序并生成 msi 安装程序(包装完整安装程序)使用 `./mach repackage` 命令。

repackage-signing-msi

Repackage-signing-msi 接收重新打包的 msi 安装程序并对其进行签名。

repackage-msix

Repackage-msix 接收一个(可能未签名的)软件包,并使用 `./mach repackage` 命令生成一个不包含语言包的 Windows MSIX 软件包。

这些任务旨在用于 `try` 中的快速迭代。

repackage-shippable-l10n-msix

Repackage-msix 接收一个已签名的软件包和一个已签名的语言包列表,并使用 `./mach repackage` 命令生成一个 Windows MSIX 软件包。

已签名的语言包是在 Linux 上生成的,因为语言包与平台无关。

这些任务用于发布;它们是完整的,因此速度较慢,并且不适用于 `try` 中的快速迭代。

repackage-signing-msix

Repackage-signing-msix 接收在 `repackage-msix` 中生成的 Windows MSIX 软件包并对其进行签名。

repackage-signing-shippable-l10n-msix

Repackage-signing-shippable-l10n-msix 接收在 `repackage-signing-shippable-l10n-msix` 中生成的 Windows MSIX 软件包并对其进行签名。

repackage-snap

将当前打包的构建重新打包为 Snap 软件包

release-msix-push

将 msix 重新打包推送到 Microsoft Store。

repo-update

Repo-Update 任务是一些对项目仓库本身执行某些操作的任务,以便以某种方式更新其状态。

partials

Partials 接收在先前任务中生成的 complete.mar 文件,并在先前每晚发布版本和新版本之间生成部分更新。需要参数中的 release_history。如果手动执行此操作,请参阅 mach release-history

partials-signing

Partials-signing 接收在 Partials 中生成的部分更新并对其进行签名。

post-balrog-dummy

虚拟任务,用于整合 balrog 依赖项,以避免 taskcluster 对每个任务的依赖项数量的限制。

post-beetmover-dummy

虚拟任务,用于整合 beetmover 依赖项,以避免 taskcluster 对每个任务的依赖项数量的限制。

post-beetmover-checksums-dummy

虚拟任务,用于整合 beetmover-checksums 依赖项,以避免 taskcluster 对每个任务的依赖项数量的限制。

post-beetmover-components-dummy

虚拟任务,用于整合 beetmover-components 依赖项,以避免 taskcluster 对每个任务的依赖项数量的限制。

post-langpack-dummy

虚拟任务,用于整合语言包 beetmover 依赖项,以避免 taskcluster 对每个任务的依赖项数量的限制。

post-update-verify-dummy

虚拟任务,用于整合更新验证依赖项,以避免 taskcluster 对每个任务的依赖项数量的限制。

fetch

从远程服务获取某些内容并将其作为任务工件重新公开的任务。这些任务用于有效地缓存和重新托管远程内容,以便可靠且确定性地访问。

packages

用于构建用于 Docker 镜像的软件包的任务。

diffoscope

使用 https://diffoscope.org/ 比较一对 Firefox 构建的任务。在撰写本文时,这主要用于 try 构建中,通过编辑 taskcluster/kinds/diffoscope/kind.yml 来满足您的需求。

addon

用于构建/打包附加组件的任务。

openh264-plugin

用于构建 openh264 插件的任务。

openh264-signing

openh264 插件的签名。

webrender

用于对 WebRender 独立版(无 gecko)进行测试的任务。WebRender 代码位于 gfx/wr 中,并拥有自己的测试基础设施。

instrumented-build

生成启用 PGO 检测的构建的任务。这是一个中间构建,可用于为最终 PGO 构建生成分析信息。这是完整的 3 步 PGO 流程的第一阶段。

generate-profile

接收配置为 PGO 的构建并针对样本集运行二进制文件以生成配置文件数据。这是完整的 3 步 PGO 流程的第二阶段。

geckodriver-signing

geckodriver 二进制文件的签名。

geckodriver-mac-notarization

Mac geckodriver 二进制文件的 Apple 公证。

maybe-release

一个 shipitscript 任务,执行以下操作:

  1. 检查是否禁用了自动发布。

  2. 检查当前修订版和先前发布版本修订版之间的更改是否被认为对新版本“有价值”。

  3. 通过 ship-it 触发发布,然后它将创建一个操作任务。

l10n-bump

由 cron 驱动的任务,使用 l10n 仪表板中的数据,在树内提升 l10n-changesets 文件。

merge-automation

由钩子驱动的任务,在发布周期中自动执行“合并日”任务。

sentry

与 Sentry 交互,例如通过发布新的项目版本。

system-symbols

从崩溃报告中生成缺少的 macOS 和 Windows 系统符号。

system-symbols-upload

将 macOS 和 Windows 系统符号上传到 tecken。

system-symbols-reprocess

调用 Crash-Stats API 在符号上传后重新处理。

scriptworker-canary

将任务推送到 try 以测试新的 scriptworker 部署。

updatebot

检查(受支持的)第三方库的更新,并管理其生命周期。

fuzzing

执行模糊测试冒烟测试

startup-test

运行 Firefox 短时间以查看它是否崩溃

l10n-cross-channel

从所有发布的发布列车中编译一组 en-US 字符串,并推送到隔离字符串仓库。

attribution

将归属信息注入 en-US 安装程序。

attribution-l10n

将归属信息注入本地化安装程序。

snap-upstream-build

使用上游工具执行 Firefox Snap 构建

snap-upstream-test

测试使用上游工具构建的 Firefox Snap

trigger-comm-central

在满足条件时触发 comm-central 上的 CI 决策任务。目前用于验证第三方 Rust 代码是否一致。

build-components

构建 android-components。

build-bundle

构建 Focus、Klar 和 Fenix android 应用包。

build-apk

构建 Focus、Klar 和 Fenix apks。

build-samples-browser

构建 android 示例浏览器。

signing

对 android-components 进行签名。

signing-bundle

对 Focus、Klar 和 Fenix android 应用包进行签名。

signing-apk

对 Focus、Klar 和 Fenix apks 进行签名。

test-components

测试 android-components

test-apk

测试 Focus、Klar 和 Fenix apks。

ui-test-apk

Focus、Klar 和 Fenix apks 的用户界面测试。

android-browsertime

android 的 Browsertime 测试。

android-startup-test

android 的启动测试。

post-signing-dummy

等待所有 android 签名任务的网关类型。

beetmover-components

android 组件的 beetmover 任务。

beetmover-android-app

android APK 和 AAB 的 beetmover 任务。

push-bundle

将 Focus 和 Fenix AAB 推送到 Google Play。

android-l10n

从 android-l10n 仓库更新 android 字符串资源。

release-update-product-channel-version

更新 Ship-It 中的产品渠道版本。

instrumented-build-apk

生成用于为 Android 应用生成基线配置文件的检测版 apks。

generate-baseline-profile-firebase

在 Firebase TestLab 上运行 Android 的基线配置文件生成。