CI 中的版本控制

升级 Mercurial

在 CI 中升级 Mercurial 需要触及一些不同的组件。

供应商 robustcheckout

在整个 CI 中使用 robustcheckout Mercurial 扩展来执行克隆和工作目录更新。该扩展的规范位置在 https://hg.mozilla.org/hgcustom/version-control-tools 存储库中,路径为 hgext/robustcheckout/__init__.py

升级 Mercurial 时,还应更新 robustcheckout 扩展以确保它与要升级到的 Mercurial 版本兼容。通常,只需将最新版本从 version-control-tools 复制到供应商位置即可。

位置如下

  • 树内: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 和 Ubuntu 的 Docker 镜像的 Debian 软件包

taskcluster/kinds/packages/debian.ymltaskcluster/kinds/packages/ubuntu.yml 定义了 Mercurial 的自定义 Debian 软件包。这些安装在各种 Docker 镜像中。

要升级 Mercurial,通常您只需要更新此文件中的源 URL 及其哈希值即可。

Windows AMI

https://github.com/mozilla-releng/OpenCloudConfig 定义了 Taskcluster 使用的各种 Windows AMI 的 Windows 环境。一些文件引用了 mercurial-x.y.z-*.msi 安装程序。这些引用需要更新为要升级到的 Mercurial 版本。

userdata/Configuration/FirefoxBuildResources/robustcheckout.py 中,该存储库中还包含了 robustcheckout 扩展。如果需要,也应更新它。

Puppet 托管主机

一些主机(即 macOS 机器)由 Puppet 管理,并且使用 Puppet 安装 Mercurial。

Puppet 代码位于 https://github.com/mozilla-releng/build-puppet 存储库中。相关文件位于 modules/mercurial/modules/packages/manifests/mozilla/mozilla-python27-mercurial-debian/modules/packages/manifests/mozilla/py27_mercurial* 中。在 modules/mercurial/files/robustcheckout.py 中也包含了 robustcheckout 的副本。

注意

目前此处未捕获在 Puppet 中升级 Mercurial 的步骤。有人应该捕获这些步骤……