Revision control
Copy as Markdown
Other Tools
Task Kinds
==========
This section lists and documents the additional task kinds that are specific
to Thunderbird and are implemented in it's source tree.
balrog
------
Submits update information to Balrog for shippable builds after artifacts have
been promoted.
beetmover-checksums
-------------------
Publishes checksum files for promoted artifacts to the public release location
via Beetmover.
beetmover-repackage
-------------------
Publishes repackaged (and localized) installer artifacts and related files via
Beetmover for promoted builds.
beetmover-source
----------------
Publishes signed source archives via Beetmover for releases.
beetmover-strings-source
------------------------
Publishes strings source files via Beetmover to FTP.
bouncer-locations
-----------------
Updates Bouncer product locations (download endpoints) for Thunderbird
nightlies and releases during the shipping phase.
build
-----
Builds Thunderbird and generate relevant artifacts (installers, packages, test
archives, etc.).
build-mac-notarization
----------------------
Notarizes macOS build artifacts after they have been signed.
build-mac-signing
-----------------
Signs macOS build artifacts (PKG/DMG/TAR).
build-signing
-------------
Signs platform build artifacts for shippable builds (e.g. Windows installers).
code-review
-----------
Automation to support code review workflows (e.g. Phabricator/Lando hooks).
docker-image
------------
Builds Docker images used as worker environments by other kinds.
fetch
-----
Fetches and cache external resources (e.g. toolchains, source archives) that
are consumed by other tasks.
l10n
----
Schedules localization tasks and produce locale metadata consumed by downstream
l10n repackaging and update tasks.
l10n-bump
---------
Bumps Thunderbird localization changesets.
l10n-pre
--------
Prepares strings tarball used by shippable localization jobs.
mar-signing
-----------
Sign complete MAR (update) packages for promoted builds.
mar-signing-l10n
----------------
Sign localized MAR (update) packages for promoted builds.
merge-automation
----------------
Hook-driven tasks that automate "Merge Day" tasks (e.g. version bumps, branch
merges across comm-* branches, etc.).
packages
--------
Builds packages for use in docker images.
partials
--------
Takes the complete.mar files produced in previous tasks and generates
partial updates between previous nightly releases and the new one. Requires a
release_history in the parameters. See `mach release-history` if doing this
manually.
partials-signing
----------------
Signs partial update MARs produced by `partials`.
pin-verify
----------
Verifies that `gecko_rev.yml` is pinned to a Firefox tag on releases.
post-balrog-dummy
-----------------
Dummy task used after Balrog submissions to avoid `max_dependencies` limits.
post-beetmover-checksums-dummy
------------------------------
Dummy task used after Beetmover checksum publication to avoid
`max_dependencies` limits.
post-beetmover-dummy
--------------------
Dummy task used after Beetmover publication to avoid `max_dependencies`
limits.
release-balrog-scheduling
-------------------------
Schedules a Release for shipping in Balrog. If a `release_eta` was provided when
starting the Release, it will be scheduled to go live at that day and time.
release-balrog-submit-toplevel
------------------------------
Top-level Balrog submission wrapper used by the release promotion graph.
release-beetmover-push-to-release
---------------------------------
Moves artifacts from the candidates area to the releases directory on the CDN
via Beetmover.
release-beetmover-source-checksums
----------------------------------
Publishes checksums for source archives as part of release promotion.
release-bouncer-aliases
-----------------------
Updates Bouncer's (download.mozilla.org) "latest" aliases.
release-bouncer-check
---------------------
Validates that Bouncer products and locations are consistent for a release.
release-bouncer-sub
-------------------
Submits Bouncer product and location definitions required for a release.
release-early-tagging
---------------------
Creates early tags and related version markers used by the release process.
release-final-verify
--------------------
Verifies the contents and package of release update MARs.
release-flatpak-push
--------------------
Pushes Thunderbird Flatpak artifacts to Flathub.
release-flatpak-repackage
-------------------------
Repackages Thunderbird as both Flatpak bundle and Flatpak repo artifacts.
release-generate-checksums
--------------------------
Generates checksums for release artifacts.
release-generate-checksums-beetmover
------------------------------------
Publishes generated checksum files via Beetmover as part of release promotion.
release-generate-checksums-signing
----------------------------------
Signs checksum files generated for a release.
release-mark-as-shipped
-----------------------
Marks a release as shipped in Ship-It.
release-msix-push
-----------------
Pushes MSIX artifacts to the Microsoft Store.
release-notes-verify
--------------------
Verifies that the release notes for a given release have been published.
release-notify-av-announce
--------------------------
Notifies anti-virus vendors that a new Thunderbird release is available for
scanning.
release-notify-promote
----------------------
Sends “promote” phase notifications for a release.
release-notify-push
-------------------
Sends “push” phase notifications for a release.
release-notify-ship
-------------------
Sends “ship” phase notifications for a release.
release-notify-started
----------------------
Sends “started” notifications when a release promotion begins.
release-push-langpacks
----------------------
Publishes language packs (XPIs) to addons.thunderbird.net.
release-snap-repackage
----------------------
Repackages Thunderbird as Snap for testing purposes.
release-source
--------------
Creates source archives (tarballs) for a release.
release-source-checksums-signing
--------------------------------
Signs checksum files for source archives created during a release.
release-source-signing
----------------------
Signs source archives created during a release.
release-update-product-channel-version
-------------------------------------
Updates product, channel, and version metadata in Ship-It.
release-update-verify
---------------------
Verifies the contents and package of release update MARs.
release-update-verify-config
----------------------------
Creates configuration files used by `release-update-verify`.
release-update-verify-config-next
---------------------------------
Creates configuration files used by `release-update-verify-next`.
release-update-verify-next
--------------------------
Verifies the contents and package of release and updare MARs from the previous
ESR release.
release-version-bump
--------------------
Bumps version number and related metadata changes during the release process.
repackage
---------
Repackages build outputs into platform-specific installer formats (e.g. DMG,
MSI, tarballs).
repackage-deb
-------------
Repackages Thunderbird as a Debian package (.deb).
repackage-deb-l10n
------------------
Creates localized Debian packages (.deb) from `repackage-deb` .deb artifact.
repackage-l10n
--------------
Repackages localized builds for all locales using `l10n` artifacts.
repackage-msi
-------------
Repackages Thunderbird as a Windows MSI package.
repackage-msix
--------------
Repackages Thunderbird as a Windows MSIX package.
repackage-shippable-l10n-msix
-----------------------------
Creates localized Windows MSIX packages.
repackage-signing
-----------------
Signs repackaged (Windows) artifacts.
repackage-signing-l10n
----------------------
Signs localized repackaged (Windows) artifacts.
repackage-signing-msi
---------------------
Signs repackaged MSI artifacts.
repackage-signing-msix
----------------------
Signs repackaged MSIX artifacts.
repackage-signing-shippable-l10n-msix
-------------------------------------
Signs localized repackaged MSIX artifacts for shippable localized builds.
repo-update
-----------
Tasks that perform some action on the project repo itself in order to update its
state in some way.
searchfox
---------
Generates C++ index data for Searchfox.
shippable-l10n
--------------
Repacks a shippable build from the nightly l10n task, in order to provide
localized versions of the same source.
shippable-l10n-mac-notarization
-------------------------------
Mac notarization on signingscript (linux) using rcodesign.
Only available in production environments, as Apple doesn't offer a test
endpoint for notarizing apps.
Downstream tasks should use build-mac-signing in non-shippable builds or level 1
environments.
shippable-l10n-mac-signing
--------------------------
Signs localized macOS artifacts without notarization (using a self-signed
certificate on level 1 environments).
Shippable downstream tasks should use artifacts from build-mac-notarization.
shippable-l10n-pre
------------------
Prepares a build artifact containing the translated strings from all locales.
The artifact is consumed by `shippable-l10n` to produce the localized
Thunderbird builds.
Using
.....
- kind-dependencies:
Must include `build`
- transforms:
Must include `comm_taskgraph.transforms.l10n_pre:transforms`
- only-for-attributes:
Must include `shippable`
- only-for-build-platforms:
This is set to `linux64-shippable/opt` so that it only runs for that
platform. All platforms will consume the build artifact from
`linux64-shippable/opt`. (It's just string data; nothing platform-specific
in there.)
Parameters
..........
There are some task parameters specific to this task kind.
- locale-list:
Points to either `shipped-locales` or `all-locales`. This file is used to
select the locales that are included in the build artifact.
- comm-locales-file:
This file contains the revision of the `comm-l10n` monorepo to checkout.
- browser-locales-file:
This file contains the revisions of the `l10n-central` repositories to checkout.
This is for toolkit and other strings used from mozilla-central.
Other notes
...........
The mozharness script reads its configuration from `thunderbird_split_l10n.py`.
In that file, `hg_l10n_base` refers to the `l10n-central` repository root.
This is used with `browser-locales-file` to get the strings from toolkit and
devtools that are needed.
Also in the mozharness config file is `hg_comm_l10n_repo`, set to the URL of
the `comm-l10n` monorepo.
The mozharness script will clone the necessary repositories from `l10n-central`,
and `comm-l10n`, merge them, and create a tar file.
shippable-l10n-pre-signing
--------------------------
Signs artifacts from `shippable-l10n-pre`.
shippable-l10n-signing
----------------------
Takes artifacts from the shippable-l10n kind and passes them to signing servers
to have their contents signed appropriately, based on an appropriate signing
format. One signing job is created for each shippable-l10n job (usually
chunked).
source-docs
-----------
Triggers a build of the in-tree source documentation at
source-docs.thunderbird.net.
source-test
-----------
Runs source-level tests and analysis that do not require a full build. This can
include linting, unit tests, source-code analysis, or measurement work. While
source-test tasks run from a source checkout, it is still possible for them to
depend on a build artifact, though often they do not.
test
----
Runs Thunderbird test suites against build artifacts (e.g. xpcshell, mochitests,
etc.).
toolchain
---------
Builds toolchain artifacts (e.g. compilers, linkers, SDK pieces) used by the
CI graph.
upload-symbols
--------------
Uploads debug symbols to the symbol server for crash analysis.
upload-symbols-dummy
--------------------
Ensures macosx64 tasks run for nightlies and releases.