author Luca Greco <lgreco@mozilla.com>
Tue, 31 Jan 2023 14:36:54 +0000
changeset 651044 351f3b41f9fb703b1c23cd8f19135caafffffefb
parent 585148 f14a155aa970afa47446ebbe8144a8c0681b4e04
permissions -rw-r--r--
Bug 1811155 - Renew WebExtensions histograms telemetry probes expiring in 112. r=robwu Differential Revision: https://phabricator.services.mozilla.com/D168049

Version Control in CI

Upgrading Mercurial

Upgrading Mercurial in CI requires touching a handful of different

Vendored robustcheckout

The ``robustcheckout`` Mercurial extension is used throughout CI to
perform clones and working directory updates. The canonical home of
the extension is in the
https://hg.mozilla.org/hgcustom/version-control-tools repository
at the path ``hgext/robustcheckout/__init__.py``.

When upgrading Mercurial, the ``robustcheckout`` extension should also
be updated to ensure it is compatible with the version of Mercurial
being upgraded to. Typically, one simply copies the latest version
from ``version-control-tools`` into the vendored locations.

The locations are as follows:

- In-tree: ``testing/mozharness/external_tools/robustcheckout.py``
- Treescript: ``https://github.com/mozilla-releng/scriptworker-scripts/blob/master/treescript/treescript/py2/robustcheckout.py``
- build-puppet: ``https://github.com/mozilla-releng/build-puppet/blob/master/modules/mercurial/files/robustcheckout.py``
- ronin_puppet: ``https://github.com/mozilla-platform-ops/ronin_puppet/blob/master/modules/mercurial/files/robustcheckout.py``
- OpenCloudConfig: ``https://github.com/mozilla-releng/OpenCloudConfig/blob/master/userdata/Configuration/FirefoxBuildResources/robustcheckout.py``

Debian Packages for Debian and Ubuntu Based Docker Images

``taskcluster/ci/packages/debian.yml`` and ``taskcluster/ci/packages/ubuntu.yml``
define custom Debian packages for Mercurial. These are installed in various
Docker images.

To upgrade Mercurial, typically you just need to update the source URL
and its hash in this file.

Windows AMIs

https://github.com/mozilla-releng/OpenCloudConfig defines the Windows
environment for various Windows AMIs used by Taskcluster. Several of
the files reference a ``mercurial-x.y.z-*.msi`` installer. These references
will need to be updated to the Mercurial version being upgraded to.

The ``robustcheckout`` extension is also vendored into this repository
at ``userdata/Configuration/FirefoxBuildResources/robustcheckout.py``. It
should also be updated if needed.

Puppet Maintained Hosts

Some hosts (namely macOS machines) are managed by Puppet and Puppet is used
to install Mercurial.

Puppet code lives in the https://github.com/mozilla-releng/build-puppet repository.
Relevant files are in ``modules/mercurial/``,
and ``modules/packages/manifests/mozilla/py27_mercurial*``. A copy of
``robustcheckout`` is also vendored at

.. note::

   The steps to upgrade Mercurial in Puppet aren't currently captured here.
   Someone should capture those...