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.yml
和 taskcluster/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 的步骤。有人应该捕获这些步骤……