Go Wiki: DashboardBuilders

LUCI Builders

Go 团队已将其测试流水线从自定义解决方案(协调器)迁移到 LUCILUCI 是由 Google Chrome 开源团队创建的开源持续集成系统。Go 团队采用 LUCI 是为了利用一个被更多开发者使用和支持的持续集成解决方案。这将使团队能够为社区提供功能更丰富的解决方案。

LUCI 系统要求构建器运行两个应用程序,它们会向 LUCI 进行身份验证并接收和处理构建。LUCI token daemon 生成进行身份验证所需的令牌。swarming bot 使用该令牌连接到 LUCI 并处理构建。

构建器要求

如何设置构建器

  1. 在 Go Issue Tracker 上 创建一个 issue,请求添加一个新的构建器并自行分配。

    1. issue 的标题应为格式:x/build: add LUCI <os-arch> builder
    2. 选择一个主机名并在 issue 正文中说明其值。主机名应遵循以下格式:<GOOS>-<GOOARCH>-<维护者的 GitHub handle>。如果名称有冲突,Go 团队可能会要求更改。
    3. 添加“new-builder”标签。(您可以在 issue 中发布评论 @gopherbot, please add label new-builder.,让 gopherbot 为您添加。)
  2. 使用 golang.org/x/build/cmd/genbotcert 生成证书签名请求(hostname.csr)和 TLS 私钥(hostname.key),并使用(预先选择的)主机名作为输入。为证书签名请求添加 .txt 扩展名(hostname.csr.txt)并将其附加到 GitHub issue。团队成员将把生成的证书(hostname.cert)附加到 GitHub issue。

    1. genbotcert -bot-hostname <hostname>
  3. Go 团队成员将在 LUCI 中定义您的新构建器。完成后将向 issue 添加评论。

  4. Machine Token Daemon 与 Token Server 通信,以生成和续订 LUCI 机器令牌。安装 go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend 并配置它通过 cron 每 10 分钟运行一次。私钥不应被 swarming 用户读取,因此 cron 作业应以单独的用户身份运行。

    1. luci_machine_tokend -backend luci-token-server.appspot.com -cert-pem <path-to-the-certificate> -pkey-pem <path-to-the-private-key> -token-file=/var/lib/luci_machine_tokend/token.json
    2. 如果 /var/lib 不是令牌的合适位置,请根据需要进行更改,并在调用下面的 bootstrapswarm 时将环境变量 LUCI_MACHINE_TOKEN 设置为文件路径。
  5. 安装 golang.org/x/build/cmd/bootstrapswarm 并将其配置为在您的操作系统进程管理器(systemd 等)下作为 swarming 用户无限循环运行。Bootstrapswarm 下载 swarming bot 的初始版本并确保其始终运行。

    1. bootstrapswarm -hostname <hostname>
  6. 在日志中验证 bot 是否在没有错误的情况下启动。

安全注意事项

通常,低容量构建器仅运行已审查并已提交的代码(post-submit 测试)。我们仅为 Go 团队运行且拥有大量可用硬件的构建器启用 pre-submit 测试。但是,Gomote 工具 可供 Go 团队和 Go 社区中的许多人使用,该工具允许他们对构建器进行任意访问,用于开发和调试。

出于安全考虑,您可能希望在无法访问任何内部资源的隔离网络中运行构建器。

Coordinator Builders (遗留)

本节介绍了 Go 项目在迁移到 LUCI 之前使用的自定义测试解决方案。

此处列出了构建配置(顶部)和主机配置(底部)

https://farmer.golang.org/builders

构建器运行在特定的主机类型上。(例如,linux-386-387 是一个构建类型。它运行在 host-linux-kubestd,一个基于 Kubernetes 的 linux/amd64 主机上)

它们来自文件 https://cs.opensource.google/go/x/build/+/master:dashboard/builders.go

有关协调器的设计详细信息,请参阅 https://go-lang.org.cn/s/builderplan

有关构建器机器、运行数量及其状态的信息,请访问 https://farmer.golang.org/


此内容是 Go Wiki 的一部分。