2019-11-05 基础设施团队会议

2019 年 11 月 6 日 · Pietro Albini 代表基础设施团队

会议由 shepmaster 主持。会议记录由 pietroalbini 撰写。
出席者:aidanhs, alexcrichton, kennytm, Mark-Simulacrum, pietroalbini, shepmaster
会议开始

移除 MSYS2 ca-certificates 临时解决方案 (P-high 问题)

几周前,由于一个损坏的 ca-certificates MSYS2 包导致我们的 CI 中断,所有 Windows 构建器都失败了。临时的修补方案是安装该包的一个 vendored(打包好随源代码一起发布的)副本,由于现在已不再需要,pietroalbini 本周提交了一个 PR,从我们的 CI 配置中移除了这个 hack。

该问题的另一部分是弄清楚是否将 MSYS2 和 MinGW 作为一个整体进行 vendoring,但这存在如何保持镜像更新的问题,我们目前对此没有清晰的解决方案。我们决定将该问题降级到 P-medium,并在 2020 年全体会议上讨论镜像和 vendoring。为该会议做准备,审计我们目前镜像的内容以及它们的旧程度会很有用,但这不紧急,目前没有人有时间来处理。

确定 Azure Pipelines 上的数据保留策略 (P-medium 问题)

这暂时还不是一个问题,因为当前的数据保留设置为 2 年。我们正在等待与微软的一些沟通确定下来,然后再重新讨论这个问题。

在慢速构建器上重新启用 LLVM/调试断言 (P-medium 问题)

我们仍然没有足够的时间预算来重新启用它们,但增加核心数应该能让我们做到这一点。

新的性能测试服务器

alexcrichton 从 Hetzner 订购了一台 AX41-NVMe 裸金属服务器,作为性能测试的基准测试机器替代品,由 Mozilla 支付。我们正在等待 Hetzner 提供访问权限,然后 simulacrum 才能进行试用和配置。如果几天内我们还没有收到访问权限,alexcrichton 会联系他们。

static.rust-lang.org 的生命周期策略

static.rust-lang.org 由一个 S3 存储桶提供支持,自 2016 年以来,该存储桶启用了版本控制,以防止意外删除文件的问题。但是,该存储桶中的一些文件每天都会被覆盖(例如 nightly 编译器),这会保留大量旧版本。这些旧版本没有用,因为无法轻松地从 CDN 获取它们,而且文件也在该存储桶的其他位置单独存储。大家都同意我们应该启用生命周期策略来删除这些无用的文件,并且我们达成共识,在三个月后删除它们。这对于最终用户来说不会被注意到,按日期安装旧的 nightly 版本仍然可以工作。

如何处理 rust-lang-ci S3 存储桶

rust-lang-ci 是一个非常旧且目前未使用的 S3 存储桶,在我们将其迁移到 rust-lang-ci2 之前,它用于存储 CI 工件。里面仍然有一些文件,因此我们启用了存储桶日志记录一个月,以查看那里的文件访问频率。

结果显示,一个月内总共有 86 个成功请求,分为

  • 69 个请求访问的是 1.14.0 版本的 cargo 构建
  • 17 个请求访问的是旧的 CI 镜像

由于流量较低,我们决定移除那些旧的 CI 镜像,但对于 cargo 构建,问题更复杂。由于当时 manifest 生成中的一个 bug,通过 rustup 安装 Rust 1.14.0 实际上是从这个存储桶而不是 CDN 下载 Cargo,移除这些文件将永久破坏 Rust 1.14.0 的安装。团队内部对此是否移除存在分歧,最终决定等待 pietroalbini 调查 S3 中配置重定向是否可行。

关于 pietroalbini 进行中的 ci-generate 分支的早期反馈

pietroalbini 正在一个分支上工作,该分支实现了一个用于生成我们 CI 配置的工具,它使用一个简化的自定义 DSL(分支 - 文档)。虽然这个生成器对我们有一些小的好处,但创建这个分支的主要驱动力是为了解决 GitHub Actions 配置语法的一些限制,即缺乏可导入的模板。没有足够的时间充分讨论这个问题,所以我们推迟到下周。

重新讨论会议主持轮换

一个月前我们开始轮换会议的主持人,打算今天重新讨论这个决定。团队对此感到中立或积极,所以我们将继续这样做一段时间。aidanhs 将主持下一次会议。